/* Generated by Cython 0.27.3 */

/* BEGIN: Cython Metadata
{
    "distutils": {
        "define_macros": [
            [
                "ONMAC",
                null
            ]
        ],
        "depends": [
            "/Users/woj/.mujoco/mjpro150/include/mjdata.h",
            "/Users/woj/.mujoco/mjpro150/include/mjmodel.h",
            "/Users/woj/.mujoco/mjpro150/include/mjrender.h",
            "/Users/woj/.mujoco/mjpro150/include/mjvisualize.h",
            "/Users/woj/.mujoco/mjpro150/include/mujoco.h",
            "/Users/woj/miniconda3/envs/py36/lib/python3.6/site-packages/numpy/core/include/numpy/arrayobject.h",
            "/Users/woj/miniconda3/envs/py36/lib/python3.6/site-packages/numpy/core/include/numpy/ufuncobject.h",
            "mujoco_py/gl/glshim.h"
        ],
        "extra_compile_args": [
            "-fopenmp",
            "-w"
        ],
        "extra_link_args": [
            "-fopenmp"
        ],
        "include_dirs": [
            "mujoco_py",
            "/Users/woj/projects/mujoco-py/mujoco_py",
            "/Users/woj/.mujoco/mjpro150/include",
            "/Users/woj/miniconda3/envs/py36/lib/python3.6/site-packages/numpy/core/include"
        ],
        "language": "c",
        "libraries": [
            "mujoco150",
            "glfw.3"
        ],
        "library_dirs": [
            "/Users/woj/.mujoco/mjpro150/bin"
        ],
        "name": "mujoco_py.cymj",
        "runtime_library_dirs": [
            "/Users/woj/.mujoco/mjpro150/bin"
        ],
        "sources": [
            "/Users/woj/projects/mujoco-py/mujoco_py/cymj.pyx",
            "/Users/woj/projects/mujoco-py/mujoco_py/gl/dummyshim.c"
        ]
    },
    "module_name": "mujoco_py.cymj"
}
END: Cython Metadata */

#define PY_SSIZE_T_CLEAN
#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
    #error Cython requires Python 2.6+ or Python 3.3+.
#else
#define CYTHON_ABI "0_27_3"
#define CYTHON_FUTURE_DIVISION 1
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
  #if PY_VERSION_HEX >= 0x02070000
    #define HAVE_LONG_LONG
  #endif
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#ifdef PYPY_VERSION
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
#elif defined(PYSTON_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_ASYNC_SLOTS
  #define CYTHON_USE_ASYNC_SLOTS 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYTYPE_LOOKUP
    #define CYTHON_USE_PYTYPE_LOOKUP 0
  #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
    #define CYTHON_USE_PYTYPE_LOOKUP 1
  #endif
  #if PY_MAJOR_VERSION < 3
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 0
  #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #if PY_VERSION_HEX < 0x030300F0
    #undef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #elif !defined(CYTHON_USE_UNICODE_WRITER)
    #define CYTHON_USE_UNICODE_WRITER 1
  #endif
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
  #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #include "longintrepr.h"
  #undef SHIFT
  #undef BASE
  #undef MASK
#endif
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
  #define Py_OptimizeFlag 0
#endif
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyClass_Type
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyType_Type
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
  #define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#if PY_VERSION_HEX < 0x030700A0 || !defined(METH_FASTCALL)
  #ifndef METH_FASTCALL
     #define METH_FASTCALL 0x80
  #endif
  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs);
  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject **args,
                                                          Py_ssize_t nargs, PyObject *kwnames);
#else
  #define __Pyx_PyCFunctionFast _PyCFunctionFast
  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
    ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x03060000
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#elif PY_VERSION_HEX >= 0x03000000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_Current
#endif
#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                              0 : _PyUnicode_Ready((PyObject *)(op)))
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
  #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
#else
  #define CYTHON_PEP393_ENABLED 0
  #define PyUnicode_1BYTE_KIND  1
  #define PyUnicode_2BYTE_KIND  2
  #define PyUnicode_4BYTE_KIND  4
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
  #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
  #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_PYSTON
  #define __Pyx_PyCode_HasFreeVars(co)  PyCode_HasFreeVars(co)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
#else
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
#endif
#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
#else
  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
  #define PyObject_ASCII(o)            PyObject_Repr(o)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
#endif
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define PyNumber_Int                 PyNumber_Long
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif
#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
  #ifndef PyUnicode_InternFromString
    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
  #endif
#endif
#if PY_VERSION_HEX < 0x030200A4
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
#else
  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
#endif
#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif
#ifndef __has_cpp_attribute
  #define __has_cpp_attribute(x) 0
#endif
#if CYTHON_USE_ASYNC_SLOTS
  #if PY_VERSION_HEX >= 0x030500B1
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
    #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
  #else
    #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
  #endif
#else
  #define __Pyx_PyType_AsAsync(obj) NULL
#endif
#ifndef __Pyx_PyAsyncMethodsStruct
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
    } __Pyx_PyAsyncMethodsStruct;
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
    #ifndef _MSC_STDINT_H_
        #if _MSC_VER < 1300
           typedef unsigned char     uint8_t;
           typedef unsigned int      uint32_t;
        #else
           typedef unsigned __int8   uint8_t;
           typedef unsigned __int32  uint32_t;
        #endif
    #endif
#else
   #include <stdint.h>
#endif
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus) && __cplusplus >= 201103L
    #if __has_cpp_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH [[fallthrough]]
    #elif __has_cpp_attribute(clang::fallthrough)
      #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
    #elif __has_cpp_attribute(gnu::fallthrough)
      #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
    #endif
  #endif
  #ifndef CYTHON_FALLTHROUGH
    #if __has_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
    #else
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
  #if defined(__clang__ ) && defined(__apple_build_version__)
    #if __apple_build_version__ < 7000000
      #undef  CYTHON_FALLTHROUGH
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
#endif

#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #elif defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_INLINE inline
  #else
    #define CYTHON_INLINE
  #endif
#endif

#if defined(WIN32) || defined(MS_WINDOWS)
  #define _USE_MATH_DEFINES
#endif
#include <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static CYTHON_INLINE float __PYX_NAN() {
  float value;
  memset(&value, 0xFF, sizeof(value));
  return value;
}
#endif
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif


#define __PYX_ERR(f_index, lineno, Ln_error) \
{ \
  __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
}

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#define __PYX_HAVE__mujoco_py__cymj
#define __PYX_HAVE_API__mujoco_py__cymj
#include <string.h>
#include <stdlib.h>
#include "mjmodel.h"
#include "mjdata.h"
#include "mjrender.h"
#include "mjvisualize.h"
#include "mujoco.h"
#include <stdint.h>
#include <stdio.h>
#include "numpy/arrayobject.h"
#include "numpy/ufuncobject.h"
#include "gl/glshim.h"
#include "pythread.h"
#include "pystate.h"
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
#define CYTHON_WITHOUT_ASSERTIONS
#endif

typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    (sizeof(type) < sizeof(Py_ssize_t))  ||\
    (sizeof(type) > sizeof(Py_ssize_t) &&\
          likely(v < (type)PY_SSIZE_T_MAX ||\
                 v == (type)PY_SSIZE_T_MAX)  &&\
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
                                v == (type)PY_SSIZE_T_MIN)))  ||\
    (sizeof(type) == sizeof(Py_ssize_t) &&\
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                               v == (type)PY_SSIZE_T_MAX)))  )
#if defined (__cplusplus) && __cplusplus >= 201103L
    #include <cstdlib>
    #define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER)
    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
    #define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if PY_MAJOR_VERSION < 3
    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyObject_AsWritableString(s)    ((char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
    const Py_UNICODE *u_end = u;
    while (*u_end++) ;
    return (size_t)(u_end - u - 1);
}
#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
#if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    PyObject* ascii_chars_u = NULL;
    PyObject* ascii_chars_b = NULL;
    const char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    if (strcmp(default_encoding_c, "ascii") == 0) {
        __Pyx_sys_getdefaultencoding_not_ascii = 0;
    } else {
        char ascii_chars[128];
        int c;
        for (c = 0; c < 128; c++) {
            ascii_chars[c] = c;
        }
        __Pyx_sys_getdefaultencoding_not_ascii = 1;
        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
        if (!ascii_chars_u) goto bad;
        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
            PyErr_Format(
                PyExc_ValueError,
                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
                default_encoding_c);
            goto bad;
        }
        Py_DECREF(ascii_chars_u);
        Py_DECREF(ascii_chars_b);
    }
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    Py_XDECREF(ascii_chars_u);
    Py_XDECREF(ascii_chars_b);
    return -1;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    return -1;
}
#endif
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }

static PyObject *__pyx_m = NULL;
static PyObject *__pyx_d;
static PyObject *__pyx_b;
static PyObject *__pyx_cython_runtime;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static PyObject *__pyx_empty_unicode;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;

/* Header.proto */
#if !defined(CYTHON_CCOMPLEX)
  #if defined(__cplusplus)
    #define CYTHON_CCOMPLEX 1
  #elif defined(_Complex_I)
    #define CYTHON_CCOMPLEX 1
  #else
    #define CYTHON_CCOMPLEX 0
  #endif
#endif
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    #include <complex>
  #else
    #include <complex.h>
  #endif
#endif
#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
  #undef _Complex_I
  #define _Complex_I 1.0fj
#endif


static const char *__pyx_f[] = {
  "mujoco_py/opengl_context.pyx",
  "mujoco_py/mjrendercontext.pyx",
  "mujoco_py/mjbatchrenderer.pyx",
  "mujoco_py/generated/wrappers.pxi",
  "stringsource",
  "mujoco_py/mjsim.pyx",
  "mujoco_py/mjsimstate.pyx",
  "mujoco_py/cymj.pyx",
  "__init__.pxd",
  "type.pxd",
};
/* BufferFormatStructs.proto */
#define IS_UNSIGNED(type) (((type) -1) > 0)
struct __Pyx_StructField_;
#define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0)
typedef struct {
  const char* name;
  struct __Pyx_StructField_* fields;
  size_t size;
  size_t arraysize[8];
  int ndim;
  char typegroup;
  char is_unsigned;
  int flags;
} __Pyx_TypeInfo;
typedef struct __Pyx_StructField_ {
  __Pyx_TypeInfo* type;
  const char* name;
  size_t offset;
} __Pyx_StructField;
typedef struct {
  __Pyx_StructField* field;
  size_t parent_offset;
} __Pyx_BufFmt_StackElem;
typedef struct {
  __Pyx_StructField root;
  __Pyx_BufFmt_StackElem* head;
  size_t fmt_offset;
  size_t new_count, enc_count;
  size_t struct_alignment;
  int is_complex;
  char enc_type;
  char new_packmode;
  char enc_packmode;
  char is_valid_array;
} __Pyx_BufFmt_Context;

/* MemviewSliceStruct.proto */
struct __pyx_memoryview_obj;
typedef struct {
  struct __pyx_memoryview_obj *memview;
  char *data;
  Py_ssize_t shape[8];
  Py_ssize_t strides[8];
  Py_ssize_t suboffsets[8];
} __Pyx_memviewslice;
#define __Pyx_MemoryView_Len(m)  (m.shape[0])

/* Atomics.proto */
#include <pythread.h>
#ifndef CYTHON_ATOMICS
    #define CYTHON_ATOMICS 1
#endif
#define __pyx_atomic_int_type int
#if CYTHON_ATOMICS && __GNUC__ >= 4 && (__GNUC_MINOR__ > 1 ||\
                    (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL >= 2)) &&\
                    !defined(__i386__)
    #define __pyx_atomic_incr_aligned(value, lock) __sync_fetch_and_add(value, 1)
    #define __pyx_atomic_decr_aligned(value, lock) __sync_fetch_and_sub(value, 1)
    #ifdef __PYX_DEBUG_ATOMICS
        #warning "Using GNU atomics"
    #endif
#elif CYTHON_ATOMICS && defined(_MSC_VER) && 0
    #include <Windows.h>
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type LONG
    #define __pyx_atomic_incr_aligned(value, lock) InterlockedIncrement(value)
    #define __pyx_atomic_decr_aligned(value, lock) InterlockedDecrement(value)
    #ifdef __PYX_DEBUG_ATOMICS
        #pragma message ("Using MSVC atomics")
    #endif
#elif CYTHON_ATOMICS && (defined(__ICC) || defined(__INTEL_COMPILER)) && 0
    #define __pyx_atomic_incr_aligned(value, lock) _InterlockedIncrement(value)
    #define __pyx_atomic_decr_aligned(value, lock) _InterlockedDecrement(value)
    #ifdef __PYX_DEBUG_ATOMICS
        #warning "Using Intel atomics"
    #endif
#else
    #undef CYTHON_ATOMICS
    #define CYTHON_ATOMICS 0
    #ifdef __PYX_DEBUG_ATOMICS
        #warning "Not using atomics"
    #endif
#endif
typedef volatile __pyx_atomic_int_type __pyx_atomic_int;
#if CYTHON_ATOMICS
    #define __pyx_add_acquisition_count(memview)\
             __pyx_atomic_incr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock)
    #define __pyx_sub_acquisition_count(memview)\
            __pyx_atomic_decr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock)
#else
    #define __pyx_add_acquisition_count(memview)\
            __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock)
    #define __pyx_sub_acquisition_count(memview)\
            __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock)
#endif

/* ForceInitThreads.proto */
#ifndef __PYX_FORCE_INIT_THREADS
  #define __PYX_FORCE_INIT_THREADS 0
#endif

/* NoFastGil.proto */
#define __Pyx_PyGILState_Ensure PyGILState_Ensure
#define __Pyx_PyGILState_Release PyGILState_Release
#define __Pyx_FastGIL_Remember()
#define __Pyx_FastGIL_Forget()
#define __Pyx_FastGilFuncInit()


/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":743
 * # in Cython to enable them only on the right systems.
 * 
 * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t
 */
typedef npy_int8 __pyx_t_5numpy_int8_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":744
 * 
 * ctypedef npy_int8       int8_t
 * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int32      int32_t
 * ctypedef npy_int64      int64_t
 */
typedef npy_int16 __pyx_t_5numpy_int16_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":745
 * ctypedef npy_int8       int8_t
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int64      int64_t
 * #ctypedef npy_int96      int96_t
 */
typedef npy_int32 __pyx_t_5numpy_int32_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":746
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t
 * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_int96      int96_t
 * #ctypedef npy_int128     int128_t
 */
typedef npy_int64 __pyx_t_5numpy_int64_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":750
 * #ctypedef npy_int128     int128_t
 * 
 * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t
 */
typedef npy_uint8 __pyx_t_5numpy_uint8_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":751
 * 
 * ctypedef npy_uint8      uint8_t
 * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint32     uint32_t
 * ctypedef npy_uint64     uint64_t
 */
typedef npy_uint16 __pyx_t_5numpy_uint16_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":752
 * ctypedef npy_uint8      uint8_t
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint64     uint64_t
 * #ctypedef npy_uint96     uint96_t
 */
typedef npy_uint32 __pyx_t_5numpy_uint32_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":753
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t
 * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_uint96     uint96_t
 * #ctypedef npy_uint128    uint128_t
 */
typedef npy_uint64 __pyx_t_5numpy_uint64_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":757
 * #ctypedef npy_uint128    uint128_t
 * 
 * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_float64    float64_t
 * #ctypedef npy_float80    float80_t
 */
typedef npy_float32 __pyx_t_5numpy_float32_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":758
 * 
 * ctypedef npy_float32    float32_t
 * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_float80    float80_t
 * #ctypedef npy_float128   float128_t
 */
typedef npy_float64 __pyx_t_5numpy_float64_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":767
 * # The int types are mapped a bit surprising --
 * # numpy.int corresponds to 'l' and numpy.long to 'q'
 * ctypedef npy_long       int_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longlong   long_t
 * ctypedef npy_longlong   longlong_t
 */
typedef npy_long __pyx_t_5numpy_int_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":768
 * # numpy.int corresponds to 'l' and numpy.long to 'q'
 * ctypedef npy_long       int_t
 * ctypedef npy_longlong   long_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longlong   longlong_t
 * 
 */
typedef npy_longlong __pyx_t_5numpy_long_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":769
 * ctypedef npy_long       int_t
 * ctypedef npy_longlong   long_t
 * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_ulong      uint_t
 */
typedef npy_longlong __pyx_t_5numpy_longlong_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":771
 * ctypedef npy_longlong   longlong_t
 * 
 * ctypedef npy_ulong      uint_t             # <<<<<<<<<<<<<<
 * ctypedef npy_ulonglong  ulong_t
 * ctypedef npy_ulonglong  ulonglong_t
 */
typedef npy_ulong __pyx_t_5numpy_uint_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":772
 * 
 * ctypedef npy_ulong      uint_t
 * ctypedef npy_ulonglong  ulong_t             # <<<<<<<<<<<<<<
 * ctypedef npy_ulonglong  ulonglong_t
 * 
 */
typedef npy_ulonglong __pyx_t_5numpy_ulong_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":773
 * ctypedef npy_ulong      uint_t
 * ctypedef npy_ulonglong  ulong_t
 * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_intp       intp_t
 */
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":775
 * ctypedef npy_ulonglong  ulonglong_t
 * 
 * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uintp      uintp_t
 * 
 */
typedef npy_intp __pyx_t_5numpy_intp_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776
 * 
 * ctypedef npy_intp       intp_t
 * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_double     float_t
 */
typedef npy_uintp __pyx_t_5numpy_uintp_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":778
 * ctypedef npy_uintp      uintp_t
 * 
 * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
 * ctypedef npy_double     double_t
 * ctypedef npy_longdouble longdouble_t
 */
typedef npy_double __pyx_t_5numpy_float_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779
 * 
 * ctypedef npy_double     float_t
 * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longdouble longdouble_t
 * 
 */
typedef npy_double __pyx_t_5numpy_double_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":780
 * ctypedef npy_double     float_t
 * ctypedef npy_double     double_t
 * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_cfloat      cfloat_t
 */
typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
/* Declarations.proto */
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    typedef ::std::complex< float > __pyx_t_float_complex;
  #else
    typedef float _Complex __pyx_t_float_complex;
  #endif
#else
    typedef struct { float real, imag; } __pyx_t_float_complex;
#endif
static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);

/* Declarations.proto */
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    typedef ::std::complex< double > __pyx_t_double_complex;
  #else
    typedef double _Complex __pyx_t_double_complex;
  #endif
#else
    typedef struct { double real, imag; } __pyx_t_double_complex;
#endif
static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);


/*--- Type declarations ---*/
struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS;
struct __pyx_obj_9mujoco_py_4cymj_PyMjOption;
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual;
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_;
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality;
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight;
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map;
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale;
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba;
struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic;
struct __pyx_obj_9mujoco_py_4cymj_PyMjModel;
struct __pyx_obj_9mujoco_py_4cymj_PyMjContact;
struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat;
struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat;
struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat;
struct __pyx_obj_9mujoco_py_4cymj_PyMjData;
struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb;
struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera;
struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera;
struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom;
struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight;
struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption;
struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene;
struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure;
struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect;
struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext;
struct __pyx_obj_9mujoco_py_4cymj_MjSim;
struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext;
struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names;
struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr;
struct __pyx_array_obj;
struct __pyx_MemviewEnum_obj;
struct __pyx_memoryview_obj;
struct __pyx_memoryviewslice_obj;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":782
 * ctypedef npy_longdouble longdouble_t
 * 
 * ctypedef npy_cfloat      cfloat_t             # <<<<<<<<<<<<<<
 * ctypedef npy_cdouble     cdouble_t
 * ctypedef npy_clongdouble clongdouble_t
 */
typedef npy_cfloat __pyx_t_5numpy_cfloat_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":783
 * 
 * ctypedef npy_cfloat      cfloat_t
 * ctypedef npy_cdouble     cdouble_t             # <<<<<<<<<<<<<<
 * ctypedef npy_clongdouble clongdouble_t
 * 
 */
typedef npy_cdouble __pyx_t_5numpy_cdouble_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":784
 * ctypedef npy_cfloat      cfloat_t
 * ctypedef npy_cdouble     cdouble_t
 * ctypedef npy_clongdouble clongdouble_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_cdouble     complex_t
 */
typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":786
 * ctypedef npy_clongdouble clongdouble_t
 * 
 * ctypedef npy_cdouble     complex_t             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew1(a):
 */
typedef npy_cdouble __pyx_t_5numpy_complex_t;
struct __pyx_t_9mujoco_py_4cymj_mjVisual_global_;
struct __pyx_t_9mujoco_py_4cymj_mjVisual_quality;
struct __pyx_t_9mujoco_py_4cymj_mjVisual_headlight;
struct __pyx_t_9mujoco_py_4cymj_mjVisual_map;
struct __pyx_t_9mujoco_py_4cymj_mjVisual_scale;
struct __pyx_t_9mujoco_py_4cymj_mjVisual_rgba;

/* "mujoco_py/pxd/mjmodel.pxd":1
 * cdef struct mjVisual_global_:   # global parameters             # <<<<<<<<<<<<<<
 *     float fovy                  # y-field of view (deg) for free camera
 *     float ipd                   # inter-pupilary distance for free camera
 */
struct __pyx_t_9mujoco_py_4cymj_mjVisual_global_ {
  float fovy;
  float ipd;
  float linewidth;
  float glow;
  int offwidth;
  int offheight;
};

/* "mujoco_py/pxd/mjmodel.pxd":9
 *     int offheight               # height of offscreen buffer
 * 
 * cdef struct mjVisual_quality:   # rendering quality             # <<<<<<<<<<<<<<
 *     int   shadowsize            # size of shadowmap texture
 *     int   offsamples            # number of multisamples for offscreen rendering
 */
struct __pyx_t_9mujoco_py_4cymj_mjVisual_quality {
  int shadowsize;
  int offsamples;
  int numslices;
  int numstacks;
  int numarrows;
  int numquads;
};

/* "mujoco_py/pxd/mjmodel.pxd":17
 *     int   numquads              # number of quads for box rendering
 * 
 * cdef struct mjVisual_headlight: # head light             # <<<<<<<<<<<<<<
 *     float ambient[3]            # ambient rgb (alpha=1)
 *     float diffuse[3]            # diffuse rgb (alpha=1)
 */
struct __pyx_t_9mujoco_py_4cymj_mjVisual_headlight {
  float ambient[3];
  float diffuse[3];
  float specular[3];
  int active;
};

/* "mujoco_py/pxd/mjmodel.pxd":23
 *     int   active                # is headlight active
 * 
 * cdef struct mjVisual_map:       # mapping             # <<<<<<<<<<<<<<
 *     float stiffness             # mouse perturbation stiffness (space->force)
 *     float stiffnessrot          # mouse perturbation stiffness (space->torque)
 */
struct __pyx_t_9mujoco_py_4cymj_mjVisual_map {
  float stiffness;
  float stiffnessrot;
  float force;
  float torque;
  float alpha;
  float fogstart;
  float fogend;
  float znear;
  float zfar;
  float shadowclip;
  float shadowscale;
};

/* "mujoco_py/pxd/mjmodel.pxd":36
 *     float shadowscale           # spot light: shadowscale * light.cutoff
 * 
 * cdef struct mjVisual_scale:     # scale of decor elements relative to mean body size             # <<<<<<<<<<<<<<
 *     float forcewidth            # width of force arrow
 *     float contactwidth          # contact width
 */
struct __pyx_t_9mujoco_py_4cymj_mjVisual_scale {
  float forcewidth;
  float contactwidth;
  float contactheight;
  float connect;
  float com;
  float camera;
  float light;
  float selectpoint;
  float jointlength;
  float jointwidth;
  float actuatorlength;
  float actuatorwidth;
  float framelength;
  float framewidth;
  float constraint;
  float slidercrank;
};

/* "mujoco_py/pxd/mjmodel.pxd":54
 *     float slidercrank           # slidercrank width
 * 
 * cdef struct mjVisual_rgba:      # color of decor elements             # <<<<<<<<<<<<<<
 *     float fog[4]                # external force
 *     float force[4]              # external force
 */
struct __pyx_t_9mujoco_py_4cymj_mjVisual_rgba {
  float fog[4];
  float force[4];
  float inertia[4];
  float joint[4];
  float actuator[4];
  float com[4];
  float camera[4];
  float light[4];
  float selectpoint[4];
  float connect[4];
  float contactpoint[4];
  float contactforce[4];
  float contactfriction[4];
  float contacttorque[4];
  float constraint[4];
  float slidercrank[4];
  float crankbroken[4];
};

/* "mujoco_py/pxd/mjdata.pxd":288
 * 
 * # generic MuJoCo function
 * ctypedef void (*mjfGeneric)(const mjModel* m, mjData* d)             # <<<<<<<<<<<<<<
 * 
 * # sensor simulation
 */
typedef void (*__pyx_t_9mujoco_py_4cymj_mjfGeneric)(mjModel const *, mjData *);

/* "mujoco_py/pxd/mjdata.pxd":291
 * 
 * # sensor simulation
 * ctypedef void (*mjfSensor)(const mjModel* m, mjData* d, int stage)             # <<<<<<<<<<<<<<
 * 
 * # timer
 */
typedef void (*__pyx_t_9mujoco_py_4cymj_mjfSensor)(mjModel const *, mjData *, int);

/* "mujoco_py/pxd/mjdata.pxd":294
 * 
 * # timer
 * ctypedef long long int (*mjfTime)();             # <<<<<<<<<<<<<<
 * 
 * # actuator dynamics, gain, bias
 */
typedef PY_LONG_LONG (*__pyx_t_9mujoco_py_4cymj_mjfTime)(void);

/* "mujoco_py/pxd/mjdata.pxd":297
 * 
 * # actuator dynamics, gain, bias
 * ctypedef mjtNum (*mjfAct)(const mjModel* m, const mjData* d, int id);             # <<<<<<<<<<<<<<
 * 
 * # solver impedance
 */
typedef mjtNum (*__pyx_t_9mujoco_py_4cymj_mjfAct)(mjModel const *, mjData const *, int);

/* "mujoco_py/pxd/mjdata.pxd":300
 * 
 * # solver impedance
 * ctypedef mjtNum (*mjfSolImp)(const mjModel* m, const mjData* d, int id,             # <<<<<<<<<<<<<<
 *                              mjtNum distance, mjtNum* constimp);
 * 
 */
typedef mjtNum (*__pyx_t_9mujoco_py_4cymj_mjfSolImp)(mjModel const *, mjData const *, int, mjtNum, mjtNum *);

/* "mujoco_py/pxd/mjdata.pxd":304
 * 
 * # solver reference
 * ctypedef void (*mjfSolRef)(const mjModel* m, const mjData* d, int id,             # <<<<<<<<<<<<<<
 *                            mjtNum constimp, mjtNum imp, int dim, mjtNum* ref);
 * 
 */
typedef void (*__pyx_t_9mujoco_py_4cymj_mjfSolRef)(mjModel const *, mjData const *, int, mjtNum, mjtNum, int, mjtNum *);

/* "mujoco_py/pxd/mjdata.pxd":308
 * 
 * # collision detection
 * ctypedef int (*mjfCollision)(const mjModel* m, const mjData* d,             # <<<<<<<<<<<<<<
 *                              mjContact* con, int g1, int g2, mjtNum margin);
 */
typedef int (*__pyx_t_9mujoco_py_4cymj_mjfCollision)(mjModel const *, mjData const *, mjContact *, int, int, mjtNum);

/* "mujoco_py/mjsim.pyx":8
 * _MjSim_render_lock = Lock()
 * 
 * ctypedef void (*substep_udd_t)(const mjModel* m, mjData* d)             # <<<<<<<<<<<<<<
 * 
 * 
 */
typedef void (*__pyx_t_9mujoco_py_4cymj_substep_udd_t)(mjModel const *, mjData *);

/* "mujoco_py/generated/wrappers.pxi":11
 * from tempfile import TemporaryDirectory
 * 
 * cdef class PyMjVFS(object):             # <<<<<<<<<<<<<<
 *     cdef mjVFS* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVFS *__pyx_vtab;
  mjVFS *ptr;
  PyArrayObject *_filesize;
};


/* "mujoco_py/generated/wrappers.pxi":48
 *     return o
 * 
 * cdef class PyMjOption(object):             # <<<<<<<<<<<<<<
 *     cdef mjOption* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjOption {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjOption *__pyx_vtab;
  mjOption *ptr;
  PyArrayObject *_gravity;
  PyArrayObject *_wind;
  PyArrayObject *_magnetic;
  PyArrayObject *_o_solref;
  PyArrayObject *_o_solimp;
};


/* "mujoco_py/generated/wrappers.pxi":176
 *     return o
 * 
 * cdef class PyMjVisual(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual *__pyx_vtab;
  mjVisual *ptr;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *_global_;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *_quality;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *_headlight;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *_map;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *_scale;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *_rgba;
};


/* "mujoco_py/generated/wrappers.pxi":224
 *     return o
 * 
 * cdef class PyMjVisual_global_(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_global_* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_vtab;
  struct __pyx_t_9mujoco_py_4cymj_mjVisual_global_ *ptr;
};


/* "mujoco_py/generated/wrappers.pxi":272
 *     return o
 * 
 * cdef class PyMjVisual_quality(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_quality* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_vtab;
  struct __pyx_t_9mujoco_py_4cymj_mjVisual_quality *ptr;
};


/* "mujoco_py/generated/wrappers.pxi":320
 *     return o
 * 
 * cdef class PyMjVisual_headlight(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_headlight* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_vtab;
  struct __pyx_t_9mujoco_py_4cymj_mjVisual_headlight *ptr;
  PyArrayObject *_ambient;
  PyArrayObject *_diffuse;
  PyArrayObject *_specular;
};


/* "mujoco_py/generated/wrappers.pxi":360
 *     return o
 * 
 * cdef class PyMjVisual_map(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_map* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_map *__pyx_vtab;
  struct __pyx_t_9mujoco_py_4cymj_mjVisual_map *ptr;
};


/* "mujoco_py/generated/wrappers.pxi":428
 *     return o
 * 
 * cdef class PyMjVisual_scale(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_scale* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_vtab;
  struct __pyx_t_9mujoco_py_4cymj_mjVisual_scale *ptr;
};


/* "mujoco_py/generated/wrappers.pxi":516
 *     return o
 * 
 * cdef class PyMjVisual_rgba(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_rgba* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_vtab;
  struct __pyx_t_9mujoco_py_4cymj_mjVisual_rgba *ptr;
  PyArrayObject *_fog;
  PyArrayObject *_force;
  PyArrayObject *_inertia;
  PyArrayObject *_joint;
  PyArrayObject *_actuator;
  PyArrayObject *_com;
  PyArrayObject *_camera;
  PyArrayObject *_light;
  PyArrayObject *_selectpoint;
  PyArrayObject *_connect;
  PyArrayObject *_contactpoint;
  PyArrayObject *_contactforce;
  PyArrayObject *_contactfriction;
  PyArrayObject *_contacttorque;
  PyArrayObject *_constraint;
  PyArrayObject *_slidercrank;
  PyArrayObject *_crankbroken;
};


/* "mujoco_py/generated/wrappers.pxi":608
 *     return o
 * 
 * cdef class PyMjStatistic(object):             # <<<<<<<<<<<<<<
 *     cdef mjStatistic* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjStatistic *__pyx_vtab;
  mjStatistic *ptr;
  PyArrayObject *_center;
};


/* "mujoco_py/generated/wrappers.pxi":652
 *     return o
 * 
 * cdef class PyMjModel(object):             # <<<<<<<<<<<<<<
 *     cdef mjModel* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjModel {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjModel *__pyx_vtab;
  mjModel *ptr;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *_opt;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *_vis;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *_stat;
  PyArrayObject *_qpos0;
  PyArrayObject *_qpos_spring;
  PyArrayObject *_body_parentid;
  PyArrayObject *_body_rootid;
  PyArrayObject *_body_weldid;
  PyArrayObject *_body_mocapid;
  PyArrayObject *_body_jntnum;
  PyArrayObject *_body_jntadr;
  PyArrayObject *_body_dofnum;
  PyArrayObject *_body_dofadr;
  PyArrayObject *_body_geomnum;
  PyArrayObject *_body_geomadr;
  PyArrayObject *_body_pos;
  PyArrayObject *_body_quat;
  PyArrayObject *_body_ipos;
  PyArrayObject *_body_iquat;
  PyArrayObject *_body_mass;
  PyArrayObject *_body_subtreemass;
  PyArrayObject *_body_inertia;
  PyArrayObject *_body_invweight0;
  PyArrayObject *_body_user;
  PyArrayObject *_jnt_type;
  PyArrayObject *_jnt_qposadr;
  PyArrayObject *_jnt_dofadr;
  PyArrayObject *_jnt_bodyid;
  PyArrayObject *_jnt_limited;
  PyArrayObject *_jnt_solref;
  PyArrayObject *_jnt_solimp;
  PyArrayObject *_jnt_pos;
  PyArrayObject *_jnt_axis;
  PyArrayObject *_jnt_stiffness;
  PyArrayObject *_jnt_range;
  PyArrayObject *_jnt_margin;
  PyArrayObject *_jnt_user;
  PyArrayObject *_dof_bodyid;
  PyArrayObject *_dof_jntid;
  PyArrayObject *_dof_parentid;
  PyArrayObject *_dof_Madr;
  PyArrayObject *_dof_solref;
  PyArrayObject *_dof_solimp;
  PyArrayObject *_dof_frictionloss;
  PyArrayObject *_dof_armature;
  PyArrayObject *_dof_damping;
  PyArrayObject *_dof_invweight0;
  PyArrayObject *_geom_type;
  PyArrayObject *_geom_contype;
  PyArrayObject *_geom_conaffinity;
  PyArrayObject *_geom_condim;
  PyArrayObject *_geom_bodyid;
  PyArrayObject *_geom_dataid;
  PyArrayObject *_geom_matid;
  PyArrayObject *_geom_group;
  PyArrayObject *_geom_solmix;
  PyArrayObject *_geom_solref;
  PyArrayObject *_geom_solimp;
  PyArrayObject *_geom_size;
  PyArrayObject *_geom_rbound;
  PyArrayObject *_geom_pos;
  PyArrayObject *_geom_quat;
  PyArrayObject *_geom_friction;
  PyArrayObject *_geom_margin;
  PyArrayObject *_geom_gap;
  PyArrayObject *_geom_user;
  PyArrayObject *_geom_rgba;
  PyArrayObject *_site_type;
  PyArrayObject *_site_bodyid;
  PyArrayObject *_site_matid;
  PyArrayObject *_site_group;
  PyArrayObject *_site_size;
  PyArrayObject *_site_pos;
  PyArrayObject *_site_quat;
  PyArrayObject *_site_user;
  PyArrayObject *_site_rgba;
  PyArrayObject *_cam_mode;
  PyArrayObject *_cam_bodyid;
  PyArrayObject *_cam_targetbodyid;
  PyArrayObject *_cam_pos;
  PyArrayObject *_cam_quat;
  PyArrayObject *_cam_poscom0;
  PyArrayObject *_cam_pos0;
  PyArrayObject *_cam_mat0;
  PyArrayObject *_cam_fovy;
  PyArrayObject *_cam_ipd;
  PyArrayObject *_cam_user;
  PyArrayObject *_light_mode;
  PyArrayObject *_light_bodyid;
  PyArrayObject *_light_targetbodyid;
  PyArrayObject *_light_directional;
  PyArrayObject *_light_castshadow;
  PyArrayObject *_light_active;
  PyArrayObject *_light_pos;
  PyArrayObject *_light_dir;
  PyArrayObject *_light_poscom0;
  PyArrayObject *_light_pos0;
  PyArrayObject *_light_dir0;
  PyArrayObject *_light_attenuation;
  PyArrayObject *_light_cutoff;
  PyArrayObject *_light_exponent;
  PyArrayObject *_light_ambient;
  PyArrayObject *_light_diffuse;
  PyArrayObject *_light_specular;
  PyArrayObject *_mesh_faceadr;
  PyArrayObject *_mesh_facenum;
  PyArrayObject *_mesh_vertadr;
  PyArrayObject *_mesh_vertnum;
  PyArrayObject *_mesh_graphadr;
  PyArrayObject *_mesh_vert;
  PyArrayObject *_mesh_normal;
  PyArrayObject *_mesh_face;
  PyArrayObject *_mesh_graph;
  PyArrayObject *_hfield_size;
  PyArrayObject *_hfield_nrow;
  PyArrayObject *_hfield_ncol;
  PyArrayObject *_hfield_adr;
  PyArrayObject *_hfield_data;
  PyArrayObject *_tex_type;
  PyArrayObject *_tex_height;
  PyArrayObject *_tex_width;
  PyArrayObject *_tex_adr;
  PyArrayObject *_tex_rgb;
  PyArrayObject *_mat_texid;
  PyArrayObject *_mat_texuniform;
  PyArrayObject *_mat_texrepeat;
  PyArrayObject *_mat_emission;
  PyArrayObject *_mat_specular;
  PyArrayObject *_mat_shininess;
  PyArrayObject *_mat_reflectance;
  PyArrayObject *_mat_rgba;
  PyArrayObject *_pair_dim;
  PyArrayObject *_pair_geom1;
  PyArrayObject *_pair_geom2;
  PyArrayObject *_pair_signature;
  PyArrayObject *_pair_solref;
  PyArrayObject *_pair_solimp;
  PyArrayObject *_pair_margin;
  PyArrayObject *_pair_gap;
  PyArrayObject *_pair_friction;
  PyArrayObject *_exclude_signature;
  PyArrayObject *_eq_type;
  PyArrayObject *_eq_obj1id;
  PyArrayObject *_eq_obj2id;
  PyArrayObject *_eq_active;
  PyArrayObject *_eq_solref;
  PyArrayObject *_eq_solimp;
  PyArrayObject *_eq_data;
  PyArrayObject *_tendon_adr;
  PyArrayObject *_tendon_num;
  PyArrayObject *_tendon_matid;
  PyArrayObject *_tendon_limited;
  PyArrayObject *_tendon_width;
  PyArrayObject *_tendon_solref_lim;
  PyArrayObject *_tendon_solimp_lim;
  PyArrayObject *_tendon_solref_fri;
  PyArrayObject *_tendon_solimp_fri;
  PyArrayObject *_tendon_range;
  PyArrayObject *_tendon_margin;
  PyArrayObject *_tendon_stiffness;
  PyArrayObject *_tendon_damping;
  PyArrayObject *_tendon_frictionloss;
  PyArrayObject *_tendon_lengthspring;
  PyArrayObject *_tendon_length0;
  PyArrayObject *_tendon_invweight0;
  PyArrayObject *_tendon_user;
  PyArrayObject *_tendon_rgba;
  PyArrayObject *_wrap_type;
  PyArrayObject *_wrap_objid;
  PyArrayObject *_wrap_prm;
  PyArrayObject *_actuator_trntype;
  PyArrayObject *_actuator_dyntype;
  PyArrayObject *_actuator_gaintype;
  PyArrayObject *_actuator_biastype;
  PyArrayObject *_actuator_trnid;
  PyArrayObject *_actuator_ctrllimited;
  PyArrayObject *_actuator_forcelimited;
  PyArrayObject *_actuator_dynprm;
  PyArrayObject *_actuator_gainprm;
  PyArrayObject *_actuator_biasprm;
  PyArrayObject *_actuator_ctrlrange;
  PyArrayObject *_actuator_forcerange;
  PyArrayObject *_actuator_gear;
  PyArrayObject *_actuator_cranklength;
  PyArrayObject *_actuator_invweight0;
  PyArrayObject *_actuator_length0;
  PyArrayObject *_actuator_lengthrange;
  PyArrayObject *_actuator_user;
  PyArrayObject *_sensor_type;
  PyArrayObject *_sensor_datatype;
  PyArrayObject *_sensor_needstage;
  PyArrayObject *_sensor_objtype;
  PyArrayObject *_sensor_objid;
  PyArrayObject *_sensor_dim;
  PyArrayObject *_sensor_adr;
  PyArrayObject *_sensor_cutoff;
  PyArrayObject *_sensor_noise;
  PyArrayObject *_sensor_user;
  PyArrayObject *_numeric_adr;
  PyArrayObject *_numeric_size;
  PyArrayObject *_numeric_data;
  PyArrayObject *_text_adr;
  PyArrayObject *_text_size;
  PyArrayObject *_text_data;
  PyArrayObject *_tuple_adr;
  PyArrayObject *_tuple_size;
  PyArrayObject *_tuple_objtype;
  PyArrayObject *_tuple_objid;
  PyArrayObject *_tuple_objprm;
  PyArrayObject *_key_time;
  PyArrayObject *_key_qpos;
  PyArrayObject *_key_qvel;
  PyArrayObject *_key_act;
  PyArrayObject *_name_bodyadr;
  PyArrayObject *_name_jntadr;
  PyArrayObject *_name_geomadr;
  PyArrayObject *_name_siteadr;
  PyArrayObject *_name_camadr;
  PyArrayObject *_name_lightadr;
  PyArrayObject *_name_meshadr;
  PyArrayObject *_name_hfieldadr;
  PyArrayObject *_name_texadr;
  PyArrayObject *_name_matadr;
  PyArrayObject *_name_eqadr;
  PyArrayObject *_name_tendonadr;
  PyArrayObject *_name_actuatoradr;
  PyArrayObject *_name_sensoradr;
  PyArrayObject *_name_numericadr;
  PyArrayObject *_name_textadr;
  PyArrayObject *_name_tupleadr;
  PyArrayObject *_names;
  PyObject *body_names;
  PyObject *joint_names;
  PyObject *geom_names;
  PyObject *site_names;
  PyObject *light_names;
  PyObject *camera_names;
  PyObject *actuator_names;
  PyObject *sensor_names;
  PyObject *_body_id2name;
  PyObject *_joint_id2name;
  PyObject *_geom_id2name;
  PyObject *_site_id2name;
  PyObject *_light_id2name;
  PyObject *_camera_id2name;
  PyObject *_actuator_id2name;
  PyObject *_sensor_id2name;
  PyObject *_body_name2id;
  PyObject *_joint_name2id;
  PyObject *_geom_name2id;
  PyObject *_site_name2id;
  PyObject *_light_name2id;
  PyObject *_camera_name2id;
  PyObject *_actuator_name2id;
  PyObject *_sensor_name2id;
  PyObject *userdata_names;
  PyObject *_userdata_id2name;
  PyObject *_userdata_name2id;
};


/* "mujoco_py/generated/wrappers.pxi":2005
 *     return o
 * 
 * cdef class PyMjContact(object):             # <<<<<<<<<<<<<<
 *     cdef mjContact* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjContact {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjContact *__pyx_vtab;
  mjContact *ptr;
  PyArrayObject *_pos;
  PyArrayObject *_frame;
  PyArrayObject *_friction;
  PyArrayObject *_solref;
  PyArrayObject *_solimp;
  PyArrayObject *_H;
};


/* "mujoco_py/generated/wrappers.pxi":2085
 *     return o
 * 
 * cdef class PyMjWarningStat(object):             # <<<<<<<<<<<<<<
 *     cdef mjWarningStat* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjWarningStat *__pyx_vtab;
  mjWarningStat *ptr;
};


/* "mujoco_py/generated/wrappers.pxi":2117
 *     return o
 * 
 * cdef class PyMjTimerStat(object):             # <<<<<<<<<<<<<<
 *     cdef mjTimerStat* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjTimerStat *__pyx_vtab;
  mjTimerStat *ptr;
};


/* "mujoco_py/generated/wrappers.pxi":2149
 *     return o
 * 
 * cdef class PyMjSolverStat(object):             # <<<<<<<<<<<<<<
 *     cdef mjSolverStat* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjSolverStat *__pyx_vtab;
  mjSolverStat *ptr;
};


/* "mujoco_py/generated/wrappers.pxi":2201
 *     return o
 * 
 * cdef class PyMjData(object):             # <<<<<<<<<<<<<<
 *     cdef mjData* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjData {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjData *__pyx_vtab;
  mjData *ptr;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *_model;
  PyArrayObject *_qpos;
  PyArrayObject *_qvel;
  PyArrayObject *_act;
  PyArrayObject *_ctrl;
  PyArrayObject *_qfrc_applied;
  PyArrayObject *_xfrc_applied;
  PyArrayObject *_qacc;
  PyArrayObject *_act_dot;
  PyArrayObject *_mocap_pos;
  PyArrayObject *_mocap_quat;
  PyArrayObject *_userdata;
  PyArrayObject *_sensordata;
  PyArrayObject *_xpos;
  PyArrayObject *_xquat;
  PyArrayObject *_xmat;
  PyArrayObject *_xipos;
  PyArrayObject *_ximat;
  PyArrayObject *_xanchor;
  PyArrayObject *_xaxis;
  PyArrayObject *_geom_xpos;
  PyArrayObject *_geom_xmat;
  PyArrayObject *_site_xpos;
  PyArrayObject *_site_xmat;
  PyArrayObject *_cam_xpos;
  PyArrayObject *_cam_xmat;
  PyArrayObject *_light_xpos;
  PyArrayObject *_light_xdir;
  PyArrayObject *_subtree_com;
  PyArrayObject *_cdof;
  PyArrayObject *_cinert;
  PyArrayObject *_ten_wrapadr;
  PyArrayObject *_ten_wrapnum;
  PyArrayObject *_ten_length;
  PyArrayObject *_ten_moment;
  PyArrayObject *_wrap_obj;
  PyArrayObject *_wrap_xpos;
  PyArrayObject *_actuator_length;
  PyArrayObject *_actuator_moment;
  PyArrayObject *_crb;
  PyArrayObject *_qM;
  PyArrayObject *_qLD;
  PyArrayObject *_qLDiagInv;
  PyArrayObject *_qLDiagSqrtInv;
  PyObject *_contact;
  PyArrayObject *_efc_type;
  PyArrayObject *_efc_id;
  PyArrayObject *_efc_J_rownnz;
  PyArrayObject *_efc_J_rowadr;
  PyArrayObject *_efc_J_colind;
  PyArrayObject *_efc_JT_rownnz;
  PyArrayObject *_efc_JT_rowadr;
  PyArrayObject *_efc_JT_colind;
  PyArrayObject *_efc_solref;
  PyArrayObject *_efc_solimp;
  PyArrayObject *_efc_margin;
  PyArrayObject *_efc_frictionloss;
  PyArrayObject *_efc_pos;
  PyArrayObject *_efc_J;
  PyArrayObject *_efc_JT;
  PyArrayObject *_efc_diagApprox;
  PyArrayObject *_efc_D;
  PyArrayObject *_efc_R;
  PyArrayObject *_efc_AR_rownnz;
  PyArrayObject *_efc_AR_rowadr;
  PyArrayObject *_efc_AR_colind;
  PyArrayObject *_efc_AR;
  PyArrayObject *_ten_velocity;
  PyArrayObject *_actuator_velocity;
  PyArrayObject *_cvel;
  PyArrayObject *_cdof_dot;
  PyArrayObject *_qfrc_bias;
  PyArrayObject *_qfrc_passive;
  PyArrayObject *_efc_vel;
  PyArrayObject *_efc_aref;
  PyArrayObject *_subtree_linvel;
  PyArrayObject *_subtree_angmom;
  PyArrayObject *_actuator_force;
  PyArrayObject *_qfrc_actuator;
  PyArrayObject *_qfrc_unc;
  PyArrayObject *_qacc_unc;
  PyArrayObject *_efc_b;
  PyArrayObject *_efc_force;
  PyArrayObject *_efc_state;
  PyArrayObject *_qfrc_constraint;
  PyArrayObject *_qacc_warmstart;
  PyArrayObject *_qfrc_inverse;
  PyArrayObject *_cacc;
  PyArrayObject *_cfrc_int;
  PyArrayObject *_cfrc_ext;
  PyObject *_warning;
  PyObject *_timer;
  PyObject *_solver;
  PyArrayObject *_solver_fwdinv;
  PyArrayObject *_energy;
};


/* "mujoco_py/generated/wrappers.pxi":3013
 *     return o
 * 
 * cdef class PyMjvPerturb(object):             # <<<<<<<<<<<<<<
 *     cdef mjvPerturb* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvPerturb *__pyx_vtab;
  mjvPerturb *ptr;
  PyArrayObject *_refpos;
  PyArrayObject *_refquat;
  PyArrayObject *_localpos;
};


/* "mujoco_py/generated/wrappers.pxi":3061
 *     return o
 * 
 * cdef class PyMjvCamera(object):             # <<<<<<<<<<<<<<
 *     cdef mjvCamera* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvCamera *__pyx_vtab;
  mjvCamera *ptr;
  PyArrayObject *_lookat;
};


/* "mujoco_py/generated/wrappers.pxi":3113
 *     return o
 * 
 * cdef class PyMjvGLCamera(object):             # <<<<<<<<<<<<<<
 *     cdef mjvGLCamera* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_vtab;
  mjvGLCamera *ptr;
  PyArrayObject *_pos;
  PyArrayObject *_forward;
  PyArrayObject *_up;
};


/* "mujoco_py/generated/wrappers.pxi":3169
 *     return o
 * 
 * cdef class PyMjvGeom(object):             # <<<<<<<<<<<<<<
 *     cdef mjvGeom* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGeom *__pyx_vtab;
  mjvGeom *ptr;
  PyArrayObject *_texrepeat;
  PyArrayObject *_size;
  PyArrayObject *_pos;
  PyArrayObject *_mat;
  PyArrayObject *_rgba;
  PyArrayObject *_label;
};


/* "mujoco_py/generated/wrappers.pxi":3273
 *     return o
 * 
 * cdef class PyMjvLight(object):             # <<<<<<<<<<<<<<
 *     cdef mjvLight* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvLight *__pyx_vtab;
  mjvLight *ptr;
  PyArrayObject *_pos;
  PyArrayObject *_dir;
  PyArrayObject *_attenuation;
  PyArrayObject *_ambient;
  PyArrayObject *_diffuse;
  PyArrayObject *_specular;
};


/* "mujoco_py/generated/wrappers.pxi":3341
 *     return o
 * 
 * cdef class PyMjvOption(object):             # <<<<<<<<<<<<<<
 *     cdef mjvOption* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvOption *__pyx_vtab;
  mjvOption *ptr;
  PyArrayObject *_geomgroup;
  PyArrayObject *_sitegroup;
  PyArrayObject *_flags;
};


/* "mujoco_py/generated/wrappers.pxi":3385
 *     return o
 * 
 * cdef class PyMjvScene(object):             # <<<<<<<<<<<<<<
 *     cdef mjvScene* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvScene *__pyx_vtab;
  mjvScene *ptr;
  PyObject *_lights;
  PyObject *_camera;
  PyArrayObject *_translate;
  PyArrayObject *_rotate;
  PyArrayObject *_flags;
};


/* "mujoco_py/generated/wrappers.pxi":3453
 *     return o
 * 
 * cdef class PyMjvFigure(object):             # <<<<<<<<<<<<<<
 *     cdef mjvFigure* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvFigure *__pyx_vtab;
  mjvFigure *ptr;
  PyArrayObject *_flg_ticklabel;
  PyArrayObject *_gridsize;
  PyArrayObject *_gridrgb;
  PyArrayObject *_figurergba;
  PyArrayObject *_legendrgba;
  PyArrayObject *_textrgb;
  PyArrayObject *_xlabel;
  PyArrayObject *_title;
  PyArrayObject *_xformat;
  PyArrayObject *_yformat;
  PyArrayObject *_minwidth;
  PyArrayObject *_linepnt;
  PyArrayObject *_linewidth;
};


/* "mujoco_py/generated/wrappers.pxi":3545
 *     return o
 * 
 * cdef class PyMjrRect(object):             # <<<<<<<<<<<<<<
 *     cdef mjrRect* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrRect *__pyx_vtab;
  mjrRect *ptr;
};


/* "mujoco_py/generated/wrappers.pxi":3590
 *     return o
 * 
 * cdef class PyMjrContext(object):             # <<<<<<<<<<<<<<
 *     cdef mjrContext* ptr
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrContext *__pyx_vtab;
  mjrContext *ptr;
  PyArrayObject *_textureType;
  PyArrayObject *_texture;
  PyArrayObject *_charWidth;
  PyArrayObject *_charWidthBig;
};


/* "mujoco_py/mjsim.pyx":11
 * 
 * 
 * cdef class MjSim(object):             # <<<<<<<<<<<<<<
 *     """MjSim represents a running simulation including its state.
 * 
 */
struct __pyx_obj_9mujoco_py_4cymj_MjSim {
  PyObject_HEAD
  struct __pyx_vtabstruct_9mujoco_py_4cymj_MjSim *__pyx_vtab;
  PyObject *render_contexts;
  PyObject *_render_context_window;
  PyObject *_render_context_offscreen;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *model;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *data;
  int nsubsteps;
  PyObject *udd_state;
  PyObject *_udd_callback;
  PyObject *extras;
  uintptr_t substep_callback_ptr;
  PyObject *render_callback;
};


/* "mujoco_py/mjrendercontext.pyx":4
 * from mujoco_py.generated import const
 * 
 * cdef class MjRenderContext(object):             # <<<<<<<<<<<<<<
 *     """
 *     Class that encapsulates rendering functionality for a
 */
struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext {
  PyObject_HEAD
  mjModel *_model_ptr;
  mjData *_data_ptr;
  mjvScene _scn;
  mjvCamera _cam;
  mjvOption _vopt;
  mjvPerturb _pert;
  mjrContext _con;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *scn;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *cam;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *vopt;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *pert;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *con;
  PyObject *opengl_context;
  int _visible;
  PyObject *_markers;
  PyObject *_overlay;
  int offscreen;
  PyObject *sim;
};


/* "mujoco_py/generated/wrappers.pxi":985
 *         return self._userdata_name2id[name]
 * 
 *     cdef inline tuple _extract_mj_names(self, mjModel* p, int*name_adr, int n, mjtObj obj_type):             # <<<<<<<<<<<<<<
 *         cdef char *name
 *         cdef int obj_id
 */
struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names {
  PyObject_HEAD
  PyObject *__pyx_v_id2name;
  PyObject *__pyx_v_name2id;
};


/* "mujoco_py/generated/wrappers.pxi":1002
 * 
 *         # sort names by increasing id to keep order deterministic
 *         return tuple(id2name[id] for id in sorted(name2id.values())), name2id, id2name             # <<<<<<<<<<<<<<
 * 
 *     def get_xml(self):
 */
struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr {
  PyObject_HEAD
  struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *__pyx_outer_scope;
  PyObject *__pyx_v_id;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
};


/* "View.MemoryView":103
 * 
 * @cname("__pyx_array")
 * cdef class array:             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */
struct __pyx_array_obj {
  PyObject_HEAD
  struct __pyx_vtabstruct_array *__pyx_vtab;
  char *data;
  Py_ssize_t len;
  char *format;
  int ndim;
  Py_ssize_t *_shape;
  Py_ssize_t *_strides;
  Py_ssize_t itemsize;
  PyObject *mode;
  PyObject *_format;
  void (*callback_free_data)(void *);
  int free_data;
  int dtype_is_object;
};


/* "View.MemoryView":277
 * 
 * @cname('__pyx_MemviewEnum')
 * cdef class Enum(object):             # <<<<<<<<<<<<<<
 *     cdef object name
 *     def __init__(self, name):
 */
struct __pyx_MemviewEnum_obj {
  PyObject_HEAD
  PyObject *name;
};


/* "View.MemoryView":328
 * 
 * @cname('__pyx_memoryview')
 * cdef class memoryview(object):             # <<<<<<<<<<<<<<
 * 
 *     cdef object obj
 */
struct __pyx_memoryview_obj {
  PyObject_HEAD
  struct __pyx_vtabstruct_memoryview *__pyx_vtab;
  PyObject *obj;
  PyObject *_size;
  PyObject *_array_interface;
  PyThread_type_lock lock;
  __pyx_atomic_int acquisition_count[2];
  __pyx_atomic_int *acquisition_count_aligned_p;
  Py_buffer view;
  int flags;
  int dtype_is_object;
  __Pyx_TypeInfo *typeinfo;
};


/* "View.MemoryView":953
 * 
 * @cname('__pyx_memoryviewslice')
 * cdef class _memoryviewslice(memoryview):             # <<<<<<<<<<<<<<
 *     "Internal class for passing memoryview slices to Python"
 * 
 */
struct __pyx_memoryviewslice_obj {
  struct __pyx_memoryview_obj __pyx_base;
  __Pyx_memviewslice from_slice;
  PyObject *from_object;
  PyObject *(*to_object_func)(char *);
  int (*to_dtype_func)(char *, PyObject *);
};



/* "mujoco_py/generated/wrappers.pxi":11
 * from tempfile import TemporaryDirectory
 * 
 * cdef class PyMjVFS(object):             # <<<<<<<<<<<<<<
 *     cdef mjVFS* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVFS {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *, mjVFS *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVFS *__pyx_vtabptr_9mujoco_py_4cymj_PyMjVFS;


/* "mujoco_py/generated/wrappers.pxi":48
 *     return o
 * 
 * cdef class PyMjOption(object):             # <<<<<<<<<<<<<<
 *     cdef mjOption* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjOption {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *, mjOption *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjOption *__pyx_vtabptr_9mujoco_py_4cymj_PyMjOption;


/* "mujoco_py/generated/wrappers.pxi":176
 *     return o
 * 
 * cdef class PyMjVisual(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *, mjVisual *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual *__pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual;


/* "mujoco_py/generated/wrappers.pxi":224
 *     return o
 * 
 * cdef class PyMjVisual_global_(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_global_* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_global_ {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_global_ *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_global_;


/* "mujoco_py/generated/wrappers.pxi":272
 *     return o
 * 
 * cdef class PyMjVisual_quality(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_quality* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_quality {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_quality *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_quality;


/* "mujoco_py/generated/wrappers.pxi":320
 *     return o
 * 
 * cdef class PyMjVisual_headlight(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_headlight* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_headlight {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_headlight *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_headlight;


/* "mujoco_py/generated/wrappers.pxi":360
 *     return o
 * 
 * cdef class PyMjVisual_map(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_map* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_map {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_map *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_map *__pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_map;


/* "mujoco_py/generated/wrappers.pxi":428
 *     return o
 * 
 * cdef class PyMjVisual_scale(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_scale* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_scale {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_scale *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_scale;


/* "mujoco_py/generated/wrappers.pxi":516
 *     return o
 * 
 * cdef class PyMjVisual_rgba(object):             # <<<<<<<<<<<<<<
 *     cdef mjVisual_rgba* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_rgba {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_rgba *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_rgba;


/* "mujoco_py/generated/wrappers.pxi":608
 *     return o
 * 
 * cdef class PyMjStatistic(object):             # <<<<<<<<<<<<<<
 *     cdef mjStatistic* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjStatistic {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *, mjStatistic *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjStatistic *__pyx_vtabptr_9mujoco_py_4cymj_PyMjStatistic;


/* "mujoco_py/generated/wrappers.pxi":652
 *     return o
 * 
 * cdef class PyMjModel(object):             # <<<<<<<<<<<<<<
 *     cdef mjModel* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjModel {
  PyObject *(*_extract_mj_names)(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *, mjModel *, int *, int, mjtObj);
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *, mjModel *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjModel *__pyx_vtabptr_9mujoco_py_4cymj_PyMjModel;
static CYTHON_INLINE PyObject *__pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *, mjModel *, int *, int, mjtObj);


/* "mujoco_py/generated/wrappers.pxi":2005
 *     return o
 * 
 * cdef class PyMjContact(object):             # <<<<<<<<<<<<<<
 *     cdef mjContact* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjContact {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *, mjContact *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjContact *__pyx_vtabptr_9mujoco_py_4cymj_PyMjContact;


/* "mujoco_py/generated/wrappers.pxi":2085
 *     return o
 * 
 * cdef class PyMjWarningStat(object):             # <<<<<<<<<<<<<<
 *     cdef mjWarningStat* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjWarningStat {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *, mjWarningStat *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjWarningStat *__pyx_vtabptr_9mujoco_py_4cymj_PyMjWarningStat;


/* "mujoco_py/generated/wrappers.pxi":2117
 *     return o
 * 
 * cdef class PyMjTimerStat(object):             # <<<<<<<<<<<<<<
 *     cdef mjTimerStat* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjTimerStat {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *, mjTimerStat *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjTimerStat *__pyx_vtabptr_9mujoco_py_4cymj_PyMjTimerStat;


/* "mujoco_py/generated/wrappers.pxi":2149
 *     return o
 * 
 * cdef class PyMjSolverStat(object):             # <<<<<<<<<<<<<<
 *     cdef mjSolverStat* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjSolverStat {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *, mjSolverStat *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjSolverStat *__pyx_vtabptr_9mujoco_py_4cymj_PyMjSolverStat;


/* "mujoco_py/generated/wrappers.pxi":2201
 *     return o
 * 
 * cdef class PyMjData(object):             # <<<<<<<<<<<<<<
 *     cdef mjData* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjData {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *, mjData *, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjData *__pyx_vtabptr_9mujoco_py_4cymj_PyMjData;


/* "mujoco_py/generated/wrappers.pxi":3013
 *     return o
 * 
 * cdef class PyMjvPerturb(object):             # <<<<<<<<<<<<<<
 *     cdef mjvPerturb* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvPerturb {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *, mjvPerturb *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvPerturb *__pyx_vtabptr_9mujoco_py_4cymj_PyMjvPerturb;


/* "mujoco_py/generated/wrappers.pxi":3061
 *     return o
 * 
 * cdef class PyMjvCamera(object):             # <<<<<<<<<<<<<<
 *     cdef mjvCamera* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvCamera {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *, mjvCamera *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvCamera *__pyx_vtabptr_9mujoco_py_4cymj_PyMjvCamera;


/* "mujoco_py/generated/wrappers.pxi":3113
 *     return o
 * 
 * cdef class PyMjvGLCamera(object):             # <<<<<<<<<<<<<<
 *     cdef mjvGLCamera* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGLCamera {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *, mjvGLCamera *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_vtabptr_9mujoco_py_4cymj_PyMjvGLCamera;


/* "mujoco_py/generated/wrappers.pxi":3169
 *     return o
 * 
 * cdef class PyMjvGeom(object):             # <<<<<<<<<<<<<<
 *     cdef mjvGeom* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGeom {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *, mjvGeom *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGeom *__pyx_vtabptr_9mujoco_py_4cymj_PyMjvGeom;


/* "mujoco_py/generated/wrappers.pxi":3273
 *     return o
 * 
 * cdef class PyMjvLight(object):             # <<<<<<<<<<<<<<
 *     cdef mjvLight* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvLight {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *, mjvLight *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvLight *__pyx_vtabptr_9mujoco_py_4cymj_PyMjvLight;


/* "mujoco_py/generated/wrappers.pxi":3341
 *     return o
 * 
 * cdef class PyMjvOption(object):             # <<<<<<<<<<<<<<
 *     cdef mjvOption* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvOption {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *, mjvOption *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvOption *__pyx_vtabptr_9mujoco_py_4cymj_PyMjvOption;


/* "mujoco_py/generated/wrappers.pxi":3385
 *     return o
 * 
 * cdef class PyMjvScene(object):             # <<<<<<<<<<<<<<
 *     cdef mjvScene* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvScene {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *, mjvScene *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvScene *__pyx_vtabptr_9mujoco_py_4cymj_PyMjvScene;


/* "mujoco_py/generated/wrappers.pxi":3453
 *     return o
 * 
 * cdef class PyMjvFigure(object):             # <<<<<<<<<<<<<<
 *     cdef mjvFigure* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvFigure {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *, mjvFigure *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvFigure *__pyx_vtabptr_9mujoco_py_4cymj_PyMjvFigure;


/* "mujoco_py/generated/wrappers.pxi":3545
 *     return o
 * 
 * cdef class PyMjrRect(object):             # <<<<<<<<<<<<<<
 *     cdef mjrRect* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrRect {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *, mjrRect *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrRect *__pyx_vtabptr_9mujoco_py_4cymj_PyMjrRect;


/* "mujoco_py/generated/wrappers.pxi":3590
 *     return o
 * 
 * cdef class PyMjrContext(object):             # <<<<<<<<<<<<<<
 *     cdef mjrContext* ptr
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrContext {
  void (*_set)(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *, mjrContext *);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrContext *__pyx_vtabptr_9mujoco_py_4cymj_PyMjrContext;


/* "mujoco_py/mjsim.pyx":11
 * 
 * 
 * cdef class MjSim(object):             # <<<<<<<<<<<<<<
 *     """MjSim represents a running simulation including its state.
 * 
 */

struct __pyx_vtabstruct_9mujoco_py_4cymj_MjSim {
  PyObject *(*substep_callback)(struct __pyx_obj_9mujoco_py_4cymj_MjSim *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_MjSim *__pyx_vtabptr_9mujoco_py_4cymj_MjSim;


/* "View.MemoryView":103
 * 
 * @cname("__pyx_array")
 * cdef class array:             # <<<<<<<<<<<<<<
 * 
 *     cdef:
 */

struct __pyx_vtabstruct_array {
  PyObject *(*get_memview)(struct __pyx_array_obj *);
};
static struct __pyx_vtabstruct_array *__pyx_vtabptr_array;


/* "View.MemoryView":328
 * 
 * @cname('__pyx_memoryview')
 * cdef class memoryview(object):             # <<<<<<<<<<<<<<
 * 
 *     cdef object obj
 */

struct __pyx_vtabstruct_memoryview {
  char *(*get_item_pointer)(struct __pyx_memoryview_obj *, PyObject *);
  PyObject *(*is_slice)(struct __pyx_memoryview_obj *, PyObject *);
  PyObject *(*setitem_slice_assignment)(struct __pyx_memoryview_obj *, PyObject *, PyObject *);
  PyObject *(*setitem_slice_assign_scalar)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *);
  PyObject *(*setitem_indexed)(struct __pyx_memoryview_obj *, PyObject *, PyObject *);
  PyObject *(*convert_item_to_object)(struct __pyx_memoryview_obj *, char *);
  PyObject *(*assign_item_from_object)(struct __pyx_memoryview_obj *, char *, PyObject *);
};
static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview;


/* "View.MemoryView":953
 * 
 * @cname('__pyx_memoryviewslice')
 * cdef class _memoryviewslice(memoryview):             # <<<<<<<<<<<<<<
 *     "Internal class for passing memoryview slices to Python"
 * 
 */

struct __pyx_vtabstruct__memoryviewslice {
  struct __pyx_vtabstruct_memoryview __pyx_base;
};
static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice;

/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          if (acquire_gil) {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
              PyGILState_Release(__pyx_gilstate_save);\
          } else {\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
#endif
  #define __Pyx_RefNannyFinishContext()\
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif
#define __Pyx_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_XDECREF(tmp);\
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_DECREF(tmp);\
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro))
        return tp->tp_getattro(obj, attr_name);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_getattr))
        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
#endif
    return PyObject_GetAttr(obj, attr_name);
}
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);

/* KeywordStringCheck.proto */
static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);

/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
#endif

/* PyErrFetchRestore.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
#else
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#endif
#else
#define __Pyx_PyErr_Clear() PyErr_Clear()
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* WriteUnraisableException.proto */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil);

/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* PyDictContains.proto */
static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
    int result = PyDict_Contains(dict, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred()) {
            PyObject* args = PyTuple_Pack(1, key);
            if (likely(args))
                PyErr_SetObject(PyExc_KeyError, args);
            Py_XDECREF(args);
        }
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#else
    #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#endif

/* None.proto */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);

/* py_dict_values.proto */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);

/* UnpackUnboundCMethod.proto */
typedef struct {
    PyObject *type;
    PyObject **method_name;
    PyCFunction func;
    PyObject *method;
    int flag;
} __Pyx_CachedCFunction;

/* CallUnboundCMethod0.proto */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CallUnboundCMethod0(cfunc, self)\
    ((likely((cfunc)->func)) ?\
        (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
         (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
             ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) :\
              (PY_VERSION_HEX >= 0x030600B1 && (cfunc)->flag == METH_FASTCALL ?\
                (PY_VERSION_HEX >= 0x030700A0 ?\
                    (*(__Pyx_PyCFunctionFast)(cfunc)->func)(self, &PyTuple_GET_ITEM(__pyx_empty_tuple, 0), 0) :\
                    (*(__Pyx_PyCFunctionFastWithKeywords)(cfunc)->func)(self, &PyTuple_GET_ITEM(__pyx_empty_tuple, 0), 0, NULL)) :\
              (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\
                    (*(__Pyx_PyCFunctionFastWithKeywords)(cfunc)->func)(self, &PyTuple_GET_ITEM(__pyx_empty_tuple, 0), 0, NULL) :\
                    __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\
        __Pyx__CallUnboundCMethod0(cfunc, self))
#else
#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
#endif

/* IncludeStringH.proto */
#include <string.h>

/* decode_c_string_utf16.proto */
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 0;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = -1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}

/* decode_c_string.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));

/* GetModuleGlobalName.proto */
static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);

/* PyCFunctionFastCall.proto */
#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
#else
#define __Pyx_PyCFunction_FastCall(func, args, nargs)  (assert(0), NULL)
#endif

/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs);
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
#endif

/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* PyObjectCallNoArg.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
#else
#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
#endif

/* PyObjectLookupSpecial.proto */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name) {
    PyObject *res;
    PyTypeObject *tp = Py_TYPE(obj);
#if PY_MAJOR_VERSION < 3
    if (unlikely(PyInstance_Check(obj)))
        return __Pyx_PyObject_GetAttrStr(obj, attr_name);
#endif
    res = _PyType_Lookup(tp, attr_name);
    if (likely(res)) {
        descrgetfunc f = Py_TYPE(res)->tp_descr_get;
        if (!f) {
            Py_INCREF(res);
        } else {
            res = f(res, obj, (PyObject *)tp);
        }
    } else {
        PyErr_SetObject(PyExc_AttributeError, attr_name);
    }
    return res;
}
#else
#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
#endif

/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
#else
#define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
#define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
#endif

/* GetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
#else
#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\
    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
#else
#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
    PyObject_RichCompare(op1, op2, Py_EQ)
    #endif

/* RaiseTooManyValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

/* RaiseNeedMoreValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

/* RaiseNoneIterError.proto */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

/* SliceObject.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
        int has_cstart, int has_cstop, int wraparound);

/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywords.proto */
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
    const char* function_name);

/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
    ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
        __Pyx__ArgTypeTest(obj, type, name, exact))
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);

/* IsLittleEndian.proto */
static CYTHON_INLINE int __Pyx_Is_Little_Endian(void);

/* BufferFormatCheck.proto */
static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts);
static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
                              __Pyx_BufFmt_StackElem* stack,
                              __Pyx_TypeInfo* type);

/* BufferGetAndValidate.proto */
#define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\
    ((obj == Py_None || obj == NULL) ?\
    (__Pyx_ZeroBuffer(buf), 0) :\
    __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack))
static int  __Pyx__GetBufferAndValidate(Py_buffer* buf, PyObject* obj,
    __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
static void __Pyx_ZeroBuffer(Py_buffer* buf);
static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 };
static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 };

/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);

/* BufferFallbackError.proto */
static void __Pyx_RaiseBufferFallbackError(void);

/* BufferIndexError.proto */
static void __Pyx_RaiseBufferIndexError(int axis);

#define __Pyx_BufPtrCContig1d(type, buf, i0, s0) ((type)buf + i0)
/* IterFinish.proto */
static CYTHON_INLINE int __Pyx_IterFinish(void);

/* UnpackItemEndCheck.proto */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);

/* SliceObject.proto */
#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\
    __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)
static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
        PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
        int has_cstart, int has_cstop, int wraparound);

/* ListCompAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len)) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        Py_SIZE(list) = len+1;
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
#endif

/* MemviewSliceInit.proto */
#define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d
#define __Pyx_MEMVIEW_DIRECT   1
#define __Pyx_MEMVIEW_PTR      2
#define __Pyx_MEMVIEW_FULL     4
#define __Pyx_MEMVIEW_CONTIG   8
#define __Pyx_MEMVIEW_STRIDED  16
#define __Pyx_MEMVIEW_FOLLOW   32
#define __Pyx_IS_C_CONTIG 1
#define __Pyx_IS_F_CONTIG 2
static int __Pyx_init_memviewslice(
                struct __pyx_memoryview_obj *memview,
                int ndim,
                __Pyx_memviewslice *memviewslice,
                int memview_is_new_reference);
static CYTHON_INLINE int __pyx_add_acquisition_count_locked(
    __pyx_atomic_int *acquisition_count, PyThread_type_lock lock);
static CYTHON_INLINE int __pyx_sub_acquisition_count_locked(
    __pyx_atomic_int *acquisition_count, PyThread_type_lock lock);
#define __pyx_get_slice_count_pointer(memview) (memview->acquisition_count_aligned_p)
#define __pyx_get_slice_count(memview) (*__pyx_get_slice_count_pointer(memview))
#define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__)
#define __PYX_XDEC_MEMVIEW(slice, have_gil) __Pyx_XDEC_MEMVIEW(slice, have_gil, __LINE__)
static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int);
static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *, int, int);

/* PyObjectSetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL)
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_setattro))
        return tp->tp_setattro(obj, attr_name, value);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_setattr))
        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
#endif
    return PyObject_SetAttr(obj, attr_name, value);
}
#else
#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif

/* GetAttr.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);

/* Globals.proto */
static PyObject* __Pyx_Globals(void);

/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
    int result = PySequence_Contains(seq, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_FloorDivideObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
#else
#define __Pyx_PyInt_FloorDivideObjC(op1, op2, intval, inplace)\
    (inplace ? PyNumber_InPlaceFloorDivide(op1, op2) : PyNumber_FloorDivide(op1, op2))
#endif

/* BytesEquals.proto */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);

/* UnicodeEquals.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);

/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);

/* ImportFrom.proto */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);

/* ListAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        Py_SIZE(list) = len+1;
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif

/* py_dict_keys.proto */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d);

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck);

/* FetchCommonType.proto */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);

/* CythonFunction.proto */
#define __Pyx_CyFunction_USED 1
#include <structmember.h>
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#define __Pyx_CyFunction_GetClassObj(f)\
    (((__pyx_CyFunctionObject *) (f))->func_classobj)
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
    PyCFunctionObject func;
#if PY_VERSION_HEX < 0x030500A0
    PyObject *func_weakreflist;
#endif
    PyObject *func_dict;
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
    PyObject *func_classobj;
    void *defaults;
    int defaults_pyobjects;
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
    __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *self,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
                                                         size_t size,
                                                         int pyobjects);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(void);

/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);

/* UnpackTupleError.proto */
static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);

/* UnpackTuple2.proto */
#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\
    (likely(is_tuple || PyTuple_Check(tuple)) ?\
        (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\
            __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\
            (__Pyx_UnpackTupleError(tuple, 2), -1)) :\
        __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple))
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
    PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);
static int __Pyx_unpack_tuple2_generic(
    PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);

/* dict_iter.proto */
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_is_dict);
static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);

/* ListExtend.proto */
static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject* none = _PyList_Extend((PyListObject*)L, v);
    if (unlikely(!none))
        return -1;
    Py_DECREF(none);
    return 0;
#else
    return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v);
#endif
}

/* SetItemInt.proto */
#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
               __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
                                               int is_list, int wraparound, int boundscheck);

/* HasAttr.proto */
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);

/* pop.proto */
static CYTHON_INLINE PyObject* __Pyx__PyObject_Pop(PyObject* L);
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE PyObject* __Pyx_PyList_Pop(PyObject* L);
#define __Pyx_PyObject_Pop(L) (likely(PyList_CheckExact(L)) ?\
    __Pyx_PyList_Pop(L) : __Pyx__PyObject_Pop(L))
#else
#define __Pyx_PyList_Pop(L)  __Pyx__PyObject_Pop(L)
#define __Pyx_PyObject_Pop(L)  __Pyx__PyObject_Pop(L)
#endif

/* PyErrExceptionMatches.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
#else
#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
#endif

/* unicode_tailmatch.proto */
static int __Pyx_PyUnicode_Tailmatch(
    PyObject* s, PyObject* substr, Py_ssize_t start, Py_ssize_t end, int direction);

/* None.proto */
static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);

/* StrEquals.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
#else
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#endif

/* None.proto */
static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t);

/* UnaryNegOverflows.proto */
#define UNARY_NEG_WOULD_OVERFLOW(x)\
        (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))

static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *); /*proto*/
/* GetAttr3.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);

/* SwapException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
#endif

static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
/* None.proto */
static CYTHON_INLINE long __Pyx_div_long(long, long);

/* StringJoin.proto */
#if PY_MAJOR_VERSION < 3
#define __Pyx_PyString_Join __Pyx_PyBytes_Join
#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v))
#else
#define __Pyx_PyString_Join PyUnicode_Join
#define __Pyx_PyBaseString_Join PyUnicode_Join
#endif
#if CYTHON_COMPILING_IN_CPYTHON
    #if PY_MAJOR_VERSION < 3
    #define __Pyx_PyBytes_Join _PyString_Join
    #else
    #define __Pyx_PyBytes_Join _PyBytes_Join
    #endif
#else
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values);
#endif

/* SetVTable.proto */
static int __Pyx_SetVtable(PyObject *dict, void *vtable);

/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);

/* CalculateMetaclass.proto */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);

/* Py3ClassCreate.proto */
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
                                           PyObject *mkw, PyObject *modname, PyObject *doc);
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
                                      PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);

/* CyFunctionClassCell.proto */
static int __Pyx_CyFunction_InitClassCell(PyObject *cyfunctions, PyObject *classobj);

/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#else
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#endif

/* CodeObjectCache.proto */
typedef struct {
    PyCodeObject* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
};
static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

#if PY_MAJOR_VERSION < 3
    static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
    static void __Pyx_ReleaseBuffer(Py_buffer *view);
#else
    #define __Pyx_GetBuffer PyObject_GetBuffer
    #define __Pyx_ReleaseBuffer PyBuffer_Release
#endif


/* BufferStructDeclare.proto */
typedef struct {
  Py_ssize_t shape, strides, suboffsets;
} __Pyx_Buf_DimInfo;
typedef struct {
  size_t refcount;
  Py_buffer pybuffer;
} __Pyx_Buffer;
typedef struct {
  __Pyx_Buffer *rcbuffer;
  char *data;
  __Pyx_Buf_DimInfo diminfo[8];
} __Pyx_LocalBuf_ND;

/* MemviewSliceIsContig.proto */
static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim);

/* OverlappingSlices.proto */
static int __pyx_slices_overlap(__Pyx_memviewslice *slice1,
                                __Pyx_memviewslice *slice2,
                                int ndim, size_t itemsize);

/* Capsule.proto */
static CYTHON_INLINE PyObject *__pyx_capsule_create(void *p, const char *sig);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_mjtJoint(mjtJoint value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_mjtByte(mjtByte value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_char(char value);

/* MemviewDtypeToObject.proto */
static CYTHON_INLINE PyObject *__pyx_memview_get_char(const char *itemp);
static CYTHON_INLINE int __pyx_memview_set_char(const char *itemp, PyObject *obj);

/* MemviewDtypeToObject.proto */
static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp);
static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *obj);

/* MemviewDtypeToObject.proto */
static CYTHON_INLINE PyObject *__pyx_memview_get_int(const char *itemp);
static CYTHON_INLINE int __pyx_memview_set_int(const char *itemp, PyObject *obj);

/* MemviewDtypeToObject.proto */
static CYTHON_INLINE PyObject *__pyx_memview_get_nn_mjtByte(const char *itemp);
static CYTHON_INLINE int __pyx_memview_set_nn_mjtByte(const char *itemp, PyObject *obj);

/* MemviewDtypeToObject.proto */
static CYTHON_INLINE PyObject *__pyx_memview_get_nn_mjtNum(const char *itemp);
static CYTHON_INLINE int __pyx_memview_set_nn_mjtNum(const char *itemp, PyObject *obj);

/* MemviewDtypeToObject.proto */
static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_int(const char *itemp);
static CYTHON_INLINE int __pyx_memview_set_unsigned_int(const char *itemp, PyObject *obj);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);

/* RealImag.proto */
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    #define __Pyx_CREAL(z) ((z).real())
    #define __Pyx_CIMAG(z) ((z).imag())
  #else
    #define __Pyx_CREAL(z) (__real__(z))
    #define __Pyx_CIMAG(z) (__imag__(z))
  #endif
#else
    #define __Pyx_CREAL(z) ((z).real)
    #define __Pyx_CIMAG(z) ((z).imag)
#endif
#if defined(__cplusplus) && CYTHON_CCOMPLEX\
        && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
    #define __Pyx_SET_CREAL(z,x) ((z).real(x))
    #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
#else
    #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
    #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
#endif

/* Arithmetic.proto */
#if CYTHON_CCOMPLEX
    #define __Pyx_c_eq_float(a, b)   ((a)==(b))
    #define __Pyx_c_sum_float(a, b)  ((a)+(b))
    #define __Pyx_c_diff_float(a, b) ((a)-(b))
    #define __Pyx_c_prod_float(a, b) ((a)*(b))
    #define __Pyx_c_quot_float(a, b) ((a)/(b))
    #define __Pyx_c_neg_float(a)     (-(a))
  #ifdef __cplusplus
    #define __Pyx_c_is_zero_float(z) ((z)==(float)0)
    #define __Pyx_c_conj_float(z)    (::std::conj(z))
    #if 1
        #define __Pyx_c_abs_float(z)     (::std::abs(z))
        #define __Pyx_c_pow_float(a, b)  (::std::pow(a, b))
    #endif
  #else
    #define __Pyx_c_is_zero_float(z) ((z)==0)
    #define __Pyx_c_conj_float(z)    (conjf(z))
    #if 1
        #define __Pyx_c_abs_float(z)     (cabsf(z))
        #define __Pyx_c_pow_float(a, b)  (cpowf(a, b))
    #endif
 #endif
#else
    static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex);
    static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex);
    #if 1
        static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex);
        static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex);
    #endif
#endif

/* Arithmetic.proto */
#if CYTHON_CCOMPLEX
    #define __Pyx_c_eq_double(a, b)   ((a)==(b))
    #define __Pyx_c_sum_double(a, b)  ((a)+(b))
    #define __Pyx_c_diff_double(a, b) ((a)-(b))
    #define __Pyx_c_prod_double(a, b) ((a)*(b))
    #define __Pyx_c_quot_double(a, b) ((a)/(b))
    #define __Pyx_c_neg_double(a)     (-(a))
  #ifdef __cplusplus
    #define __Pyx_c_is_zero_double(z) ((z)==(double)0)
    #define __Pyx_c_conj_double(z)    (::std::conj(z))
    #if 1
        #define __Pyx_c_abs_double(z)     (::std::abs(z))
        #define __Pyx_c_pow_double(a, b)  (::std::pow(a, b))
    #endif
  #else
    #define __Pyx_c_is_zero_double(z) ((z)==0)
    #define __Pyx_c_conj_double(z)    (conj(z))
    #if 1
        #define __Pyx_c_abs_double(z)     (cabs(z))
        #define __Pyx_c_pow_double(a, b)  (cpow(a, b))
    #endif
 #endif
#else
    static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex);
    static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex);
    #if 1
        static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex);
        static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex);
    #endif
#endif

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value);

/* MemviewSliceCopyTemplate.proto */
static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
                                 const char *mode, int ndim,
                                 size_t sizeof_dtype, int contig_flag,
                                 int dtype_is_object);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);

/* TypeInfoToFormat.proto */
struct __pyx_typeinfo_string {
    char string[3];
};
static struct __pyx_typeinfo_string __Pyx_TypeInfoToFormat(__Pyx_TypeInfo *type);

/* CIntFromPy.proto */
static CYTHON_INLINE mjtByte __Pyx_PyInt_As_mjtByte(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
#endif

/* PyObjectCallMethod1.proto */
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg);

/* CoroutineBase.proto */
typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *);
typedef struct {
    PyObject_HEAD
    __pyx_coroutine_body_t body;
    PyObject *closure;
    PyObject *exc_type;
    PyObject *exc_value;
    PyObject *exc_traceback;
    PyObject *gi_weakreflist;
    PyObject *classobj;
    PyObject *yieldfrom;
    PyObject *gi_name;
    PyObject *gi_qualname;
    PyObject *gi_modulename;
    int resume_label;
    char is_running;
} __pyx_CoroutineObject;
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
    PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *closure,
    PyObject *name, PyObject *qualname, PyObject *module_name);
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name);
static int __Pyx_Coroutine_clear(PyObject *self);
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
static PyObject *__Pyx_Coroutine_Close(PyObject *self);
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
#define __Pyx_Coroutine_SwapException(self) {\
    __Pyx_ExceptionSwap(&(self)->exc_type, &(self)->exc_value, &(self)->exc_traceback);\
    __Pyx_Coroutine_ResetFrameBackpointer(self);\
    }
#define __Pyx_Coroutine_ResetAndClearException(self) {\
    __Pyx_ExceptionReset((self)->exc_type, (self)->exc_value, (self)->exc_traceback);\
    (self)->exc_type = (self)->exc_value = (self)->exc_traceback = NULL;\
    }
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
#else
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
#endif
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self);

/* PatchModuleWithCoroutine.proto */
static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);

/* PatchGeneratorABC.proto */
static int __Pyx_patch_abc(void);

/* Generator.proto */
#define __Pyx_Generator_USED
static PyTypeObject *__pyx_GeneratorType = 0;
#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
#define __Pyx_Generator_New(body, closure, name, qualname, module_name)\
    __Pyx__Coroutine_New(__pyx_GeneratorType, body, closure, name, qualname, module_name)
static PyObject *__Pyx_Generator_Next(PyObject *self);
static int __pyx_Generator_init(void);

/* TypeInfoCompare.proto */
static int __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b);

/* MemviewSliceValidateAndInit.proto */
static int __Pyx_ValidateAndInit_memviewslice(
                int *axes_specs,
                int c_or_f_flag,
                int buf_flags,
                int ndim,
                __Pyx_TypeInfo *dtype,
                __Pyx_BufFmt_StackElem stack[],
                __Pyx_memviewslice *memviewslice,
                PyObject *original_obj);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_char(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_int(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_mjtByte(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_mjtNum(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_unsigned_int(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_char(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_int(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_mjtByte(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_mjtNum(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *);

/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_short(PyObject *);

/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);

/* PyIdentifierFromString.proto */
#if !defined(__Pyx_PyIdentifier_FromString)
#if PY_MAJOR_VERSION < 3
  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
#else
  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
#endif
#endif

/* ModuleImport.proto */
static PyObject *__Pyx_ImportModule(const char *name);

/* TypeImport.proto */
static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);

/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);

static void __pyx_f_9mujoco_py_4cymj_7PyMjVFS__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self, mjVFS *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_10PyMjOption__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjOption *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_10PyMjVisual__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self, mjVisual *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_18PyMjVisual_global___set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_global_ *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_18PyMjVisual_quality__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_quality *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_20PyMjVisual_headlight__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_headlight *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_14PyMjVisual_map__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_map *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_16PyMjVisual_scale__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_scale *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_15PyMjVisual_rgba__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_rgba *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_13PyMjStatistic__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjStatistic *__pyx_v_p); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, mjModel *__pyx_v_p, int *__pyx_v_name_adr, int __pyx_v_n, mjtObj __pyx_v_obj_type); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_9PyMjModel__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, mjModel *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_11PyMjContact__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, mjContact *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_15PyMjWarningStat__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self, mjWarningStat *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_13PyMjTimerStat__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self, mjTimerStat *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_14PyMjSolverStat__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, mjSolverStat *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_8PyMjData__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, mjData *__pyx_v_p, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_model); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_12PyMjvPerturb__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, mjvPerturb *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_11PyMjvCamera__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, mjvCamera *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_13PyMjvGLCamera__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, mjvGLCamera *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_9PyMjvGeom__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, mjvGeom *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_10PyMjvLight__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, mjvLight *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_11PyMjvOption__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self, mjvOption *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_10PyMjvScene__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, mjvScene *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_11PyMjvFigure__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, mjvFigure *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_9PyMjrRect__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, mjrRect *__pyx_v_p); /* proto*/
static void __pyx_f_9mujoco_py_4cymj_12PyMjrContext__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, mjrContext *__pyx_v_p); /* proto*/
static PyObject *__pyx_f_9mujoco_py_4cymj_5MjSim_substep_callback(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self); /* proto*/
static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto*/
static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj); /* proto*/
static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src); /* proto*/
static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value); /* proto*/
static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto*/
static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/
static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/
static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/
static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/

/* Module declarations from 'libc.string' */

/* Module declarations from 'libc.stdlib' */

/* Module declarations from 'cython.view' */
static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/

/* Module declarations from 'cython' */

/* Module declarations from 'libc.stdint' */

/* Module declarations from 'cpython.mem' */

/* Module declarations from 'cpython.buffer' */

/* Module declarations from 'libc.stdio' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.type' */
static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;

/* Module declarations from 'cpython' */

/* Module declarations from 'cpython.object' */

/* Module declarations from 'cpython.ref' */

/* Module declarations from 'numpy' */

/* Module declarations from 'numpy' */
static PyTypeObject *__pyx_ptype_5numpy_dtype = 0;
static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0;
static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0;
static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0;
static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/

/* Module declarations from 'mujoco_py.cymj' */
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjVFS = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjOption = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjVisual = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_global_ = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_quality = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_headlight = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_map = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_scale = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_rgba = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjStatistic = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjModel = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjContact = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjWarningStat = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjTimerStat = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjSolverStat = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjData = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjvCamera = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjvGLCamera = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjvGeom = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjvLight = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjvOption = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjvScene = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjvFigure = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjrRect = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_PyMjrContext = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_MjSim = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj_MjRenderContext = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names = 0;
static PyTypeObject *__pyx_ptype_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr = 0;
static PyTypeObject *__pyx_array_type = 0;
static PyTypeObject *__pyx_MemviewEnum_type = 0;
static PyTypeObject *__pyx_memoryview_type = 0;
static PyTypeObject *__pyx_memoryviewslice_type = 0;
static PyObject *__pyx_v_9mujoco_py_4cymj_py_warning_callback = 0;
static PyObject *__pyx_v_9mujoco_py_4cymj_py_warning_exception = 0;
static PyObject *generic = 0;
static PyObject *strided = 0;
static PyObject *indirect = 0;
static PyObject *contiguous = 0;
static PyObject *indirect_contiguous = 0;
static int __pyx_memoryview_thread_locks_used;
static PyThread_type_lock __pyx_memoryview_thread_locks[8];
static struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_f_9mujoco_py_4cymj_WrapMjOption(mjOption *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_f_9mujoco_py_4cymj_WrapMjVisual(mjVisual *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_global_(struct __pyx_t_9mujoco_py_4cymj_mjVisual_global_ *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_quality(struct __pyx_t_9mujoco_py_4cymj_mjVisual_quality *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_headlight(struct __pyx_t_9mujoco_py_4cymj_mjVisual_headlight *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_map(struct __pyx_t_9mujoco_py_4cymj_mjVisual_map *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_scale(struct __pyx_t_9mujoco_py_4cymj_mjVisual_scale *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_rgba(struct __pyx_t_9mujoco_py_4cymj_mjVisual_rgba *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_f_9mujoco_py_4cymj_WrapMjStatistic(mjStatistic *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_f_9mujoco_py_4cymj_WrapMjModel(mjModel *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_f_9mujoco_py_4cymj_WrapMjContact(mjContact *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_f_9mujoco_py_4cymj_WrapMjWarningStat(mjWarningStat *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_f_9mujoco_py_4cymj_WrapMjTimerStat(mjTimerStat *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_f_9mujoco_py_4cymj_WrapMjSolverStat(mjSolverStat *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_f_9mujoco_py_4cymj_WrapMjData(mjData *, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_f_9mujoco_py_4cymj_WrapMjvPerturb(mjvPerturb *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_f_9mujoco_py_4cymj_WrapMjvCamera(mjvCamera *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_f_9mujoco_py_4cymj_WrapMjvGLCamera(mjvGLCamera *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_f_9mujoco_py_4cymj_WrapMjvGeom(mjvGeom *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_f_9mujoco_py_4cymj_WrapMjvLight(mjvLight *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_f_9mujoco_py_4cymj_WrapMjvOption(mjvOption *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_f_9mujoco_py_4cymj_WrapMjvScene(mjvScene *); /*proto*/
static struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_f_9mujoco_py_4cymj_WrapMjrContext(mjrContext *); /*proto*/
static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_char_1d(char *, int); /*proto*/
static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_float_1d(float *, int); /*proto*/
static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_int_1d(int *, int); /*proto*/
static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(mjtByte *, int); /*proto*/
static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(mjtNum *, int); /*proto*/
static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_unsigned_int_1d(unsigned int *, int); /*proto*/
static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_float_2d(float *, int, int); /*proto*/
static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_int_2d(int *, int, int); /*proto*/
static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(mjtNum *, int, int); /*proto*/
static void __pyx_f_9mujoco_py_4cymj_c_warning_callback(char const *); /*proto*/
static int __Pyx_carray_from_py_float(PyObject *, float *, Py_ssize_t); /*proto*/
static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/
static void *__pyx_align_pointer(void *, size_t); /*proto*/
static PyObject *__pyx_memoryview_new(PyObject *, int, int, __Pyx_TypeInfo *); /*proto*/
static CYTHON_INLINE int __pyx_memoryview_check(PyObject *); /*proto*/
static PyObject *_unellipsify(PyObject *, int); /*proto*/
static PyObject *assert_direct_dimensions(Py_ssize_t *, int); /*proto*/
static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *, PyObject *); /*proto*/
static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int, int); /*proto*/
static char *__pyx_pybuffer_index(Py_buffer *, char *, Py_ssize_t, Py_ssize_t); /*proto*/
static int __pyx_memslice_transpose(__Pyx_memviewslice *); /*proto*/
static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice, int, PyObject *(*)(char *), int (*)(char *, PyObject *), int); /*proto*/
static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/
static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/
static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *); /*proto*/
static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/
static Py_ssize_t abs_py_ssize_t(Py_ssize_t); /*proto*/
static char __pyx_get_best_slice_order(__Pyx_memviewslice *, int); /*proto*/
static void _copy_strided_to_strided(char *, Py_ssize_t *, char *, Py_ssize_t *, Py_ssize_t *, Py_ssize_t *, int, size_t); /*proto*/
static void copy_strided_to_strided(__Pyx_memviewslice *, __Pyx_memviewslice *, int, size_t); /*proto*/
static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *, int); /*proto*/
static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *, Py_ssize_t *, Py_ssize_t, int, char); /*proto*/
static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *, __Pyx_memviewslice *, char, int); /*proto*/
static int __pyx_memoryview_err_extents(int, Py_ssize_t, Py_ssize_t); /*proto*/
static int __pyx_memoryview_err_dim(PyObject *, char *, int); /*proto*/
static int __pyx_memoryview_err(PyObject *, char *); /*proto*/
static int __pyx_memoryview_copy_contents(__Pyx_memviewslice, __Pyx_memviewslice, int, int, int); /*proto*/
static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *, int, int); /*proto*/
static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *, int, int, int); /*proto*/
static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/
static void __pyx_memoryview_refcount_objects_in_slice(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/
static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *, int, size_t, void *, int); /*proto*/
static void __pyx_memoryview__slice_assign_scalar(char *, Py_ssize_t *, Py_ssize_t *, int, size_t, void *); /*proto*/
static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *, PyObject *); /*proto*/
static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *); /*proto*/
static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), { 0 }, 0, 'R', 0, 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_char = { "char", NULL, sizeof(char), { 0 }, 0, 'H', IS_UNSIGNED(char), 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_float = { "float", NULL, sizeof(float), { 0 }, 0, 'R', 0, 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_int = { "int", NULL, sizeof(int), { 0 }, 0, IS_UNSIGNED(int) ? 'U' : 'I', IS_UNSIGNED(int), 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_nn_mjtByte = { "mjtByte", NULL, sizeof(mjtByte), { 0 }, 0, IS_UNSIGNED(mjtByte) ? 'U' : 'I', IS_UNSIGNED(mjtByte), 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_nn_mjtNum = { "mjtNum", NULL, sizeof(mjtNum), { 0 }, 0, 'R', 0, 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_unsigned_int = { "unsigned int", NULL, sizeof(unsigned int), { 0 }, 0, IS_UNSIGNED(unsigned int) ? 'U' : 'I', IS_UNSIGNED(unsigned int), 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t = { "float64_t", NULL, sizeof(__pyx_t_5numpy_float64_t), { 0 }, 0, 'R', 0, 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t = { "uint8_t", NULL, sizeof(__pyx_t_5numpy_uint8_t), { 0 }, 0, IS_UNSIGNED(__pyx_t_5numpy_uint8_t) ? 'U' : 'I', IS_UNSIGNED(__pyx_t_5numpy_uint8_t), 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_unsigned_char = { "unsigned char", NULL, sizeof(unsigned char), { 0 }, 0, IS_UNSIGNED(unsigned char) ? 'U' : 'I', IS_UNSIGNED(unsigned char), 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_unsigned_short = { "unsigned short", NULL, sizeof(unsigned short), { 0 }, 0, IS_UNSIGNED(unsigned short) ? 'U' : 'I', IS_UNSIGNED(unsigned short), 0 };
#define __Pyx_MODULE_NAME "mujoco_py.cymj"
extern int __pyx_module_is_main_mujoco_py__cymj;
int __pyx_module_is_main_mujoco_py__cymj = 0;

/* Implementation of 'mujoco_py.cymj' */
static PyObject *__pyx_builtin_ImportError;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_staticmethod;
static PyObject *__pyx_builtin_property;
static PyObject *__pyx_builtin_object;
static PyObject *__pyx_builtin_MemoryError;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_open;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_NotImplementedError;
static PyObject *__pyx_builtin_print;
static PyObject *__pyx_builtin_map;
static PyObject *__pyx_builtin_NotImplemented;
static PyObject *__pyx_builtin_super;
static PyObject *__pyx_builtin_OverflowError;
static PyObject *__pyx_builtin_IndexError;
static PyObject *__pyx_builtin_Ellipsis;
static PyObject *__pyx_builtin_id;
static const char __pyx_k_M[] = "M";
static const char __pyx_k_N[] = "N";
static const char __pyx_k_O[] = "O";
static const char __pyx_k_T[] = "T{";
  static const char __pyx_k_a[] = "a";
  static const char __pyx_k_b[] = "b";
  static const char __pyx_k_c[] = "c";
  static const char __pyx_k_d[] = "d";
  static const char __pyx_k_f[] = "f";
  static const char __pyx_k_i[] = "i";
  static const char __pyx_k_k[] = "k";
  static const char __pyx_k_m[] = "m";
  static const char __pyx_k_n[] = "n";
  static const char __pyx_k_s[] = "(%s)";
  static const char __pyx_k_v[] = "v";
  static const char __pyx_k_x[] = "x";
  static const char __pyx_k_y[] = "y";
  static const char __pyx_k_Kp[] = "Kp";
  static const char __pyx_k_Kv[] = "Kv";
  static const char __pyx_k_a0[] = "a0";
  static const char __pyx_k_a1[] = "a1";
  static const char __pyx_k_a2[] = "a2";
  static const char __pyx_k_b0[] = "b0";
  static const char __pyx_k_b1[] = "b1";
  static const char __pyx_k_b2[] = "b2";
  static const char __pyx_k_c1[] = "c1";
  static const char __pyx_k_c2[] = "c2";
  static const char __pyx_k_dt[] = "dt";
  static const char __pyx_k_eq[] = "__eq__";
  static const char __pyx_k_fp[] = "fp";
  static const char __pyx_k_id[] = "id";
  static const char __pyx_k_mu[] = "mu";
  static const char __pyx_k_nM[] = "nM";
  static const char __pyx_k_na[] = "na";
  static const char __pyx_k_nc[] = "nc";
  static const char __pyx_k_ne[] = "ne";
  static const char __pyx_k_np[] = "np";
  static const char __pyx_k_nq[] = "nq";
  static const char __pyx_k_nr[] = "nr";
  static const char __pyx_k_nu[] = "nu";
  static const char __pyx_k_nv[] = "nv";
  static const char __pyx_k_os[] = "os";
  static const char __pyx_k_r1[] = "r1";
  static const char __pyx_k_r2[] = "r2";
  static const char __pyx_k_rb[] = "rb";
  static const char __pyx_k_td[] = "td";
  static const char __pyx_k_up[] = "up";
  static const char __pyx_k_wb[] = "wb";
  static const char __pyx_k__83[] = "";
  static const char __pyx_k__85[] = "{}:{}";
  static const char __pyx_k_abc[] = "abc";
  static const char __pyx_k_act[] = "act";
  static const char __pyx_k_arr[] = "arr";
  static const char __pyx_k_bin[] = "bin";
  static const char __pyx_k_cam[] = "cam";
  static const char __pyx_k_con[] = "con";
  static const char __pyx_k_del[] = "__del__";
  static const char __pyx_k_dim[] = "dim";
  static const char __pyx_k_doc[] = "__doc__";
  static const char __pyx_k_dot[] = "dot";
  static const char __pyx_k_drv[] = "drv";
  static const char __pyx_k_dst[] = "dst";
  static const char __pyx_k_eye[] = "eye";
  static const char __pyx_k_fig[] = "fig";
  static const char __pyx_k_idx[] = "idx";
  static const char __pyx_k_jac[] = "jac";
  static const char __pyx_k_jar[] = "jar";
  static const char __pyx_k_key[] = "key";
  static const char __pyx_k_len[] = "len";
  static const char __pyx_k_map[] = "map";
  static const char __pyx_k_mat[] = "mat";
  static const char __pyx_k_mjb[] = "mjb";
  static const char __pyx_k_msg[] = "msg";
  static const char __pyx_k_new[] = "__new__";
  static const char __pyx_k_obj[] = "obj";
  static const char __pyx_k_opt[] = "opt";
  static const char __pyx_k_pnt[] = "pnt";
  static const char __pyx_k_pop[] = "pop";
  static const char __pyx_k_pos[] = "pos";
  static const char __pyx_k_prm[] = "prm";
  static const char __pyx_k_ptr[] = "ptr";
  static const char __pyx_k_res[] = "res";
  static const char __pyx_k_scl[] = "scl";
  static const char __pyx_k_scn[] = "scn";
  static const char __pyx_k_sim[] = "sim";
  static const char __pyx_k_src[] = "src";
  static const char __pyx_k_str[] = "str";
  static const char __pyx_k_sys[] = "sys";
  static const char __pyx_k_val[] = "val";
  static const char __pyx_k_vec[] = "vec";
  static const char __pyx_k_vel[] = "vel";
  static const char __pyx_k_vfs[] = "vfs";
  static const char __pyx_k_vis[] = "vis";
  static const char __pyx_k_xml[] = "xml";
  static const char __pyx_k_GPUS[] = "GPUS";
  static const char __pyx_k_Lock[] = "Lock";
  static const char __pyx_k__107[] = " ";
  static const char __pyx_k__120[] = ",";
  static const char __pyx_k__123[] = "\n";
  static const char __pyx_k__171[] = "^";
  static const char __pyx_k__172[] = ":";
static const char __pyx_k__173[] = "}";
static const char __pyx_k__611[] = "_";
static const char __pyx_k__664[] = "*";
static const char __pyx_k_args[] = "args";
static const char __pyx_k_axis[] = "axis";
static const char __pyx_k_base[] = "base";
static const char __pyx_k_body[] = "body";
static const char __pyx_k_copy[] = "copy";
static const char __pyx_k_cost[] = "cost";
static const char __pyx_k_ctrl[] = "ctrl";
static const char __pyx_k_data[] = "data";
static const char __pyx_k_dest[] = "dest";
static const char __pyx_k_diag[] = "diag";
static const char __pyx_k_dict[] = "__dict__";
static const char __pyx_k_exit[] = "__exit__";
static const char __pyx_k_file[] = "file";
static const char __pyx_k_font[] = "font";
static const char __pyx_k_geom[] = "geom";
static const char __pyx_k_glfw[] = "glfw";
static const char __pyx_k_info[] = "info";
static const char __pyx_k_init[] = "init";
static const char __pyx_k_jacp[] = "jacp";
static const char __pyx_k_jacr[] = "jacr";
static const char __pyx_k_join[] = "join";
static const char __pyx_k_keys[] = "keys";
static const char __pyx_k_left[] = "left";
static const char __pyx_k_len0[] = "len0";
static const char __pyx_k_list[] = "list";
static const char __pyx_k_lmax[] = "lmax";
static const char __pyx_k_lmin[] = "lmin";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_mat1[] = "mat1";
static const char __pyx_k_mat2[] = "mat2";
static const char __pyx_k_mode[] = "mode";
static const char __pyx_k_name[] = "name";
static const char __pyx_k_ncam[] = "ncam";
static const char __pyx_k_ndim[] = "ndim";
static const char __pyx_k_ne_2[] = "__ne__";
static const char __pyx_k_nefc[] = "nefc";
static const char __pyx_k_njnt[] = "njnt";
static const char __pyx_k_num2[] = "num2";
static const char __pyx_k_ones[] = "ones";
static const char __pyx_k_open[] = "open";
static const char __pyx_k_pack[] = "pack";
static const char __pyx_k_path[] = "path";
static const char __pyx_k_pert[] = "pert";
static const char __pyx_k_pos0[] = "pos0";
static const char __pyx_k_pos1[] = "pos1";
static const char __pyx_k_pos2[] = "pos2";
static const char __pyx_k_push[] = "push";
static const char __pyx_k_qpos[] = "qpos";
static const char __pyx_k_quat[] = "quat";
static const char __pyx_k_qvel[] = "qvel";
static const char __pyx_k_read[] = "read";
static const char __pyx_k_relx[] = "relx";
static const char __pyx_k_rely[] = "rely";
static const char __pyx_k_self[] = "self";
static const char __pyx_k_send[] = "send";
static const char __pyx_k_site[] = "site";
static const char __pyx_k_size[] = "size";
static const char __pyx_k_stat[] = "stat";
static const char __pyx_k_step[] = "step";
static const char __pyx_k_stop[] = "stop";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_text[] = "text";
static const char __pyx_k_time[] = "time";
static const char __pyx_k_type[] = "type";
static const char __pyx_k_vec1[] = "vec1";
static const char __pyx_k_vec2[] = "vec2";
static const char __pyx_k_vel0[] = "vel0";
static const char __pyx_k_vopt[] = "vopt";
static const char __pyx_k_warn[] = "warn";
static const char __pyx_k_xmat[] = "xmat";
static const char __pyx_k_xpos[] = "xpos";
static const char __pyx_k_ASCII[] = "ASCII";
static const char __pyx_k_angle[] = "angle";
static const char __pyx_k_array[] = "array";
static const char __pyx_k_cinit[] = "__cinit__";
static const char __pyx_k_class[] = "__class__";
static const char __pyx_k_close[] = "close";
static const char __pyx_k_const[] = "const";
static const char __pyx_k_depth[] = "depth";
static const char __pyx_k_dtype[] = "dtype";
static const char __pyx_k_empty[] = "empty";
static const char __pyx_k_enter[] = "__enter__";
static const char __pyx_k_error[] = "error";
static const char __pyx_k_flags[] = "flags";
static const char __pyx_k_flush[] = "flush";
static const char __pyx_k_force[] = "force";
static const char __pyx_k_image[] = "image";
static const char __pyx_k_index[] = "index";
static const char __pyx_k_int32[] = "int32";
static const char __pyx_k_int64[] = "int64";
static const char __pyx_k_items[] = "items";
static const char __pyx_k_label[] = "label";
static const char __pyx_k_mjb_2[] = ".mjb";
static const char __pyx_k_model[] = "model";
static const char __pyx_k_nbody[] = "nbody";
static const char __pyx_k_ngeom[] = "ngeom";
static const char __pyx_k_njmax[] = "njmax";
static const char __pyx_k_nsite[] = "nsite";
static const char __pyx_k_numpy[] = "numpy";
static const char __pyx_k_nwrap[] = "nwrap";
static const char __pyx_k_objid[] = "objid";
static const char __pyx_k_other[] = "other";
static const char __pyx_k_point[] = "point";
static const char __pyx_k_print[] = "print";
static const char __pyx_k_qpos1[] = "qpos1";
static const char __pyx_k_qpos2[] = "qpos2";
static const char __pyx_k_quat1[] = "quat1";
static const char __pyx_k_quat2[] = "quat2";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_ravel[] = "ravel";
static const char __pyx_k_reldx[] = "reldx";
static const char __pyx_k_reldy[] = "reldy";
static const char __pyx_k_scale[] = "scale";
static const char __pyx_k_shape[] = "shape";
static const char __pyx_k_slots[] = "__slots__";
static const char __pyx_k_split[] = "split";
static const char __pyx_k_start[] = "start";
static const char __pyx_k_super[] = "super";
static const char __pyx_k_texid[] = "texid";
static const char __pyx_k_text1[] = "text1";
static const char __pyx_k_text2[] = "text2";
static const char __pyx_k_throw[] = "throw";
static const char __pyx_k_uint8[] = "uint8";
static const char __pyx_k_unmap[] = "unmap";
static const char __pyx_k_value[] = "value";
static const char __pyx_k_width[] = "width";
static const char __pyx_k_write[] = "write";
static const char __pyx_k_xml_2[] = ".xml";
static const char __pyx_k_zeros[] = "zeros";
static const char __pyx_k_Device[] = "Device";
static const char __pyx_k_Number[] = "Number";
static const char __pyx_k_action[] = "action";
static const char __pyx_k_answer[] = "answer";
static const char __pyx_k_bottom[] = "bottom";
static const char __pyx_k_buffer[] = "buffer";
static const char __pyx_k_darwin[] = "darwin";
static const char __pyx_k_delete[] = "delete";
static const char __pyx_k_detach[] = "detach";
static const char __pyx_k_device[] = "device";
static const char __pyx_k_eigval[] = "eigval";
static const char __pyx_k_eigvec[] = "eigvec";
static const char __pyx_k_encode[] = "encode";
static const char __pyx_k_errstr[] = "errstr";
static const char __pyx_k_extent[] = "extent";
static const char __pyx_k_format[] = "format";
static const char __pyx_k_geomid[] = "geomid";
static const char __pyx_k_getenv[] = "getenv";
static const char __pyx_k_height[] = "height";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_indent[] = "indent";
static const char __pyx_k_init_2[] = "__init__";
static const char __pyx_k_lookat[] = "lookat";
static const char __pyx_k_median[] = "median";
static const char __pyx_k_meshid[] = "meshid";
static const char __pyx_k_mj_crb[] = "_mj_crb";
static const char __pyx_k_mj_jac[] = "_mj_jac";
static const char __pyx_k_mj_rne[] = "_mj_rne";
static const char __pyx_k_module[] = "__module__";
static const char __pyx_k_mujoco[] = "mujoco";
static const char __pyx_k_name_2[] = "__name__";
static const char __pyx_k_newpos[] = "newpos";
static const char __pyx_k_nlight[] = "nlight";
static const char __pyx_k_nmocap[] = "nmocap";
static const char __pyx_k_object[] = "object";
static const char __pyx_k_oldpos[] = "oldpos";
static const char __pyx_k_pickle[] = "pickle";
static const char __pyx_k_posres[] = "posres";
static const char __pyx_k_reduce[] = "__reduce__";
static const char __pyx_k_render[] = "render";
static const char __pyx_k_result[] = "result";
static const char __pyx_k_roomup[] = "roomup";
static const char __pyx_k_selpnt[] = "selpnt";
static const char __pyx_k_solimp[] = "solimp";
static const char __pyx_k_solref[] = "solref";
static const char __pyx_k_struct[] = "struct";
static const char __pyx_k_suffix[] = "suffix";
static const char __pyx_k_torque[] = "torque";
static const char __pyx_k_uint16[] = "uint16";
static const char __pyx_k_unpack[] = "unpack";
static const char __pyx_k_update[] = "update";
static const char __pyx_k_values[] = "values";
static const char __pyx_k_window[] = "window";
static const char __pyx_k_ABCMeta[] = "ABCMeta";
static const char __pyx_k_Context[] = "Context";
static const char __pyx_k_SAMPLES[] = "SAMPLES";
static const char __pyx_k_VISIBLE[] = "VISIBLE";
static const char __pyx_k_asarray[] = "asarray";
static const char __pyx_k_catmask[] = "catmask";
static const char __pyx_k_depth_2[] = "_depth";
static const char __pyx_k_environ[] = "environ";
static const char __pyx_k_flatten[] = "flatten";
static const char __pyx_k_flg_acc[] = "flg_acc";
static const char __pyx_k_flg_pad[] = "flg_pad";
static const char __pyx_k_float32[] = "float32";
static const char __pyx_k_fortran[] = "fortran";
static const char __pyx_k_forward[] = "forward";
static const char __pyx_k_genexpr[] = "genexpr";
static const char __pyx_k_get_mjb[] = "get_mjb";
static const char __pyx_k_get_xml[] = "get_xml";
static const char __pyx_k_gridpos[] = "gridpos";
static const char __pyx_k_headpos[] = "headpos";
static const char __pyx_k_idx_act[] = "idx_act";
static const char __pyx_k_idx_udd[] = "idx_udd";
static const char __pyx_k_invalid[] = "invalid: {}";
static const char __pyx_k_jacAxis[] = "jacAxis";
static const char __pyx_k_logging[] = "logging";
static const char __pyx_k_maxgeom[] = "maxgeom";
static const char __pyx_k_memview[] = "memview";
static const char __pyx_k_minidom[] = "minidom";
static const char __pyx_k_mj_mulM[] = "_mj_mulM";
static const char __pyx_k_mj_step[] = "_mj_step";
static const char __pyx_k_mju_add[] = "_mju_add";
static const char __pyx_k_mju_dot[] = "_mju_dot";
static const char __pyx_k_mju_max[] = "_mju_max";
static const char __pyx_k_mju_min[] = "_mju_min";
static const char __pyx_k_mju_scl[] = "_mju_scl";
static const char __pyx_k_mju_sub[] = "_mju_sub";
static const char __pyx_k_nconmax[] = "nconmax";
static const char __pyx_k_newmass[] = "newmass";
static const char __pyx_k_ntendon[] = "ntendon";
static const char __pyx_k_numbers[] = "numbers";
static const char __pyx_k_objtype[] = "objtype";
static const char __pyx_k_overlay[] = "overlay";
static const char __pyx_k_pbo_rgb[] = "pbo_rgb";
static const char __pyx_k_prepare[] = "__prepare__";
static const char __pyx_k_pyramid[] = "pyramid";
static const char __pyx_k_quatres[] = "quatres";
static const char __pyx_k_reshape[] = "reshape";
static const char __pyx_k_rgb_arr[] = "rgb_arr";
static const char __pyx_k_roompos[] = "roompos";
static const char __pyx_k_tagName[] = "tagName";
static const char __pyx_k_warning[] = "warning";
static const char __pyx_k_width_2[] = "_width";
static const char __pyx_k_xml_dom[] = "xml.dom";
static const char __pyx_k_xml_str[] = "xml_str";
static const char __pyx_k_Ellipsis[] = "Ellipsis";
static const char __pyx_k_GEOM_BOX[] = "GEOM_BOX";
static const char __pyx_k_MjViewer[] = "MjViewer";
static const char __pyx_k_bin_path[] = "bin_path";
static const char __pyx_k_deepcopy[] = "deepcopy";
static const char __pyx_k_distance[] = "distance";
static const char __pyx_k_error_sz[] = "error_sz";
static const char __pyx_k_filename[] = "filename";
static const char __pyx_k_filesize[] = "filesize";
static const char __pyx_k_flg_html[] = "flg_html";
static const char __pyx_k_flg_plus[] = "flg_plus";
static const char __pyx_k_geomtype[] = "geomtype";
static const char __pyx_k_getstate[] = "__getstate__";
static const char __pyx_k_height_2[] = "_height";
static const char __pyx_k_hfieldid[] = "hfieldid";
static const char __pyx_k_idx_qpos[] = "idx_qpos";
static const char __pyx_k_idx_qvel[] = "idx_qvel";
static const char __pyx_k_idx_time[] = "idx_time";
static const char __pyx_k_inertial[] = "inertial";
static const char __pyx_k_itemsize[] = "itemsize";
static const char __pyx_k_jacPoint[] = "jacPoint";
static const char __pyx_k_jnt_type[] = "jnt_type";
static const char __pyx_k_keyframe[] = "keyframe";
static const char __pyx_k_mj_Euler[] = "_mj_Euler";
static const char __pyx_k_mj_fullM[] = "_mj_fullM";
static const char __pyx_k_mj_step1[] = "_mj_step1";
static const char __pyx_k_mj_step2[] = "_mj_step2";
static const char __pyx_k_mju_add3[] = "_mju_add3";
static const char __pyx_k_mju_copy[] = "_mju_copy";
static const char __pyx_k_mju_dot3[] = "_mju_dot3";
static const char __pyx_k_mju_eig3[] = "_mju_eig3";
static const char __pyx_k_mju_norm[] = "_mju_norm";
static const char __pyx_k_mju_scl3[] = "_mju_scl3";
static const char __pyx_k_mju_sign[] = "_mju_sign";
static const char __pyx_k_mju_sub3[] = "_mju_sub3";
static const char __pyx_k_mju_zero[] = "_mju_zero";
static const char __pyx_k_modelpos[] = "modelpos";
static const char __pyx_k_overlay2[] = "overlay2";
static const char __pyx_k_platform[] = "platform";
static const char __pyx_k_property[] = "property";
static const char __pyx_k_pyx_type[] = "__pyx_type";
static const char __pyx_k_qualname[] = "__qualname__";
static const char __pyx_k_question[] = "question";
static const char __pyx_k_rgb_view[] = "rgb_view";
static const char __pyx_k_roomquat[] = "roomquat";
static const char __pyx_k_setstate[] = "__setstate__";
static const char __pyx_k_step_udd[] = "step_udd";
static const char __pyx_k_tempfile[] = "tempfile";
static const char __pyx_k_timestep[] = "timestep";
static const char __pyx_k_use_cuda[] = "use_cuda";
static const char __pyx_k_viewport[] = "viewport";
static const char __pyx_k_with_udd[] = "with_udd";
static const char __pyx_k_CAT_DECOR[] = "CAT_DECOR";
static const char __pyx_k_GlfwError[] = "GlfwError";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_body_jacp[] = "body_jacp";
static const char __pyx_k_body_jacr[] = "body_jacr";
static const char __pyx_k_buffer_sz[] = "buffer_sz";
static const char __pyx_k_camera_id[] = "camera_id";
static const char __pyx_k_depth_arr[] = "depth_arr";
static const char __pyx_k_device_id[] = "device_id";
static const char __pyx_k_directory[] = "directory";
static const char __pyx_k_enumerate[] = "enumerate";
static const char __pyx_k_flg_color[] = "flg_color";
static const char __pyx_k_flg_depth[] = "flg_depth";
static const char __pyx_k_flg_force[] = "flg_force";
static const char __pyx_k_flg_local[] = "flg_local";
static const char __pyx_k_fontscale[] = "fontscale";
static const char __pyx_k_geom_jacp[] = "geom_jacp";
static const char __pyx_k_geom_jacr[] = "geom_jacr";
static const char __pyx_k_geom_xpos[] = "geom_xpos";
static const char __pyx_k_init_cuda[] = "_init_cuda";
static const char __pyx_k_init_glfw[] = "_init_glfw";
static const char __pyx_k_metaclass[] = "__metaclass__";
static const char __pyx_k_mj_comPos[] = "_mj_comPos";
static const char __pyx_k_mj_comVel[] = "_mj_comVel";
static const char __pyx_k_mj_isDual[] = "_mj_isDual";
static const char __pyx_k_mj_solveM[] = "_mj_solveM";
static const char __pyx_k_mj_tendon[] = "_mj_tendon";
static const char __pyx_k_mjb_bytes[] = "mjb_bytes";
static const char __pyx_k_mju_addTo[] = "_mju_addTo";
static const char __pyx_k_mju_copy3[] = "_mju_copy3";
static const char __pyx_k_mju_copy4[] = "_mju_copy4";
static const char __pyx_k_mju_cross[] = "_mju_cross";
static const char __pyx_k_mju_dist3[] = "_mju_dist3";
static const char __pyx_k_mju_error[] = "_mju_error";
static const char __pyx_k_mju_isBad[] = "_mju_isBad";
static const char __pyx_k_mju_norm3[] = "_mju_norm3";
static const char __pyx_k_mju_round[] = "_mju_round";
static const char __pyx_k_mju_unit4[] = "_mju_unit4";
static const char __pyx_k_mju_zero3[] = "_mju_zero3";
static const char __pyx_k_mju_zero4[] = "_mju_zero4";
static const char __pyx_k_mocap_pos[] = "mocap_pos";
static const char __pyx_k_model_mjb[] = "model.mjb";
static const char __pyx_k_model_xml[] = "model.xml";
static const char __pyx_k_modelquat[] = "modelquat";
static const char __pyx_k_mujoco_py[] = "mujoco_py";
static const char __pyx_k_nsubsteps[] = "nsubsteps";
static const char __pyx_k_nuserdata[] = "nuserdata";
static const char __pyx_k_offscreen[] = "offscreen";
static const char __pyx_k_pbo_depth[] = "pbo_depth";
static const char __pyx_k_pycuda_gl[] = "pycuda.gl";
static const char __pyx_k_pyx_state[] = "__pyx_state";
static const char __pyx_k_read_cuda[] = "_read_cuda";
static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
static const char __pyx_k_site_jacp[] = "site_jacp";
static const char __pyx_k_site_jacr[] = "site_jacr";
static const char __pyx_k_skipstage[] = "skipstage";
static const char __pyx_k_str_array[] = "str_array";
static const char __pyx_k_threading[] = "threading";
static const char __pyx_k_traceback[] = "traceback";
static const char __pyx_k_udd_state[] = "udd_state";
static const char __pyx_k_val_array[] = "val_array";
static const char __pyx_k_INIT_WIDTH[] = "_INIT_WIDTH";
static const char __pyx_k_IndexError[] = "IndexError";
static const char __pyx_k_MjSimState[] = "MjSimState";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_batch_size[] = "batch_size";
static const char __pyx_k_childNodes[] = "childNodes";
static const char __pyx_k_depth_view[] = "depth_view";
static const char __pyx_k_error_code[] = "error_code";
static const char __pyx_k_fixedcamid[] = "fixedcamid";
static const char __pyx_k_flg_paused[] = "flg_paused";
static const char __pyx_k_init_width[] = "init_width";
static const char __pyx_k_jnt_dofadr[] = "jnt_dofadr";
static const char __pyx_k_mj_applyFT[] = "_mj_applyFT";
static const char __pyx_k_mj_factorM[] = "_mj_factorM";
static const char __pyx_k_mj_forward[] = "_mj_forward";
static const char __pyx_k_mj_inverse[] = "_mj_inverse";
static const char __pyx_k_mj_jacBody[] = "_mj_jacBody";
static const char __pyx_k_mj_jacGeom[] = "_mj_jacGeom";
static const char __pyx_k_mj_jacSite[] = "_mj_jacSite";
static const char __pyx_k_mj_loadXML[] = "_mj_loadXML";
static const char __pyx_k_mj_name2id[] = "_mj_name2id";
static const char __pyx_k_mj_passive[] = "_mj_passive";
static const char __pyx_k_mj_rayMesh[] = "_mj_rayMesh";
static const char __pyx_k_mj_solveM2[] = "_mj_solveM2";
static const char __pyx_k_mj_version[] = "_mj_version";
static const char __pyx_k_mj_warning[] = "_mj_warning";
static const char __pyx_k_mjr_figure[] = "_mjr_figure";
static const char __pyx_k_mjr_finish[] = "_mjr_finish";
static const char __pyx_k_mjr_render[] = "_mjr_render";
static const char __pyx_k_mju_Halton[] = "_mju_Halton";
static const char __pyx_k_mju_addScl[] = "_mju_addScl";
static const char __pyx_k_mju_addTo3[] = "_mju_addTo3";
static const char __pyx_k_mju_isZero[] = "_mju_isZero";
static const char __pyx_k_mjv_select[] = "_mjv_select";
static const char __pyx_k_mocap_quat[] = "mocap_quat";
static const char __pyx_k_namedtuple[] = "namedtuple";
static const char __pyx_k_parentNode[] = "parentNode";
static const char __pyx_k_pyx_result[] = "__pyx_result";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_resolution[] = "resolution";
static const char __pyx_k_rotnew2old[] = "rotnew2old";
static const char __pyx_k_schema_val[] = "schema_val";
static const char __pyx_k_unregister[] = "unregister";
static const char __pyx_k_use_cuda_2[] = "_use_cuda";
static const char __pyx_k_CAMERA_FREE[] = "CAMERA_FREE";
static const char __pyx_k_GlfwContext[] = "GlfwContext";
static const char __pyx_k_INIT_HEIGHT[] = "_INIT_HEIGHT";
static const char __pyx_k_ImportError[] = "ImportError";
static const char __pyx_k_MemoryError[] = "MemoryError";
static const char __pyx_k_OBJ_UNKNOWN[] = "OBJ_UNKNOWN";
static const char __pyx_k_PickleError[] = "PickleError";
static const char __pyx_k_appendChild[] = "appendChild";
static const char __pyx_k_array_equal[] = "array_equal";
static const char __pyx_k_aspectratio[] = "aspectratio";
static const char __pyx_k_camera_name[] = "camera_name";
static const char __pyx_k_collections[] = "collections";
static const char __pyx_k_concatenate[] = "concatenate";
static const char __pyx_k_description[] = "description";
static const char __pyx_k_device_id_2[] = "_device_id";
static const char __pyx_k_framebuffer[] = "framebuffer";
static const char __pyx_k_from_device[] = "from_device";
static const char __pyx_k_init_camera[] = "_init_camera";
static const char __pyx_k_init_height[] = "init_height";
static const char __pyx_k_jnt_qposadr[] = "jnt_qposadr";
static const char __pyx_k_mj_activate[] = "_mj_activate";
static const char __pyx_k_mj_camlight[] = "_mj_camlight";
static const char __pyx_k_mj_checkAcc[] = "_mj_checkAcc";
static const char __pyx_k_mj_checkPos[] = "_mj_checkPos";
static const char __pyx_k_mj_checkVel[] = "_mj_checkVel";
static const char __pyx_k_mj_isSparse[] = "_mj_isSparse";
static const char __pyx_k_mj_setConst[] = "_mj_setConst";
static const char __pyx_k_mjr_overlay[] = "_mjr_overlay";
static const char __pyx_k_mju_addScl3[] = "_mju_addScl3";
static const char __pyx_k_mju_error_i[] = "_mju_error_i";
static const char __pyx_k_mju_error_s[] = "_mju_error_s";
static const char __pyx_k_mju_mulPose[] = "_mju_mulPose";
static const char __pyx_k_mju_mulQuat[] = "_mju_mulQuat";
static const char __pyx_k_mju_negPose[] = "_mju_negPose";
static const char __pyx_k_mju_negQuat[] = "_mju_negQuat";
static const char __pyx_k_mju_rayGeom[] = "_mju_rayGeom";
static const char __pyx_k_mju_subFrom[] = "_mju_subFrom";
static const char __pyx_k_mju_warning[] = "_mju_warning";
static const char __pyx_k_mujoco_path[] = "mujoco_path";
static const char __pyx_k_nsensordata[] = "nsensordata";
static const char __pyx_k_parseString[] = "parseString";
static const char __pyx_k_qfrc_target[] = "qfrc_target";
static const char __pyx_k_read_nocuda[] = "_read_nocuda";
static const char __pyx_k_read_pixels[] = "read_pixels";
static const char __pyx_k_removeChild[] = "removeChild";
static const char __pyx_k_state_tuple[] = "state_tuple";
static const char __pyx_k_toprettyxml[] = "toprettyxml";
static const char __pyx_k_window_hint[] = "window_hint";
static const char __pyx_k_CAMERA_FIXED[] = "CAMERA_FIXED";
static const char __pyx_k_DOUBLEBUFFER[] = "DOUBLEBUFFER";
static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_SimStateBase[] = "SimStateBase";
static const char __pyx_k_batch_offset[] = "batch_offset";
static const char __pyx_k_batch_size_2[] = "_batch_size";
static const char __pyx_k_body_mocapid[] = "body_mocapid";
static const char __pyx_k_body_name2id[] = "body_name2id";
static const char __pyx_k_cuda_context[] = "_cuda_context";
static const char __pyx_k_cuda_rgb_pbo[] = "_cuda_rgb_pbo";
static const char __pyx_k_cuda_rgb_ptr[] = "_cuda_rgb_ptr";
static const char __pyx_k_flatten_dict[] = "_flatten_dict";
static const char __pyx_k_flg_actrange[] = "flg_actrange";
static const char __pyx_k_geom_name2id[] = "geom_name2id";
static const char __pyx_k_make_context[] = "make_context";
static const char __pyx_k_mj_certCheck[] = "_mj_certCheck";
static const char __pyx_k_mj_collision[] = "_mj_collision";
static const char __pyx_k_mj_copyModel[] = "_mj_copyModel";
static const char __pyx_k_mj_deleteVFS[] = "_mj_deleteVFS";
static const char __pyx_k_mj_energyPos[] = "_mj_energyPos";
static const char __pyx_k_mj_energyVel[] = "_mj_energyVel";
static const char __pyx_k_mj_loadModel[] = "_mj_loadModel";
static const char __pyx_k_mj_mulJacVec[] = "_mj_mulJacVec";
static const char __pyx_k_mj_printData[] = "_mj_printData";
static const char __pyx_k_mj_rayHfield[] = "_mj_rayHfield";
static const char __pyx_k_mj_resetData[] = "_mj_resetData";
static const char __pyx_k_mj_sensorAcc[] = "_mj_sensorAcc";
static const char __pyx_k_mj_sensorPos[] = "_mj_sensorPos";
static const char __pyx_k_mj_sensorVel[] = "_mj_sensorVel";
static const char __pyx_k_mj_sizeModel[] = "_mj_sizeModel";
static const char __pyx_k_mjr_getError[] = "_mjr_getError";
static const char __pyx_k_mju_addToScl[] = "_mju_addToScl";
static const char __pyx_k_mju_mat2Quat[] = "_mju_mat2Quat";
static const char __pyx_k_mju_printMat[] = "_mju_printMat";
static const char __pyx_k_mju_quat2Mat[] = "_mju_quat2Mat";
static const char __pyx_k_mju_quat2Vel[] = "_mju_quat2Vel";
static const char __pyx_k_mju_sqrMatTD[] = "_mju_sqrMatTD";
static const char __pyx_k_mju_str2Type[] = "_mju_str2Type";
static const char __pyx_k_mju_subFrom3[] = "_mju_subFrom3";
static const char __pyx_k_mju_writeLog[] = "_mju_writeLog";
static const char __pyx_k_mjv_addGeoms[] = "_mjv_addGeoms";
static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
static const char __pyx_k_refresh_rate[] = "refresh_rate";
static const char __pyx_k_setAttribute[] = "setAttribute";
static const char __pyx_k_site_name2id[] = "site_name2id";
static const char __pyx_k_staticmethod[] = "staticmethod";
static const char __pyx_k_stringsource[] = "stringsource";
static const char __pyx_k_swap_buffers[] = "swap_buffers";
static const char __pyx_k_target_width[] = "target_width";
static const char __pyx_k_udd_callback[] = "udd_callback";
static const char __pyx_k_FONTSCALE_150[] = "FONTSCALE_150";
static const char __pyx_k_OpenGLContext[] = "OpenGLContext";
static const char __pyx_k_OverflowError[] = "OverflowError";
static const char __pyx_k_createElement[] = "createElement";
static const char __pyx_k_create_window[] = "_create_window";
static const char __pyx_k_get_body_jacp[] = "get_body_jacp";
static const char __pyx_k_get_body_jacr[] = "get_body_jacr";
static const char __pyx_k_get_geom_jacp[] = "get_geom_jacp";
static const char __pyx_k_get_geom_jacr[] = "get_geom_jacr";
static const char __pyx_k_get_site_jacp[] = "get_site_jacp";
static const char __pyx_k_get_site_jacr[] = "get_site_jacr";
static const char __pyx_k_joint_name2id[] = "joint_name2id";
static const char __pyx_k_light_name2id[] = "light_name2id";
static const char __pyx_k_mj_RungeKutta[] = "_mj_RungeKutta";
static const char __pyx_k_mj_addContact[] = "_mj_addContact";
static const char __pyx_k_mj_addFileVFS[] = "_mj_addFileVFS";
static const char __pyx_k_mj_certAnswer[] = "_mj_certAnswer";
static const char __pyx_k_mj_deactivate[] = "_mj_deactivate";
static const char __pyx_k_mj_defaultVFS[] = "_mj_defaultVFS";
static const char __pyx_k_mj_deleteData[] = "_mj_deleteData";
static const char __pyx_k_mj_jacBodyCom[] = "_mj_jacBodyCom";
static const char __pyx_k_mj_kinematics[] = "_mj_kinematics";
static const char __pyx_k_mj_mulJacTVec[] = "_mj_mulJacTVec";
static const char __pyx_k_mj_printModel[] = "_mj_printModel";
static const char __pyx_k_mjr_setBuffer[] = "_mjr_setBuffer";
static const char __pyx_k_mju_addToScl3[] = "_mju_addToScl3";
static const char __pyx_k_mju_cholSolve[] = "_mju_cholSolve";
static const char __pyx_k_mju_derivQuat[] = "_mju_derivQuat";
static const char __pyx_k_mju_mulMatMat[] = "_mju_mulMatMat";
static const char __pyx_k_mju_mulMatVec[] = "_mju_mulMatVec";
static const char __pyx_k_mju_muscleFVL[] = "_mju_muscleFVL";
static const char __pyx_k_mju_normalize[] = "_mju_normalize";
static const char __pyx_k_mju_pneumatic[] = "_mju_pneumatic";
static const char __pyx_k_mju_quatZ2Vec[] = "_mju_quatZ2Vec";
static const char __pyx_k_mju_rotVecMat[] = "_mju_rotVecMat";
static const char __pyx_k_mju_transpose[] = "_mju_transpose";
static const char __pyx_k_mju_warning_i[] = "_mju_warning_i";
static const char __pyx_k_mju_warning_s[] = "_mju_warning_s";
static const char __pyx_k_mjv_freeScene[] = "_mjv_freeScene";
static const char __pyx_k_mjv_makeScene[] = "_mjv_makeScene";
static const char __pyx_k_mjv_moveModel[] = "_mjv_moveModel";
static const char __pyx_k_pycuda_driver[] = "pycuda.driver";
static const char __pyx_k_pyx_getbuffer[] = "__pyx_getbuffer";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_target_height[] = "target_height";
static const char __pyx_k_NotImplemented[] = "NotImplemented";
static const char __pyx_k_abstractmethod[] = "abstractmethod";
static const char __pyx_k_camera_name2id[] = "camera_name2id";
static const char __pyx_k_cuda_depth_pbo[] = "_cuda_depth_pbo";
static const char __pyx_k_cuda_depth_ptr[] = "_cuda_depth_ptr";
static const char __pyx_k_flat_udd_state[] = "flat_udd_state";
static const char __pyx_k_from_flattened[] = "from_flattened";
static const char __pyx_k_get_video_mode[] = "get_video_mode";
static const char __pyx_k_keep_inertials[] = "keep_inertials";
static const char __pyx_k_mj_deleteModel[] = "_mj_deleteModel";
static const char __pyx_k_mj_findFileVFS[] = "_mj_findFileVFS";
static const char __pyx_k_mj_forwardSkip[] = "_mj_forwardSkip";
static const char __pyx_k_mj_freeLastXML[] = "_mj_freeLastXML";
static const char __pyx_k_mj_fwdPosition[] = "_mj_fwdPosition";
static const char __pyx_k_mj_fwdVelocity[] = "_mj_fwdVelocity";
static const char __pyx_k_mj_invPosition[] = "_mj_invPosition";
static const char __pyx_k_mj_invVelocity[] = "_mj_invVelocity";
static const char __pyx_k_mj_inverseSkip[] = "_mj_inverseSkip";
static const char __pyx_k_mj_isPyramidal[] = "_mj_isPyramidal";
static const char __pyx_k_mj_printSchema[] = "_mj_printSchema";
static const char __pyx_k_mj_saveLastXML[] = "_mj_saveLastXML";
static const char __pyx_k_mjr_blitBuffer[] = "_mjr_blitBuffer";
static const char __pyx_k_mjr_uploadMesh[] = "_mjr_uploadMesh";
static const char __pyx_k_mju_cholFactor[] = "_mju_cholFactor";
static const char __pyx_k_mju_cholUpdate[] = "_mju_cholUpdate";
static const char __pyx_k_mju_mulMatMatT[] = "_mju_mulMatMatT";
static const char __pyx_k_mju_mulMatTMat[] = "_mju_mulMatTMat";
static const char __pyx_k_mju_mulMatTVec[] = "_mju_mulMatTVec";
static const char __pyx_k_mju_normalize3[] = "_mju_normalize3";
static const char __pyx_k_mju_normalize4[] = "_mju_normalize4";
static const char __pyx_k_mju_rotVecMatT[] = "_mju_rotVecMatT";
static const char __pyx_k_mju_rotVecQuat[] = "_mju_rotVecQuat";
static const char __pyx_k_mju_trnVecPose[] = "_mju_trnVecPose";
static const char __pyx_k_mjv_model2room[] = "_mjv_model2room";
static const char __pyx_k_mjv_moveCamera[] = "_mjv_moveCamera";
static const char __pyx_k_mjv_room2model[] = "_mjv_room2model";
static const char __pyx_k_mujoco_py_cymj[] = "mujoco_py.cymj";
static const char __pyx_k_opengl_backend[] = "opengl_backend";
static const char __pyx_k_opengl_context[] = "opengl_context";
static const char __pyx_k_render_context[] = "render_context";
static const char __pyx_k_schema_example[] = "schema_example";
static const char __pyx_k_sensor_name2id[] = "sensor_name2id";
static const char __pyx_k_unflatten_dict[] = "_unflatten_dict";
static const char __pyx_k_userdata_names[] = "userdata_names";
static const char __pyx_k_MjBatchRenderer[] = "MjBatchRenderer";
static const char __pyx_k_MjSimState___eq[] = "MjSimState.__eq__";
static const char __pyx_k_MjSimState___ne[] = "MjSimState.__ne__";
static const char __pyx_k_View_MemoryView[] = "View.MemoryView";
static const char __pyx_k_allocate_buffer[] = "allocate_buffer";
static const char __pyx_k_create_window_2[] = "create_window";
static const char __pyx_k_discover_mujoco[] = "discover_mujoco";
static const char __pyx_k_dtype_is_object[] = "dtype_is_object";
static const char __pyx_k_flg_coneHessian[] = "flg_coneHessian";
static const char __pyx_k_get_buffer_size[] = "get_buffer_size";
static const char __pyx_k_mj_certQuestion[] = "_mj_certQuestion";
static const char __pyx_k_mj_contactForce[] = "_mj_contactForce";
static const char __pyx_k_mj_fwdActuation[] = "_mj_fwdActuation";
static const char __pyx_k_mj_getTotalmass[] = "_mj_getTotalmass";
static const char __pyx_k_mj_integratePos[] = "_mj_integratePos";
static const char __pyx_k_mj_jacPointAxis[] = "_mj_jacPointAxis";
static const char __pyx_k_mj_local2Global[] = "_mj_local2Global";
static const char __pyx_k_mj_setTotalmass[] = "_mj_setTotalmass";
static const char __pyx_k_mj_transmission[] = "_mj_transmission";
static const char __pyx_k_mjr_freeContext[] = "_mjr_freeContext";
static const char __pyx_k_mjr_makeContext[] = "_mjr_makeContext";
static const char __pyx_k_mju_mulQuatAxis[] = "_mju_mulQuatAxis";
static const char __pyx_k_mjv_initPerturb[] = "_mjv_initPerturb";
static const char __pyx_k_mjv_movePerturb[] = "_mjv_movePerturb";
static const char __pyx_k_mjv_updateScene[] = "_mjv_updateScene";
static const char __pyx_k_mujoco_py_utils[] = "mujoco_py.utils";
static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
static const char __pyx_k_render_callback[] = "render_callback";
static const char __pyx_k_render_contexts[] = "render_contexts";
static const char __pyx_k_set_buffer_size[] = "set_buffer_size";
static const char __pyx_k_set_window_size[] = "_set_window_size";
static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
static const char __pyx_k_RegisteredBuffer[] = "RegisteredBuffer";
static const char __pyx_k_cuda_rgb_mapping[] = "_cuda_rgb_mapping";
static const char __pyx_k_mj_compareFwdInv[] = "_mj_compareFwdInv";
static const char __pyx_k_mj_defaultOption[] = "_mj_defaultOption";
static const char __pyx_k_mj_defaultVisual[] = "_mj_defaultVisual";
static const char __pyx_k_mj_deleteFileVFS[] = "_mj_deleteFileVFS";
static const char __pyx_k_mj_fwdConstraint[] = "_mj_fwdConstraint";
static const char __pyx_k_mj_invConstraint[] = "_mj_invConstraint";
static const char __pyx_k_mj_normalizeQuat[] = "_mj_normalizeQuat";
static const char __pyx_k_mjr_uploadHField[] = "_mjr_uploadHField";
static const char __pyx_k_mju_springDamper[] = "_mju_springDamper";
static const char __pyx_k_mjv_cameraInRoom[] = "_mjv_cameraInRoom";
static const char __pyx_k_mjv_updateCamera[] = "_mjv_updateCamera";
static const char __pyx_k_skipsensorenergy[] = "skipsensorenergy";
static const char __pyx_k_substep_callback[] = "substep_callback";
static const char __pyx_k_userdata_name2id[] = "userdata_name2id";
static const char __pyx_k_DYLD_LIBRARY_PATH[] = "DYLD_LIBRARY_PATH";
static const char __pyx_k_MjSim_render_lock[] = "_MjSim_render_lock";
static const char __pyx_k_build_callback_fn[] = "build_callback_fn";
static const char __pyx_k_cuda_rgb_buf_size[] = "_cuda_rgb_buf_size";
static const char __pyx_k_mj_makeConstraint[] = "_mj_makeConstraint";
static const char __pyx_k_mj_objectVelocity[] = "_mj_objectVelocity";
static const char __pyx_k_mj_resetCallbacks[] = "_mj_resetCallbacks";
static const char __pyx_k_mjr_uploadTexture[] = "_mjr_uploadTexture";
static const char __pyx_k_mju_clearHandlers[] = "_mju_clearHandlers";
static const char __pyx_k_mju_decodePyramid[] = "_mju_decodePyramid";
static const char __pyx_k_mju_encodePyramid[] = "_mju_encodePyramid";
static const char __pyx_k_mju_insertionSort[] = "_mju_insertionSort";
static const char __pyx_k_mju_musclePassive[] = "_mju_musclePassive";
static const char __pyx_k_mju_quatIntegrate[] = "_mju_quatIntegrate";
static const char __pyx_k_mjv_alignToCamera[] = "_mjv_alignToCamera";
static const char __pyx_k_mjv_cameraInModel[] = "_mjv_cameraInModel";
static const char __pyx_k_mjv_defaultCamera[] = "_mjv_defaultCamera";
static const char __pyx_k_mjv_defaultFigure[] = "_mjv_defaultFigure";
static const char __pyx_k_mjv_defaultOption[] = "_mjv_defaultOption";
static const char __pyx_k_mjv_frustumHeight[] = "_mjv_frustumHeight";
static const char __pyx_k_mjv_makeConnector[] = "_mjv_makeConnector";
static const char __pyx_k_mujoco_py_builder[] = "mujoco_py.builder";
static const char __pyx_k_pyx_unpickle_Enum[] = "__pyx_unpickle_Enum";
static const char __pyx_k_set_window_size_2[] = "set_window_size";
static const char __pyx_k_Failed_to_save_XML[] = "Failed to save XML: {}";
static const char __pyx_k_GLFW_not_installed[] = "GLFW not installed";
static const char __pyx_k_GlfwContext___init[] = "GlfwContext.__init__";
static const char __pyx_k_MjSimState_flatten[] = "MjSimState.flatten";
static const char __pyx_k_NamedTemporaryFile[] = "NamedTemporaryFile";
static const char __pyx_k_TemporaryDirectory[] = "TemporaryDirectory";
static const char __pyx_k_add_render_context[] = "add_render_context";
static const char __pyx_k_bad_userdata_names[] = "bad userdata names";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_cuda_depth_mapping[] = "_cuda_depth_mapping";
static const char __pyx_k_mj_fwdAcceleration[] = "_mj_fwdAcceleration";
static const char __pyx_k_mj_makeData_failed[] = "mj_makeData failed!";
static const char __pyx_k_mjr_defaultContext[] = "_mjr_defaultContext";
static const char __pyx_k_mju_axisAngle2Quat[] = "_mju_axisAngle2Quat";
static const char __pyx_k_mju_standardNormal[] = "_mju_standardNormal";
static const char __pyx_k_mjv_defaultPerturb[] = "_mjv_defaultPerturb";
static const char __pyx_k_mujoco_py_cymj_pyx[] = "mujoco_py/cymj.pyx";
static const char __pyx_k_mujoco_py_mjviewer[] = "mujoco_py.mjviewer";
static const char __pyx_k_remove_empty_lines[] = "remove_empty_lines";
static const char __pyx_k_set_error_callback[] = "set_error_callback";
static const char __pyx_k_set_mujoco_buffers[] = "_set_mujoco_buffers";
static const char __pyx_k_set_userdata_names[] = "set_userdata_names";
static const char __pyx_k_strided_and_direct[] = "<strided and direct>";
static const char __pyx_k_CudaNotEnabledError[] = "CudaNotEnabledError";
static const char __pyx_k_GLFW_IS_INITIALIZED[] = "_GLFW_IS_INITIALIZED";
static const char __pyx_k_GLFW_error_code_d_s[] = "GLFW error (code %d): %s";
static const char __pyx_k_MjBatchRenderer_map[] = "MjBatchRenderer.map";
static const char __pyx_k_NotImplementedError[] = "NotImplementedError";
static const char __pyx_k_add_marker_to_scene[] = "_add_marker_to_scene";
static const char __pyx_k_cuda_depth_buf_size[] = "_cuda_depth_buf_size";
static const char __pyx_k_device_ptr_and_size[] = "device_ptr_and_size";
static const char __pyx_k_get_joint_qpos_addr[] = "get_joint_qpos_addr";
static const char __pyx_k_get_joint_qvel_addr[] = "get_joint_qvel_addr";
static const char __pyx_k_get_primary_monitor[] = "get_primary_monitor";
static const char __pyx_k_glfw_error_callback[] = "_glfw_error_callback";
static const char __pyx_k_load_model_from_mjb[] = "load_model_from_mjb";
static const char __pyx_k_load_model_from_xml[] = "load_model_from_xml";
static const char __pyx_k_mj_constraintUpdate[] = "_mj_constraintUpdate";
static const char __pyx_k_mj_defaultSolRefImp[] = "_mj_defaultSolRefImp";
static const char __pyx_k_mj_differentiatePos[] = "_mj_differentiatePos";
static const char __pyx_k_mj_makeEmptyFileVFS[] = "_mj_makeEmptyFileVFS";
static const char __pyx_k_mujoco_py_generated[] = "mujoco_py.generated";
static const char __pyx_k_mujoco_py_mjsim_pyx[] = "mujoco_py/mjsim.pyx";
static const char __pyx_k_window_should_close[] = "window_should_close";
static const char __pyx_k_wrap_mujoco_warning[] = "wrap_mujoco_warning";
static const char __pyx_k_CUDA_VISIBLE_DEVICES[] = "CUDA_VISIBLE_DEVICES";
static const char __pyx_k_Creating_window_glfw[] = "Creating window glfw";
static const char __pyx_k_MjBatchRenderer_read[] = "MjBatchRenderer.read";
static const char __pyx_k_current_batch_offset[] = "_current_batch_offset";
static const char __pyx_k_getElementsByTagName[] = "getElementsByTagName";
static const char __pyx_k_get_framebuffer_size[] = "get_framebuffer_size";
static const char __pyx_k_get_warning_callback[] = "get_warning_callback";
static const char __pyx_k_load_model_from_path[] = "load_model_from_path";
static const char __pyx_k_make_context_current[] = "make_context_current";
static const char __pyx_k_mj_projectConstraint[] = "_mj_projectConstraint";
static const char __pyx_k_mj_resetDataKeyframe[] = "_mj_resetDataKeyframe";
static const char __pyx_k_mj_rnePostConstraint[] = "_mj_rnePostConstraint";
static const char __pyx_k_mju_transformSpatial[] = "_mju_transformSpatial";
static const char __pyx_k_mjv_applyPerturbPose[] = "_mjv_applyPerturbPose";
static const char __pyx_k_s_Failed_to_load_MJB[] = "%s\nFailed to load MJB";
static const char __pyx_k_set_substep_callback[] = "set_substep_callback";
static const char __pyx_k_set_warning_callback[] = "set_warning_callback";
static const char __pyx_k_setup_opengl_context[] = "_setup_opengl_context";
static const char __pyx_k_strided_and_indirect[] = "<strided and indirect>";
static const char __pyx_k_CudaBufferMappedError[] = "CudaBufferMappedError";
static const char __pyx_k_MjBatchRenderer___del[] = "MjBatchRenderer.__del__";
static const char __pyx_k_MjBatchRenderer_unmap[] = "MjBatchRenderer.unmap";
static const char __pyx_k_MjRenderContextWindow[] = "MjRenderContextWindow";
static const char __pyx_k_contiguous_and_direct[] = "<contiguous and direct>";
static const char __pyx_k_insufficient_userdata[] = "insufficient userdata";
static const char __pyx_k_mj_objectAcceleration[] = "_mj_objectAcceleration";
static const char __pyx_k_mjv_applyPerturbForce[] = "_mjv_applyPerturbForce";
static const char __pyx_k_old_dyld_library_path[] = "old_dyld_library_path";
static const char __pyx_k_save_locals_str_array[] = "save.<locals>.str_array";
static const char __pyx_k_update_offscreen_size[] = "update_offscreen_size";
static const char __pyx_k_GlfwContext__init_glfw[] = "GlfwContext._init_glfw";
static const char __pyx_k_MemoryView_of_r_object[] = "<MemoryView of %r object>";
static const char __pyx_k_MjBatchRenderer___init[] = "MjBatchRenderer.__init__";
static const char __pyx_k_MjBatchRenderer_render[] = "MjBatchRenderer.render";
static const char __pyx_k_OffscreenOpenGLContext[] = "OffscreenOpenGLContext";
static const char __pyx_k_mj_referenceConstraint[] = "_mj_referenceConstraint";
static const char __pyx_k_prepare_render_context[] = "prepare_render_context";
static const char __pyx_k_Creating_offscreen_glfw[] = "Creating offscreen glfw";
static const char __pyx_k_Failed_to_import_pycuda[] = "Failed to import pycuda.";
static const char __pyx_k_MemoryView_of_r_at_0x_x[] = "<MemoryView of %r at 0x%x>";
static const char __pyx_k_contiguous_and_indirect[] = "<contiguous and indirect>";
static const char __pyx_k_cuda_buffers_are_mapped[] = "_cuda_buffers_are_mapped";
static const char __pyx_k_cuda_rgb_buffer_pointer[] = "cuda_rgb_buffer_pointer";
static const char __pyx_k_Cannot_index_with_type_s[] = "Cannot index with type '%s'";
static const char __pyx_k_CudaBufferNotMappedError[] = "CudaBufferNotMappedError";
static const char __pyx_k_MjBatchRendererException[] = "MjBatchRendererException";
static const char __pyx_k_MjRenderContextOffscreen[] = "MjRenderContextOffscreen";
static const char __pyx_k_MjSimState__flatten_dict[] = "MjSimState._flatten_dict";
static const char __pyx_k_No_body_with_id_d_exists[] = "No body with id %d exists.";
static const char __pyx_k_No_geom_with_id_d_exists[] = "No geom with id %d exists.";
static const char __pyx_k_No_site_with_id_d_exists[] = "No site with id %d exists.";
static const char __pyx_k_mujoco_py_mjsimstate_pyx[] = "mujoco_py/mjsimstate.pyx";
static const char __pyx_k_Failed_to_initialize_GLFW[] = "Failed to initialize GLFW";
static const char __pyx_k_Failed_to_set_buffer_size[] = "Failed to set buffer size";
static const char __pyx_k_Invalid_shape_in_axis_d_d[] = "Invalid shape in axis %d: %d.";
static const char __pyx_k_MjSimState_from_flattened[] = "MjSimState.from_flattened";
static const char __pyx_k_No_joint_with_id_d_exists[] = "No joint with id %d exists.";
static const char __pyx_k_No_light_with_id_d_exists[] = "No light with id %d exists.";
static const char __pyx_k_batch_offset_out_of_range[] = "batch_offset out of range";
static const char __pyx_k_cuda_depth_buffer_pointer[] = "cuda_depth_buffer_pointer";
static const char __pyx_k_names_must_all_be_strings[] = "names must all be strings";
static const char __pyx_k_GlfwContext__create_window[] = "GlfwContext._create_window";
static const char __pyx_k_MjBatchRenderer__init_cuda[] = "MjBatchRenderer._init_cuda";
static const char __pyx_k_MjBatchRenderer__read_cuda[] = "MjBatchRenderer._read_cuda";
static const char __pyx_k_MjSimState__unflatten_dict[] = "MjSimState._unflatten_dict";
static const char __pyx_k_No_camera_with_id_d_exists[] = "No camera with id %d exists.";
static const char __pyx_k_No_sensor_with_id_d_exists[] = "No sensor with id %d exists.";
static const char __pyx_k_Ran_out_of_geoms_maxgeom_d[] = "Ran out of geoms. maxgeom: %d";
static const char __pyx_k_wrap_mujoco_warning___exit[] = "wrap_mujoco_warning.__exit__";
static const char __pyx_k_Failed_to_initialize_OpenGL[] = "Failed to initialize OpenGL";
static const char __pyx_k_GlfwContext_get_buffer_size[] = "GlfwContext.get_buffer_size";
static const char __pyx_k_GlfwContext_set_buffer_size[] = "GlfwContext.set_buffer_size";
static const char __pyx_k_MjBatchRendererNotSupported[] = "MjBatchRendererNotSupported";
static const char __pyx_k_itemsize_0_for_cython_array[] = "itemsize <= 0 for cython.array";
static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
static const char __pyx_k_wrap_mujoco_warning___enter[] = "wrap_mujoco_warning.__enter__";
static const char __pyx_k_Failed_to_create_GLFW_window[] = "Failed to create GLFW window";
static const char __pyx_k_GlfwContext__set_window_size[] = "GlfwContext._set_window_size";
static const char __pyx_k_MjBatchRenderer__read_nocuda[] = "MjBatchRenderer._read_nocuda";
static const char __pyx_k_MjRenderContextWindow___init[] = "MjRenderContextWindow.__init__";
static const char __pyx_k_MjRenderContextWindow_render[] = "MjRenderContextWindow.render";
static const char __pyx_k_MjRenderContextWindow_window[] = "MjRenderContextWindow.window";
static const char __pyx_k_No_actuator_with_id_d_exists[] = "No actuator with id %d exists.";
static const char __pyx_k_No_userdata_with_id_d_exists[] = "No userdata with id %d exists.";
static const char __pyx_k_OffscreenOpenGLContext_close[] = "OffscreenOpenGLContext.close";
static const char __pyx_k_mjvGeom_doesn_t_have_field_s[] = "mjvGeom doesn't have field %s";
static const char __pyx_k_mujoco_py_opengl_context_pyx[] = "mujoco_py/opengl_context.pyx";
static const char __pyx_k_time_qpos_qvel_act_udd_state[] = "time qpos qvel act udd_state";
static const char __pyx_k_OffscreenOpenGLContext___init[] = "OffscreenOpenGLContext.__init__";
static const char __pyx_k_OpenGLContext_set_buffer_size[] = "OpenGLContext.set_buffer_size";
static const char __pyx_k_Value_has_incorrect_shape_s_s[] = "Value has incorrect shape %s: %s";
static const char __pyx_k_mujoco_py_mjbatchrenderer_pyx[] = "mujoco_py/mjbatchrenderer.pyx";
static const char __pyx_k_mujoco_py_mjrendercontext_pyx[] = "mujoco_py/mjrendercontext.pyx";
static const char __pyx_k_unable_to_allocate_array_data[] = "unable to allocate array data.";
static const char __pyx_k_Window_rendering_not_supported[] = "Window rendering not supported";
static const char __pyx_k_add_mujoco_bin_to_dyld_library[] = "_add_mujoco_bin_to_dyld_library_path";
static const char __pyx_k_s_Failed_to_load_XML_from_file[] = "%s\nFailed to load XML from file: %s. mj_loadXML error: %s";
static const char __pyx_k_strided_and_direct_or_indirect[] = "<strided and direct or indirect>";
static const char __pyx_k_Class_to_wrap_capturing_excepti[] = "\n    Class to wrap capturing exceptions raised during warning callbacks.\n    Use this to capture warnings in mujoco calls.  Example:\n        with wrap_mujoco_warning():\n            mj_somefunc()\n    ";
static const char __pyx_k_Keys_cannot_be_dropped_from_udd[] = "Keys cannot be dropped from udd_state between steps.";
static const char __pyx_k_MjBatchRenderer_cuda_rgb_buffer[] = "MjBatchRenderer.cuda_rgb_buffer_pointer";
static const char __pyx_k_Numpy_array_values_in_udd_state[] = "Numpy array values in udd_state must keep the same dimension across steps.";
static const char __pyx_k_Utility_class_for_rendering_int[] = "\n    Utility class for rendering into OpenGL Pixel Buffer Objects (PBOs),\n    which allows for accessing multiple rendered images in batch.\n\n    If used with CUDA (i.e. initialized with use_cuda=True), you need\n    to call map/unmap when accessing CUDA buffer pointer. This is to\n    ensure that all OpenGL instructions have completed:\n\n        renderer = MjBatchRenderer(100, 100, use_cuda=True)\n        renderer.render(sim)\n\n        renderer.map()\n        image = renderer.read()\n        renderer.unmap()\n    ";
static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import";
static const char __pyx_k_self_ptr_cannot_be_converted_to[] = "self.ptr cannot be converted to a Python object for pickling";
static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)";
static const char __pyx_k_Buffer_view_does_not_expose_stri[] = "Buffer view does not expose strides";
static const char __pyx_k_CUDA_buffers_must_be_mapped_befo[] = "CUDA buffers must be mapped before reading";
static const char __pyx_k_CUDA_buffers_must_be_unmapped_be[] = "CUDA buffers must be unmapped before calling render.";
static const char __pyx_k_Can_only_create_a_buffer_that_is[] = "Can only create a buffer that is contiguous in memory.";
static const char __pyx_k_Depth_not_enabled_Use_depth_True[] = "Depth not enabled. Use depth=True on initialization.";
static const char __pyx_k_Empty_shape_tuple_for_cython_arr[] = "Empty shape tuple for cython.array";
static const char __pyx_k_Every_value_in_udd_state_must_be[] = "Every value in udd_state must be either a number or a numpy array";
static const char __pyx_k_Failed_to_load_XML_file_s_mj_loa[] = "Failed to load XML file: %s. mj_loadXML error: %s";
static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd";
static const char __pyx_k_GlfwContext__glfw_error_callback[] = "GlfwContext._glfw_error_callback";
static const char __pyx_k_GlfwContext_make_context_current[] = "GlfwContext.make_context_current";
static const char __pyx_k_Incompatible_checksums_s_vs_0xb0[] = "Incompatible checksums (%s vs 0xb068931 = (name))";
static const char __pyx_k_Indirect_dimensions_not_supporte[] = "Indirect dimensions not supported";
static const char __pyx_k_Invalid_mode_expected_c_or_fortr[] = "Invalid mode, expected 'c' or 'fortran', got %s";
static const char __pyx_k_Keys_cannot_be_added_to_udd_stat[] = "Keys cannot be added to udd_state between steps.";
static const char __pyx_k_Mapped_CUDA_depth_buffer_pointer[] = "Mapped CUDA depth buffer pointer %d doesn't match old pointer %d";
static const char __pyx_k_Mapped_CUDA_rgb_buffer_pointer_d[] = "Mapped CUDA rgb buffer pointer %d doesn't match old pointer %d";
static const char __pyx_k_MjBatchRenderer_cuda_depth_buffe[] = "MjBatchRenderer.cuda_depth_buffer_pointer";
static const char __pyx_k_MjBatchRenderer_currently_only_s[] = "MjBatchRenderer currently only supported with EGL-backedrendering context.";
static const char __pyx_k_MjBatchRenderer_prepare_render_c[] = "MjBatchRenderer.prepare_render_context";
static const char __pyx_k_MjRenderContextOffscreen___cinit[] = "MjRenderContextOffscreen.__cinit__";
static const char __pyx_k_Mode_must_be_either_window_or_of[] = "Mode must be either 'window' or 'offscreen'.";
static const char __pyx_k_No_actuator_with_name_s_exists_A[] = "No \"actuator\" with name %s exists. Available \"actuator\" names = %s.";
static const char __pyx_k_No_body_with_name_s_exists_Avail[] = "No \"body\" with name %s exists. Available \"body\" names = %s.";
static const char __pyx_k_No_camera_with_name_s_exists_Ava[] = "No \"camera\" with name %s exists. Available \"camera\" names = %s.";
static const char __pyx_k_No_geom_with_name_s_exists_Avail[] = "No \"geom\" with name %s exists. Available \"geom\" names = %s.";
static const char __pyx_k_No_joint_with_name_s_exists_Avai[] = "No \"joint\" with name %s exists. Available \"joint\" names = %s.";
static const char __pyx_k_No_light_with_name_s_exists_Avai[] = "No \"light\" with name %s exists. Available \"light\" names = %s.";
static const char __pyx_k_No_sensor_with_name_s_exists_Ava[] = "No \"sensor\" with name %s exists. Available \"sensor\" names = %s.";
static const char __pyx_k_No_site_with_name_s_exists_Avail[] = "No \"site\" with name %s exists. Available \"site\" names = %s.";
static const char __pyx_k_No_userdata_with_name_s_exists_A[] = "No \"userdata\" with name %s exists. Available \"userdata\" names = %s.";
static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported";
static const char __pyx_k_OffscreenOpenGLContext_make_cont[] = "OffscreenOpenGLContext.make_context_current";
static const char __pyx_k_OffscreenOpenGLContext_set_buffe[] = "OffscreenOpenGLContext.set_buffer_size";
static const char __pyx_k_Offscreen_rendering_not_supporte[] = "Offscreen rendering not supported";
static const char __pyx_k_Only_GlfwContext_supported_for_w[] = "Only GlfwContext supported for windowed rendering";
static const char __pyx_k_Only_label_is_a_string_in_mjvGeo[] = "Only label is a string in mjvGeom.";
static const char __pyx_k_OpenGLContext_make_context_curre[] = "OpenGLContext.make_context_current";
static const char __pyx_k_Out_of_bounds_on_buffer_access_a[] = "Out of bounds on buffer access (axis %d)";
static const char __pyx_k_PyMjModel__extract_mj_names_loca[] = "PyMjModel._extract_mj_names.<locals>.genexpr";
static const char __pyx_k_Represents_a_snapshot_of_the_sim[] = "Represents a snapshot of the simulator's state.\n\n    This includes time, qpos, qvel, act, and udd_state.\n    ";
static const char __pyx_k_Unable_to_convert_item_to_object[] = "Unable to convert item to object";
static const char __pyx_k_Unrecognized_extension_for_s_Exp[] = "Unrecognized extension for %s. Expected .xml or .mjb";
static const char __pyx_k_Unsupported_format_Valid_ones_ar[] = "Unsupported format. Valid ones are 'xml' and 'mjb'";
static const char __pyx_k_active_contacts_efc_pos_should_b[] = "active_contacts_efc_pos should be used instead of efc_pos";
static const char __pyx_k_body_xmat_should_be_used_instead[] = "body_xmat should be used instead of xmat";
static const char __pyx_k_body_xpos_should_be_used_instead[] = "body_xpos should be used instead of xpos";
static const char __pyx_k_body_xquat_should_be_used_instea[] = "body_xquat should be used instead of xquat";
static const char __pyx_k_get_body_ximat_should_be_used_in[] = "get_body_ximat should be used instead of get_ximat";
static const char __pyx_k_get_body_xipos_should_be_used_in[] = "get_body_xipos should be used instead of get_xipos";
static const char __pyx_k_get_body_xmat_should_be_used_ins[] = "get_body_xmat should be used instead of get_xmat";
static const char __pyx_k_get_body_xpos_should_be_used_ins[] = "get_body_xpos should be used instead of get_xpos";
static const char __pyx_k_get_body_xquat_should_be_used_in[] = "get_body_xquat should be used instead of get_xquat";
static const char __pyx_k_get_camera_xmat_should_be_used_i[] = "get_camera_xmat should be used instead of get_cam_xmat";
static const char __pyx_k_get_camera_xpos_should_be_used_i[] = "get_camera_xpos should be used instead of get_cam_xpos";
static const char __pyx_k_get_joint_xanchor_should_be_used[] = "get_joint_xanchor should be used instead of get_xanchor";
static const char __pyx_k_get_joint_xaxis_should_be_used_i[] = "get_joint_xaxis should be used instead of get_xaxis";
static const char __pyx_k_get_sensor_should_be_used_instea[] = "get_sensor should be used instead of get_sensordata";
static const char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents in dimension %d (got %d and %d)";
static const char __pyx_k_mjvGeom_has_attr_but_type_is_inv[] = "mjvGeom has attr {} but type {} is invalid";
static const char __pyx_k_mujoco_py_generated_wrappers_pxi[] = "mujoco_py/generated/wrappers.pxi";
static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous";
static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import";
static const char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides.";
static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short.";
static PyObject *__pyx_n_s_ABCMeta;
static PyObject *__pyx_n_s_ASCII;
static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri;
static PyObject *__pyx_n_s_CAMERA_FIXED;
static PyObject *__pyx_n_s_CAMERA_FREE;
static PyObject *__pyx_n_s_CAT_DECOR;
static PyObject *__pyx_n_u_CUDA_VISIBLE_DEVICES;
static PyObject *__pyx_kp_u_CUDA_buffers_must_be_mapped_befo;
static PyObject *__pyx_kp_u_CUDA_buffers_must_be_unmapped_be;
static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is;
static PyObject *__pyx_kp_s_Cannot_index_with_type_s;
static PyObject *__pyx_kp_s_Class_to_wrap_capturing_excepti;
static PyObject *__pyx_n_s_Context;
static PyObject *__pyx_kp_u_Creating_offscreen_glfw;
static PyObject *__pyx_kp_u_Creating_window_glfw;
static PyObject *__pyx_n_s_CudaBufferMappedError;
static PyObject *__pyx_n_s_CudaBufferNotMappedError;
static PyObject *__pyx_n_s_CudaNotEnabledError;
static PyObject *__pyx_n_s_DOUBLEBUFFER;
static PyObject *__pyx_n_u_DYLD_LIBRARY_PATH;
static PyObject *__pyx_kp_u_Depth_not_enabled_Use_depth_True;
static PyObject *__pyx_n_s_Device;
static PyObject *__pyx_n_s_Ellipsis;
static PyObject *__pyx_kp_s_Empty_shape_tuple_for_cython_arr;
static PyObject *__pyx_kp_u_Every_value_in_udd_state_must_be;
static PyObject *__pyx_n_s_FONTSCALE_150;
static PyObject *__pyx_kp_u_Failed_to_create_GLFW_window;
static PyObject *__pyx_kp_u_Failed_to_import_pycuda;
static PyObject *__pyx_kp_u_Failed_to_initialize_GLFW;
static PyObject *__pyx_kp_u_Failed_to_initialize_OpenGL;
static PyObject *__pyx_kp_u_Failed_to_load_XML_file_s_mj_loa;
static PyObject *__pyx_kp_u_Failed_to_save_XML;
static PyObject *__pyx_kp_u_Failed_to_set_buffer_size;
static PyObject *__pyx_kp_u_Format_string_allocated_too_shor;
static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2;
static PyObject *__pyx_n_s_GEOM_BOX;
static PyObject *__pyx_n_s_GLFW_IS_INITIALIZED;
static PyObject *__pyx_kp_u_GLFW_error_code_d_s;
static PyObject *__pyx_kp_u_GLFW_not_installed;
static PyObject *__pyx_n_u_GPUS;
static PyObject *__pyx_n_s_GlfwContext;
static PyObject *__pyx_n_s_GlfwContext___init;
static PyObject *__pyx_n_s_GlfwContext__create_window;
static PyObject *__pyx_n_s_GlfwContext__glfw_error_callback;
static PyObject *__pyx_n_s_GlfwContext__init_glfw;
static PyObject *__pyx_n_s_GlfwContext__set_window_size;
static PyObject *__pyx_n_s_GlfwContext_get_buffer_size;
static PyObject *__pyx_n_s_GlfwContext_make_context_current;
static PyObject *__pyx_n_s_GlfwContext_set_buffer_size;
static PyObject *__pyx_n_s_GlfwError;
static PyObject *__pyx_n_s_INIT_HEIGHT;
static PyObject *__pyx_n_s_INIT_WIDTH;
static PyObject *__pyx_n_s_ImportError;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xb0;
static PyObject *__pyx_n_s_IndexError;
static PyObject *__pyx_kp_s_Indirect_dimensions_not_supporte;
static PyObject *__pyx_kp_s_Invalid_mode_expected_c_or_fortr;
static PyObject *__pyx_kp_s_Invalid_shape_in_axis_d_d;
static PyObject *__pyx_kp_u_Keys_cannot_be_added_to_udd_stat;
static PyObject *__pyx_kp_u_Keys_cannot_be_dropped_from_udd;
static PyObject *__pyx_n_s_Kp;
static PyObject *__pyx_n_s_Kv;
static PyObject *__pyx_n_s_Lock;
static PyObject *__pyx_n_s_M;
static PyObject *__pyx_kp_u_Mapped_CUDA_depth_buffer_pointer;
static PyObject *__pyx_kp_u_Mapped_CUDA_rgb_buffer_pointer_d;
static PyObject *__pyx_n_s_MemoryError;
static PyObject *__pyx_kp_s_MemoryView_of_r_at_0x_x;
static PyObject *__pyx_kp_s_MemoryView_of_r_object;
static PyObject *__pyx_n_s_MjBatchRenderer;
static PyObject *__pyx_n_s_MjBatchRendererException;
static PyObject *__pyx_n_s_MjBatchRendererNotSupported;
static PyObject *__pyx_n_s_MjBatchRenderer___del;
static PyObject *__pyx_n_s_MjBatchRenderer___init;
static PyObject *__pyx_n_s_MjBatchRenderer__init_cuda;
static PyObject *__pyx_n_s_MjBatchRenderer__read_cuda;
static PyObject *__pyx_n_s_MjBatchRenderer__read_nocuda;
static PyObject *__pyx_n_s_MjBatchRenderer_cuda_depth_buffe;
static PyObject *__pyx_n_s_MjBatchRenderer_cuda_rgb_buffer;
static PyObject *__pyx_kp_u_MjBatchRenderer_currently_only_s;
static PyObject *__pyx_n_s_MjBatchRenderer_map;
static PyObject *__pyx_n_s_MjBatchRenderer_prepare_render_c;
static PyObject *__pyx_n_s_MjBatchRenderer_read;
static PyObject *__pyx_n_s_MjBatchRenderer_render;
static PyObject *__pyx_n_s_MjBatchRenderer_unmap;
static PyObject *__pyx_n_s_MjRenderContextOffscreen;
static PyObject *__pyx_n_s_MjRenderContextOffscreen___cinit;
static PyObject *__pyx_n_s_MjRenderContextWindow;
static PyObject *__pyx_n_s_MjRenderContextWindow___init;
static PyObject *__pyx_n_s_MjRenderContextWindow_render;
static PyObject *__pyx_n_s_MjRenderContextWindow_window;
static PyObject *__pyx_n_s_MjSimState;
static PyObject *__pyx_n_s_MjSimState___eq;
static PyObject *__pyx_n_s_MjSimState___ne;
static PyObject *__pyx_n_s_MjSimState__flatten_dict;
static PyObject *__pyx_n_s_MjSimState__unflatten_dict;
static PyObject *__pyx_n_s_MjSimState_flatten;
static PyObject *__pyx_n_s_MjSimState_from_flattened;
static PyObject *__pyx_n_s_MjSim_render_lock;
static PyObject *__pyx_n_s_MjViewer;
static PyObject *__pyx_kp_u_Mode_must_be_either_window_or_of;
static PyObject *__pyx_n_s_N;
static PyObject *__pyx_n_s_NamedTemporaryFile;
static PyObject *__pyx_kp_u_No_actuator_with_id_d_exists;
static PyObject *__pyx_kp_u_No_actuator_with_name_s_exists_A;
static PyObject *__pyx_kp_u_No_body_with_id_d_exists;
static PyObject *__pyx_kp_u_No_body_with_name_s_exists_Avail;
static PyObject *__pyx_kp_u_No_camera_with_id_d_exists;
static PyObject *__pyx_kp_u_No_camera_with_name_s_exists_Ava;
static PyObject *__pyx_kp_u_No_geom_with_id_d_exists;
static PyObject *__pyx_kp_u_No_geom_with_name_s_exists_Avail;
static PyObject *__pyx_kp_u_No_joint_with_id_d_exists;
static PyObject *__pyx_kp_u_No_joint_with_name_s_exists_Avai;
static PyObject *__pyx_kp_u_No_light_with_id_d_exists;
static PyObject *__pyx_kp_u_No_light_with_name_s_exists_Avai;
static PyObject *__pyx_kp_u_No_sensor_with_id_d_exists;
static PyObject *__pyx_kp_u_No_sensor_with_name_s_exists_Ava;
static PyObject *__pyx_kp_u_No_site_with_id_d_exists;
static PyObject *__pyx_kp_u_No_site_with_name_s_exists_Avail;
static PyObject *__pyx_kp_u_No_userdata_with_id_d_exists;
static PyObject *__pyx_kp_u_No_userdata_with_name_s_exists_A;
static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor;
static PyObject *__pyx_n_s_NotImplemented;
static PyObject *__pyx_n_s_NotImplementedError;
static PyObject *__pyx_n_s_Number;
static PyObject *__pyx_kp_u_Numpy_array_values_in_udd_state;
static PyObject *__pyx_n_b_O;
static PyObject *__pyx_n_s_OBJ_UNKNOWN;
static PyObject *__pyx_n_s_OffscreenOpenGLContext;
static PyObject *__pyx_n_s_OffscreenOpenGLContext___init;
static PyObject *__pyx_n_s_OffscreenOpenGLContext_close;
static PyObject *__pyx_n_s_OffscreenOpenGLContext_make_cont;
static PyObject *__pyx_n_s_OffscreenOpenGLContext_set_buffe;
static PyObject *__pyx_kp_u_Offscreen_rendering_not_supporte;
static PyObject *__pyx_kp_u_Only_GlfwContext_supported_for_w;
static PyObject *__pyx_kp_u_Only_label_is_a_string_in_mjvGeo;
static PyObject *__pyx_n_s_OpenGLContext;
static PyObject *__pyx_n_s_OpenGLContext_make_context_curre;
static PyObject *__pyx_n_s_OpenGLContext_set_buffer_size;
static PyObject *__pyx_kp_s_Out_of_bounds_on_buffer_access_a;
static PyObject *__pyx_n_s_OverflowError;
static PyObject *__pyx_n_s_PickleError;
static PyObject *__pyx_n_s_PyMjModel__extract_mj_names_loca;
static PyObject *__pyx_kp_u_Ran_out_of_geoms_maxgeom_d;
static PyObject *__pyx_n_s_RegisteredBuffer;
static PyObject *__pyx_kp_s_Represents_a_snapshot_of_the_sim;
static PyObject *__pyx_n_s_RuntimeError;
static PyObject *__pyx_n_s_SAMPLES;
static PyObject *__pyx_n_u_SimStateBase;
static PyObject *__pyx_kp_b_T;
static PyObject *__pyx_n_s_TemporaryDirectory;
static PyObject *__pyx_n_s_TypeError;
static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object;
static PyObject *__pyx_kp_u_Unrecognized_extension_for_s_Exp;
static PyObject *__pyx_kp_u_Unsupported_format_Valid_ones_ar;
static PyObject *__pyx_kp_s_Utility_class_for_rendering_int;
static PyObject *__pyx_n_s_VISIBLE;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_kp_u_Value_has_incorrect_shape_s_s;
static PyObject *__pyx_n_s_View_MemoryView;
static PyObject *__pyx_kp_u_Window_rendering_not_supported;
static PyObject *__pyx_kp_u__107;
static PyObject *__pyx_kp_u__120;
static PyObject *__pyx_kp_u__123;
static PyObject *__pyx_kp_b__171;
static PyObject *__pyx_kp_b__172;
static PyObject *__pyx_kp_b__173;
static PyObject *__pyx_n_s__611;
static PyObject *__pyx_n_s__664;
static PyObject *__pyx_kp_b__83;
static PyObject *__pyx_kp_u__83;
static PyObject *__pyx_kp_u__85;
static PyObject *__pyx_n_s_a;
static PyObject *__pyx_n_s_a0;
static PyObject *__pyx_n_s_a1;
static PyObject *__pyx_n_s_a2;
static PyObject *__pyx_n_s_abc;
static PyObject *__pyx_n_s_abstractmethod;
static PyObject *__pyx_n_s_act;
static PyObject *__pyx_n_u_act;
static PyObject *__pyx_n_s_action;
static PyObject *__pyx_kp_u_active_contacts_efc_pos_should_b;
static PyObject *__pyx_n_s_add_marker_to_scene;
static PyObject *__pyx_n_s_add_mujoco_bin_to_dyld_library;
static PyObject *__pyx_n_s_add_render_context;
static PyObject *__pyx_n_s_allocate_buffer;
static PyObject *__pyx_n_s_angle;
static PyObject *__pyx_n_s_answer;
static PyObject *__pyx_n_s_appendChild;
static PyObject *__pyx_n_s_args;
static PyObject *__pyx_n_s_arr;
static PyObject *__pyx_n_s_array;
static PyObject *__pyx_n_s_array_equal;
static PyObject *__pyx_n_s_asarray;
static PyObject *__pyx_n_s_aspectratio;
static PyObject *__pyx_n_s_axis;
static PyObject *__pyx_n_s_b;
static PyObject *__pyx_n_s_b0;
static PyObject *__pyx_n_s_b1;
static PyObject *__pyx_n_s_b2;
static PyObject *__pyx_kp_u_bad_userdata_names;
static PyObject *__pyx_n_s_base;
static PyObject *__pyx_n_s_batch_offset;
static PyObject *__pyx_kp_u_batch_offset_out_of_range;
static PyObject *__pyx_n_s_batch_size;
static PyObject *__pyx_n_s_batch_size_2;
static PyObject *__pyx_n_u_bin;
static PyObject *__pyx_n_s_bin_path;
static PyObject *__pyx_n_s_body;
static PyObject *__pyx_n_s_body_jacp;
static PyObject *__pyx_n_s_body_jacr;
static PyObject *__pyx_n_s_body_mocapid;
static PyObject *__pyx_n_s_body_name2id;
static PyObject *__pyx_kp_u_body_xmat_should_be_used_instead;
static PyObject *__pyx_kp_u_body_xpos_should_be_used_instead;
static PyObject *__pyx_kp_u_body_xquat_should_be_used_instea;
static PyObject *__pyx_n_s_bottom;
static PyObject *__pyx_n_s_buffer;
static PyObject *__pyx_n_s_buffer_sz;
static PyObject *__pyx_n_s_build_callback_fn;
static PyObject *__pyx_n_s_c;
static PyObject *__pyx_n_u_c;
static PyObject *__pyx_n_s_c1;
static PyObject *__pyx_n_s_c2;
static PyObject *__pyx_n_s_cam;
static PyObject *__pyx_n_s_camera_id;
static PyObject *__pyx_n_s_camera_name;
static PyObject *__pyx_n_s_camera_name2id;
static PyObject *__pyx_n_s_catmask;
static PyObject *__pyx_n_s_childNodes;
static PyObject *__pyx_n_s_cinit;
static PyObject *__pyx_n_s_class;
static PyObject *__pyx_n_s_cline_in_traceback;
static PyObject *__pyx_n_s_close;
static PyObject *__pyx_n_s_collections;
static PyObject *__pyx_n_s_con;
static PyObject *__pyx_n_s_concatenate;
static PyObject *__pyx_n_s_const;
static PyObject *__pyx_kp_s_contiguous_and_direct;
static PyObject *__pyx_kp_s_contiguous_and_indirect;
static PyObject *__pyx_n_s_copy;
static PyObject *__pyx_n_s_cost;
static PyObject *__pyx_n_s_createElement;
static PyObject *__pyx_n_s_create_window;
static PyObject *__pyx_n_s_create_window_2;
static PyObject *__pyx_n_s_ctrl;
static PyObject *__pyx_n_s_cuda_buffers_are_mapped;
static PyObject *__pyx_n_s_cuda_context;
static PyObject *__pyx_n_s_cuda_depth_buf_size;
static PyObject *__pyx_n_s_cuda_depth_buffer_pointer;
static PyObject *__pyx_n_s_cuda_depth_mapping;
static PyObject *__pyx_n_s_cuda_depth_pbo;
static PyObject *__pyx_n_s_cuda_depth_ptr;
static PyObject *__pyx_n_s_cuda_rgb_buf_size;
static PyObject *__pyx_n_s_cuda_rgb_buffer_pointer;
static PyObject *__pyx_n_s_cuda_rgb_mapping;
static PyObject *__pyx_n_s_cuda_rgb_pbo;
static PyObject *__pyx_n_s_cuda_rgb_ptr;
static PyObject *__pyx_n_s_current_batch_offset;
static PyObject *__pyx_n_s_d;
static PyObject *__pyx_n_u_darwin;
static PyObject *__pyx_n_s_data;
static PyObject *__pyx_n_s_deepcopy;
static PyObject *__pyx_n_s_del;
static PyObject *__pyx_n_s_delete;
static PyObject *__pyx_n_s_depth;
static PyObject *__pyx_n_s_depth_2;
static PyObject *__pyx_n_s_depth_arr;
static PyObject *__pyx_n_s_depth_view;
static PyObject *__pyx_n_s_description;
static PyObject *__pyx_n_s_dest;
static PyObject *__pyx_n_s_detach;
static PyObject *__pyx_n_s_device;
static PyObject *__pyx_n_s_device_id;
static PyObject *__pyx_n_s_device_id_2;
static PyObject *__pyx_n_s_device_ptr_and_size;
static PyObject *__pyx_n_s_diag;
static PyObject *__pyx_n_s_dict;
static PyObject *__pyx_n_s_dim;
static PyObject *__pyx_n_s_directory;
static PyObject *__pyx_n_s_discover_mujoco;
static PyObject *__pyx_n_s_distance;
static PyObject *__pyx_n_s_doc;
static PyObject *__pyx_n_s_dot;
static PyObject *__pyx_n_s_drv;
static PyObject *__pyx_n_s_dst;
static PyObject *__pyx_n_s_dt;
static PyObject *__pyx_n_s_dtype;
static PyObject *__pyx_n_s_dtype_is_object;
static PyObject *__pyx_n_s_eigval;
static PyObject *__pyx_n_s_eigvec;
static PyObject *__pyx_n_s_empty;
static PyObject *__pyx_n_s_encode;
static PyObject *__pyx_n_s_enter;
static PyObject *__pyx_n_s_enumerate;
static PyObject *__pyx_n_s_environ;
static PyObject *__pyx_n_s_eq;
static PyObject *__pyx_n_s_error;
static PyObject *__pyx_n_s_error_code;
static PyObject *__pyx_n_s_error_sz;
static PyObject *__pyx_n_s_errstr;
static PyObject *__pyx_n_s_exit;
static PyObject *__pyx_n_s_extent;
static PyObject *__pyx_n_s_eye;
static PyObject *__pyx_n_s_f;
static PyObject *__pyx_n_s_fig;
static PyObject *__pyx_n_s_file;
static PyObject *__pyx_n_s_filename;
static PyObject *__pyx_n_s_filesize;
static PyObject *__pyx_n_s_fixedcamid;
static PyObject *__pyx_n_s_flags;
static PyObject *__pyx_n_s_flat_udd_state;
static PyObject *__pyx_n_s_flatten;
static PyObject *__pyx_n_s_flatten_dict;
static PyObject *__pyx_n_s_flg_acc;
static PyObject *__pyx_n_s_flg_actrange;
static PyObject *__pyx_n_s_flg_color;
static PyObject *__pyx_n_s_flg_coneHessian;
static PyObject *__pyx_n_s_flg_depth;
static PyObject *__pyx_n_s_flg_force;
static PyObject *__pyx_n_s_flg_html;
static PyObject *__pyx_n_s_flg_local;
static PyObject *__pyx_n_s_flg_pad;
static PyObject *__pyx_n_s_flg_paused;
static PyObject *__pyx_n_s_flg_plus;
static PyObject *__pyx_n_s_float32;
static PyObject *__pyx_n_s_flush;
static PyObject *__pyx_n_s_font;
static PyObject *__pyx_n_s_fontscale;
static PyObject *__pyx_n_s_force;
static PyObject *__pyx_n_s_format;
static PyObject *__pyx_n_s_fortran;
static PyObject *__pyx_n_u_fortran;
static PyObject *__pyx_n_s_forward;
static PyObject *__pyx_n_s_fp;
static PyObject *__pyx_n_s_framebuffer;
static PyObject *__pyx_n_s_from_device;
static PyObject *__pyx_n_s_from_flattened;
static PyObject *__pyx_n_s_genexpr;
static PyObject *__pyx_n_s_geom;
static PyObject *__pyx_n_s_geom_jacp;
static PyObject *__pyx_n_s_geom_jacr;
static PyObject *__pyx_n_s_geom_name2id;
static PyObject *__pyx_n_s_geom_xpos;
static PyObject *__pyx_n_s_geomid;
static PyObject *__pyx_n_s_geomtype;
static PyObject *__pyx_n_s_getElementsByTagName;
static PyObject *__pyx_n_s_get_body_jacp;
static PyObject *__pyx_n_s_get_body_jacr;
static PyObject *__pyx_kp_u_get_body_ximat_should_be_used_in;
static PyObject *__pyx_kp_u_get_body_xipos_should_be_used_in;
static PyObject *__pyx_kp_u_get_body_xmat_should_be_used_ins;
static PyObject *__pyx_kp_u_get_body_xpos_should_be_used_ins;
static PyObject *__pyx_kp_u_get_body_xquat_should_be_used_in;
static PyObject *__pyx_n_s_get_buffer_size;
static PyObject *__pyx_kp_u_get_camera_xmat_should_be_used_i;
static PyObject *__pyx_kp_u_get_camera_xpos_should_be_used_i;
static PyObject *__pyx_n_s_get_framebuffer_size;
static PyObject *__pyx_n_s_get_geom_jacp;
static PyObject *__pyx_n_s_get_geom_jacr;
static PyObject *__pyx_n_s_get_joint_qpos_addr;
static PyObject *__pyx_n_s_get_joint_qvel_addr;
static PyObject *__pyx_kp_u_get_joint_xanchor_should_be_used;
static PyObject *__pyx_kp_u_get_joint_xaxis_should_be_used_i;
static PyObject *__pyx_n_s_get_mjb;
static PyObject *__pyx_n_s_get_primary_monitor;
static PyObject *__pyx_kp_u_get_sensor_should_be_used_instea;
static PyObject *__pyx_n_s_get_site_jacp;
static PyObject *__pyx_n_s_get_site_jacr;
static PyObject *__pyx_n_s_get_video_mode;
static PyObject *__pyx_n_s_get_warning_callback;
static PyObject *__pyx_n_s_get_xml;
static PyObject *__pyx_n_s_getenv;
static PyObject *__pyx_n_s_getstate;
static PyObject *__pyx_n_s_glfw;
static PyObject *__pyx_n_u_glfw;
static PyObject *__pyx_n_s_glfw_error_callback;
static PyObject *__pyx_kp_s_got_differing_extents_in_dimensi;
static PyObject *__pyx_n_s_gridpos;
static PyObject *__pyx_n_s_headpos;
static PyObject *__pyx_n_s_height;
static PyObject *__pyx_n_s_height_2;
static PyObject *__pyx_n_s_hfieldid;
static PyObject *__pyx_n_s_i;
static PyObject *__pyx_n_s_id;
static PyObject *__pyx_n_s_idx;
static PyObject *__pyx_n_s_idx_act;
static PyObject *__pyx_n_s_idx_qpos;
static PyObject *__pyx_n_s_idx_qvel;
static PyObject *__pyx_n_s_idx_time;
static PyObject *__pyx_n_s_idx_udd;
static PyObject *__pyx_n_s_image;
static PyObject *__pyx_n_s_import;
static PyObject *__pyx_n_s_indent;
static PyObject *__pyx_n_s_index;
static PyObject *__pyx_n_u_inertial;
static PyObject *__pyx_n_s_info;
static PyObject *__pyx_n_s_init;
static PyObject *__pyx_n_s_init_2;
static PyObject *__pyx_n_s_init_camera;
static PyObject *__pyx_n_s_init_cuda;
static PyObject *__pyx_n_s_init_glfw;
static PyObject *__pyx_n_s_init_height;
static PyObject *__pyx_n_s_init_width;
static PyObject *__pyx_kp_u_insufficient_userdata;
static PyObject *__pyx_n_s_int32;
static PyObject *__pyx_n_s_int64;
static PyObject *__pyx_kp_u_invalid;
static PyObject *__pyx_n_s_items;
static PyObject *__pyx_n_s_itemsize;
static PyObject *__pyx_kp_s_itemsize_0_for_cython_array;
static PyObject *__pyx_n_s_jac;
static PyObject *__pyx_n_s_jacAxis;
static PyObject *__pyx_n_s_jacPoint;
static PyObject *__pyx_n_s_jacp;
static PyObject *__pyx_n_s_jacr;
static PyObject *__pyx_n_s_jar;
static PyObject *__pyx_n_s_jnt_dofadr;
static PyObject *__pyx_n_s_jnt_qposadr;
static PyObject *__pyx_n_s_jnt_type;
static PyObject *__pyx_n_s_join;
static PyObject *__pyx_n_s_joint_name2id;
static PyObject *__pyx_n_s_k;
static PyObject *__pyx_n_s_keep_inertials;
static PyObject *__pyx_n_s_key;
static PyObject *__pyx_n_u_key;
static PyObject *__pyx_n_u_keyframe;
static PyObject *__pyx_n_s_keys;
static PyObject *__pyx_n_u_label;
static PyObject *__pyx_n_s_left;
static PyObject *__pyx_n_s_len;
static PyObject *__pyx_n_s_len0;
static PyObject *__pyx_n_s_light_name2id;
static PyObject *__pyx_n_s_list;
static PyObject *__pyx_n_s_lmax;
static PyObject *__pyx_n_s_lmin;
static PyObject *__pyx_n_s_load_model_from_mjb;
static PyObject *__pyx_n_s_load_model_from_path;
static PyObject *__pyx_n_s_load_model_from_xml;
static PyObject *__pyx_n_s_logging;
static PyObject *__pyx_n_s_lookat;
static PyObject *__pyx_n_s_m;
static PyObject *__pyx_n_s_main;
static PyObject *__pyx_n_s_make_context;
static PyObject *__pyx_n_s_make_context_current;
static PyObject *__pyx_n_s_map;
static PyObject *__pyx_n_s_mat;
static PyObject *__pyx_n_s_mat1;
static PyObject *__pyx_n_s_mat2;
static PyObject *__pyx_n_s_maxgeom;
static PyObject *__pyx_n_s_median;
static PyObject *__pyx_n_s_memview;
static PyObject *__pyx_n_s_meshid;
static PyObject *__pyx_n_s_metaclass;
static PyObject *__pyx_n_s_minidom;
static PyObject *__pyx_n_s_mj_Euler;
static PyObject *__pyx_n_s_mj_RungeKutta;
static PyObject *__pyx_n_s_mj_activate;
static PyObject *__pyx_n_s_mj_addContact;
static PyObject *__pyx_n_s_mj_addFileVFS;
static PyObject *__pyx_n_s_mj_applyFT;
static PyObject *__pyx_n_s_mj_camlight;
static PyObject *__pyx_n_s_mj_certAnswer;
static PyObject *__pyx_n_s_mj_certCheck;
static PyObject *__pyx_n_s_mj_certQuestion;
static PyObject *__pyx_n_s_mj_checkAcc;
static PyObject *__pyx_n_s_mj_checkPos;
static PyObject *__pyx_n_s_mj_checkVel;
static PyObject *__pyx_n_s_mj_collision;
static PyObject *__pyx_n_s_mj_comPos;
static PyObject *__pyx_n_s_mj_comVel;
static PyObject *__pyx_n_s_mj_compareFwdInv;
static PyObject *__pyx_n_s_mj_constraintUpdate;
static PyObject *__pyx_n_s_mj_contactForce;
static PyObject *__pyx_n_s_mj_copyModel;
static PyObject *__pyx_n_s_mj_crb;
static PyObject *__pyx_n_s_mj_deactivate;
static PyObject *__pyx_n_s_mj_defaultOption;
static PyObject *__pyx_n_s_mj_defaultSolRefImp;
static PyObject *__pyx_n_s_mj_defaultVFS;
static PyObject *__pyx_n_s_mj_defaultVisual;
static PyObject *__pyx_n_s_mj_deleteData;
static PyObject *__pyx_n_s_mj_deleteFileVFS;
static PyObject *__pyx_n_s_mj_deleteModel;
static PyObject *__pyx_n_s_mj_deleteVFS;
static PyObject *__pyx_n_s_mj_differentiatePos;
static PyObject *__pyx_n_s_mj_energyPos;
static PyObject *__pyx_n_s_mj_energyVel;
static PyObject *__pyx_n_s_mj_factorM;
static PyObject *__pyx_n_s_mj_findFileVFS;
static PyObject *__pyx_n_s_mj_forward;
static PyObject *__pyx_n_s_mj_forwardSkip;
static PyObject *__pyx_n_s_mj_freeLastXML;
static PyObject *__pyx_n_s_mj_fullM;
static PyObject *__pyx_n_s_mj_fwdAcceleration;
static PyObject *__pyx_n_s_mj_fwdActuation;
static PyObject *__pyx_n_s_mj_fwdConstraint;
static PyObject *__pyx_n_s_mj_fwdPosition;
static PyObject *__pyx_n_s_mj_fwdVelocity;
static PyObject *__pyx_n_s_mj_getTotalmass;
static PyObject *__pyx_n_s_mj_integratePos;
static PyObject *__pyx_n_s_mj_invConstraint;
static PyObject *__pyx_n_s_mj_invPosition;
static PyObject *__pyx_n_s_mj_invVelocity;
static PyObject *__pyx_n_s_mj_inverse;
static PyObject *__pyx_n_s_mj_inverseSkip;
static PyObject *__pyx_n_s_mj_isDual;
static PyObject *__pyx_n_s_mj_isPyramidal;
static PyObject *__pyx_n_s_mj_isSparse;
static PyObject *__pyx_n_s_mj_jac;
static PyObject *__pyx_n_s_mj_jacBody;
static PyObject *__pyx_n_s_mj_jacBodyCom;
static PyObject *__pyx_n_s_mj_jacGeom;
static PyObject *__pyx_n_s_mj_jacPointAxis;
static PyObject *__pyx_n_s_mj_jacSite;
static PyObject *__pyx_n_s_mj_kinematics;
static PyObject *__pyx_n_s_mj_loadModel;
static PyObject *__pyx_n_s_mj_loadXML;
static PyObject *__pyx_n_s_mj_local2Global;
static PyObject *__pyx_n_s_mj_makeConstraint;
static PyObject *__pyx_kp_u_mj_makeData_failed;
static PyObject *__pyx_n_s_mj_makeEmptyFileVFS;
static PyObject *__pyx_n_s_mj_mulJacTVec;
static PyObject *__pyx_n_s_mj_mulJacVec;
static PyObject *__pyx_n_s_mj_mulM;
static PyObject *__pyx_n_s_mj_name2id;
static PyObject *__pyx_n_s_mj_normalizeQuat;
static PyObject *__pyx_n_s_mj_objectAcceleration;
static PyObject *__pyx_n_s_mj_objectVelocity;
static PyObject *__pyx_n_s_mj_passive;
static PyObject *__pyx_n_s_mj_printData;
static PyObject *__pyx_n_s_mj_printModel;
static PyObject *__pyx_n_s_mj_printSchema;
static PyObject *__pyx_n_s_mj_projectConstraint;
static PyObject *__pyx_n_s_mj_rayHfield;
static PyObject *__pyx_n_s_mj_rayMesh;
static PyObject *__pyx_n_s_mj_referenceConstraint;
static PyObject *__pyx_n_s_mj_resetCallbacks;
static PyObject *__pyx_n_s_mj_resetData;
static PyObject *__pyx_n_s_mj_resetDataKeyframe;
static PyObject *__pyx_n_s_mj_rne;
static PyObject *__pyx_n_s_mj_rnePostConstraint;
static PyObject *__pyx_n_s_mj_saveLastXML;
static PyObject *__pyx_n_s_mj_sensorAcc;
static PyObject *__pyx_n_s_mj_sensorPos;
static PyObject *__pyx_n_s_mj_sensorVel;
static PyObject *__pyx_n_s_mj_setConst;
static PyObject *__pyx_n_s_mj_setTotalmass;
static PyObject *__pyx_n_s_mj_sizeModel;
static PyObject *__pyx_n_s_mj_solveM;
static PyObject *__pyx_n_s_mj_solveM2;
static PyObject *__pyx_n_s_mj_step;
static PyObject *__pyx_n_s_mj_step1;
static PyObject *__pyx_n_s_mj_step2;
static PyObject *__pyx_n_s_mj_tendon;
static PyObject *__pyx_n_s_mj_transmission;
static PyObject *__pyx_n_s_mj_version;
static PyObject *__pyx_n_s_mj_warning;
static PyObject *__pyx_n_u_mjb;
static PyObject *__pyx_kp_u_mjb_2;
static PyObject *__pyx_n_s_mjb_bytes;
static PyObject *__pyx_n_s_mjr_blitBuffer;
static PyObject *__pyx_n_s_mjr_defaultContext;
static PyObject *__pyx_n_s_mjr_figure;
static PyObject *__pyx_n_s_mjr_finish;
static PyObject *__pyx_n_s_mjr_freeContext;
static PyObject *__pyx_n_s_mjr_getError;
static PyObject *__pyx_n_s_mjr_makeContext;
static PyObject *__pyx_n_s_mjr_overlay;
static PyObject *__pyx_n_s_mjr_render;
static PyObject *__pyx_n_s_mjr_setBuffer;
static PyObject *__pyx_n_s_mjr_uploadHField;
static PyObject *__pyx_n_s_mjr_uploadMesh;
static PyObject *__pyx_n_s_mjr_uploadTexture;
static PyObject *__pyx_n_s_mju_Halton;
static PyObject *__pyx_n_s_mju_add;
static PyObject *__pyx_n_s_mju_add3;
static PyObject *__pyx_n_s_mju_addScl;
static PyObject *__pyx_n_s_mju_addScl3;
static PyObject *__pyx_n_s_mju_addTo;
static PyObject *__pyx_n_s_mju_addTo3;
static PyObject *__pyx_n_s_mju_addToScl;
static PyObject *__pyx_n_s_mju_addToScl3;
static PyObject *__pyx_n_s_mju_axisAngle2Quat;
static PyObject *__pyx_n_s_mju_cholFactor;
static PyObject *__pyx_n_s_mju_cholSolve;
static PyObject *__pyx_n_s_mju_cholUpdate;
static PyObject *__pyx_n_s_mju_clearHandlers;
static PyObject *__pyx_n_s_mju_copy;
static PyObject *__pyx_n_s_mju_copy3;
static PyObject *__pyx_n_s_mju_copy4;
static PyObject *__pyx_n_s_mju_cross;
static PyObject *__pyx_n_s_mju_decodePyramid;
static PyObject *__pyx_n_s_mju_derivQuat;
static PyObject *__pyx_n_s_mju_dist3;
static PyObject *__pyx_n_s_mju_dot;
static PyObject *__pyx_n_s_mju_dot3;
static PyObject *__pyx_n_s_mju_eig3;
static PyObject *__pyx_n_s_mju_encodePyramid;
static PyObject *__pyx_n_s_mju_error;
static PyObject *__pyx_n_s_mju_error_i;
static PyObject *__pyx_n_s_mju_error_s;
static PyObject *__pyx_n_s_mju_insertionSort;
static PyObject *__pyx_n_s_mju_isBad;
static PyObject *__pyx_n_s_mju_isZero;
static PyObject *__pyx_n_s_mju_mat2Quat;
static PyObject *__pyx_n_s_mju_max;
static PyObject *__pyx_n_s_mju_min;
static PyObject *__pyx_n_s_mju_mulMatMat;
static PyObject *__pyx_n_s_mju_mulMatMatT;
static PyObject *__pyx_n_s_mju_mulMatTMat;
static PyObject *__pyx_n_s_mju_mulMatTVec;
static PyObject *__pyx_n_s_mju_mulMatVec;
static PyObject *__pyx_n_s_mju_mulPose;
static PyObject *__pyx_n_s_mju_mulQuat;
static PyObject *__pyx_n_s_mju_mulQuatAxis;
static PyObject *__pyx_n_s_mju_muscleFVL;
static PyObject *__pyx_n_s_mju_musclePassive;
static PyObject *__pyx_n_s_mju_negPose;
static PyObject *__pyx_n_s_mju_negQuat;
static PyObject *__pyx_n_s_mju_norm;
static PyObject *__pyx_n_s_mju_norm3;
static PyObject *__pyx_n_s_mju_normalize;
static PyObject *__pyx_n_s_mju_normalize3;
static PyObject *__pyx_n_s_mju_normalize4;
static PyObject *__pyx_n_s_mju_pneumatic;
static PyObject *__pyx_n_s_mju_printMat;
static PyObject *__pyx_n_s_mju_quat2Mat;
static PyObject *__pyx_n_s_mju_quat2Vel;
static PyObject *__pyx_n_s_mju_quatIntegrate;
static PyObject *__pyx_n_s_mju_quatZ2Vec;
static PyObject *__pyx_n_s_mju_rayGeom;
static PyObject *__pyx_n_s_mju_rotVecMat;
static PyObject *__pyx_n_s_mju_rotVecMatT;
static PyObject *__pyx_n_s_mju_rotVecQuat;
static PyObject *__pyx_n_s_mju_round;
static PyObject *__pyx_n_s_mju_scl;
static PyObject *__pyx_n_s_mju_scl3;
static PyObject *__pyx_n_s_mju_sign;
static PyObject *__pyx_n_s_mju_springDamper;
static PyObject *__pyx_n_s_mju_sqrMatTD;
static PyObject *__pyx_n_s_mju_standardNormal;
static PyObject *__pyx_n_s_mju_str2Type;
static PyObject *__pyx_n_s_mju_sub;
static PyObject *__pyx_n_s_mju_sub3;
static PyObject *__pyx_n_s_mju_subFrom;
static PyObject *__pyx_n_s_mju_subFrom3;
static PyObject *__pyx_n_s_mju_transformSpatial;
static PyObject *__pyx_n_s_mju_transpose;
static PyObject *__pyx_n_s_mju_trnVecPose;
static PyObject *__pyx_n_s_mju_unit4;
static PyObject *__pyx_n_s_mju_warning;
static PyObject *__pyx_n_s_mju_warning_i;
static PyObject *__pyx_n_s_mju_warning_s;
static PyObject *__pyx_n_s_mju_writeLog;
static PyObject *__pyx_n_s_mju_zero;
static PyObject *__pyx_n_s_mju_zero3;
static PyObject *__pyx_n_s_mju_zero4;
static PyObject *__pyx_kp_u_mjvGeom_doesn_t_have_field_s;
static PyObject *__pyx_kp_u_mjvGeom_has_attr_but_type_is_inv;
static PyObject *__pyx_n_s_mjv_addGeoms;
static PyObject *__pyx_n_s_mjv_alignToCamera;
static PyObject *__pyx_n_s_mjv_applyPerturbForce;
static PyObject *__pyx_n_s_mjv_applyPerturbPose;
static PyObject *__pyx_n_s_mjv_cameraInModel;
static PyObject *__pyx_n_s_mjv_cameraInRoom;
static PyObject *__pyx_n_s_mjv_defaultCamera;
static PyObject *__pyx_n_s_mjv_defaultFigure;
static PyObject *__pyx_n_s_mjv_defaultOption;
static PyObject *__pyx_n_s_mjv_defaultPerturb;
static PyObject *__pyx_n_s_mjv_freeScene;
static PyObject *__pyx_n_s_mjv_frustumHeight;
static PyObject *__pyx_n_s_mjv_initPerturb;
static PyObject *__pyx_n_s_mjv_makeConnector;
static PyObject *__pyx_n_s_mjv_makeScene;
static PyObject *__pyx_n_s_mjv_model2room;
static PyObject *__pyx_n_s_mjv_moveCamera;
static PyObject *__pyx_n_s_mjv_moveModel;
static PyObject *__pyx_n_s_mjv_movePerturb;
static PyObject *__pyx_n_s_mjv_room2model;
static PyObject *__pyx_n_s_mjv_select;
static PyObject *__pyx_n_s_mjv_updateCamera;
static PyObject *__pyx_n_s_mjv_updateScene;
static PyObject *__pyx_n_s_mocap_pos;
static PyObject *__pyx_n_s_mocap_quat;
static PyObject *__pyx_n_s_mode;
static PyObject *__pyx_n_s_model;
static PyObject *__pyx_kp_u_model_mjb;
static PyObject *__pyx_kp_u_model_xml;
static PyObject *__pyx_n_s_modelpos;
static PyObject *__pyx_n_s_modelquat;
static PyObject *__pyx_n_s_module;
static PyObject *__pyx_n_s_msg;
static PyObject *__pyx_n_s_mu;
static PyObject *__pyx_n_u_mujoco;
static PyObject *__pyx_n_s_mujoco_path;
static PyObject *__pyx_n_u_mujoco_py;
static PyObject *__pyx_n_s_mujoco_py_builder;
static PyObject *__pyx_n_s_mujoco_py_cymj;
static PyObject *__pyx_kp_s_mujoco_py_cymj_pyx;
static PyObject *__pyx_n_s_mujoco_py_generated;
static PyObject *__pyx_kp_s_mujoco_py_generated_wrappers_pxi;
static PyObject *__pyx_kp_s_mujoco_py_mjbatchrenderer_pyx;
static PyObject *__pyx_kp_s_mujoco_py_mjrendercontext_pyx;
static PyObject *__pyx_kp_s_mujoco_py_mjsim_pyx;
static PyObject *__pyx_kp_s_mujoco_py_mjsimstate_pyx;
static PyObject *__pyx_n_s_mujoco_py_mjviewer;
static PyObject *__pyx_kp_s_mujoco_py_opengl_context_pyx;
static PyObject *__pyx_n_s_mujoco_py_utils;
static PyObject *__pyx_n_s_n;
static PyObject *__pyx_n_s_nM;
static PyObject *__pyx_n_s_na;
static PyObject *__pyx_n_s_name;
static PyObject *__pyx_n_s_name_2;
static PyObject *__pyx_n_s_namedtuple;
static PyObject *__pyx_kp_u_names_must_all_be_strings;
static PyObject *__pyx_n_s_nbody;
static PyObject *__pyx_n_s_nc;
static PyObject *__pyx_n_s_ncam;
static PyObject *__pyx_n_s_nconmax;
static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous;
static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou;
static PyObject *__pyx_n_s_ndim;
static PyObject *__pyx_n_s_ne;
static PyObject *__pyx_n_s_ne_2;
static PyObject *__pyx_n_s_nefc;
static PyObject *__pyx_n_s_new;
static PyObject *__pyx_n_s_newmass;
static PyObject *__pyx_n_s_newpos;
static PyObject *__pyx_n_s_ngeom;
static PyObject *__pyx_n_s_njmax;
static PyObject *__pyx_n_s_njnt;
static PyObject *__pyx_n_s_nlight;
static PyObject *__pyx_n_s_nmocap;
static PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
static PyObject *__pyx_n_s_np;
static PyObject *__pyx_n_s_nq;
static PyObject *__pyx_n_s_nr;
static PyObject *__pyx_n_s_nsensordata;
static PyObject *__pyx_n_s_nsite;
static PyObject *__pyx_n_s_nsubsteps;
static PyObject *__pyx_n_s_ntendon;
static PyObject *__pyx_n_s_nu;
static PyObject *__pyx_n_s_num2;
static PyObject *__pyx_n_s_numbers;
static PyObject *__pyx_n_s_numpy;
static PyObject *__pyx_kp_u_numpy_core_multiarray_failed_to;
static PyObject *__pyx_kp_u_numpy_core_umath_failed_to_impor;
static PyObject *__pyx_n_s_nuserdata;
static PyObject *__pyx_n_s_nv;
static PyObject *__pyx_n_s_nwrap;
static PyObject *__pyx_n_s_obj;
static PyObject *__pyx_n_s_object;
static PyObject *__pyx_n_s_objid;
static PyObject *__pyx_n_s_objtype;
static PyObject *__pyx_n_s_offscreen;
static PyObject *__pyx_n_u_offscreen;
static PyObject *__pyx_n_s_old_dyld_library_path;
static PyObject *__pyx_n_s_oldpos;
static PyObject *__pyx_n_s_ones;
static PyObject *__pyx_n_s_open;
static PyObject *__pyx_n_s_opengl_backend;
static PyObject *__pyx_n_s_opengl_context;
static PyObject *__pyx_n_s_opt;
static PyObject *__pyx_n_s_os;
static PyObject *__pyx_n_s_other;
static PyObject *__pyx_n_s_overlay;
static PyObject *__pyx_n_s_overlay2;
static PyObject *__pyx_n_s_pack;
static PyObject *__pyx_n_s_parentNode;
static PyObject *__pyx_n_s_parseString;
static PyObject *__pyx_n_s_path;
static PyObject *__pyx_n_s_pbo_depth;
static PyObject *__pyx_n_s_pbo_rgb;
static PyObject *__pyx_n_s_pert;
static PyObject *__pyx_n_s_pickle;
static PyObject *__pyx_n_s_platform;
static PyObject *__pyx_n_s_pnt;
static PyObject *__pyx_n_s_point;
static PyObject *__pyx_n_s_pop;
static PyObject *__pyx_n_s_pos;
static PyObject *__pyx_n_s_pos0;
static PyObject *__pyx_n_s_pos1;
static PyObject *__pyx_n_s_pos2;
static PyObject *__pyx_n_s_posres;
static PyObject *__pyx_n_s_prepare;
static PyObject *__pyx_n_s_prepare_render_context;
static PyObject *__pyx_n_s_print;
static PyObject *__pyx_n_s_prm;
static PyObject *__pyx_n_s_property;
static PyObject *__pyx_n_s_ptr;
static PyObject *__pyx_n_s_push;
static PyObject *__pyx_n_s_pycuda_driver;
static PyObject *__pyx_n_s_pycuda_gl;
static PyObject *__pyx_n_s_pyramid;
static PyObject *__pyx_n_s_pyx_PickleError;
static PyObject *__pyx_n_s_pyx_checksum;
static PyObject *__pyx_n_s_pyx_getbuffer;
static PyObject *__pyx_n_s_pyx_result;
static PyObject *__pyx_n_s_pyx_state;
static PyObject *__pyx_n_s_pyx_type;
static PyObject *__pyx_n_s_pyx_unpickle_Enum;
static PyObject *__pyx_n_s_pyx_vtable;
static PyObject *__pyx_n_s_qfrc_target;
static PyObject *__pyx_n_s_qpos;
static PyObject *__pyx_n_u_qpos;
static PyObject *__pyx_n_s_qpos1;
static PyObject *__pyx_n_s_qpos2;
static PyObject *__pyx_n_s_qualname;
static PyObject *__pyx_n_s_quat;
static PyObject *__pyx_n_s_quat1;
static PyObject *__pyx_n_s_quat2;
static PyObject *__pyx_n_s_quatres;
static PyObject *__pyx_n_s_question;
static PyObject *__pyx_n_s_qvel;
static PyObject *__pyx_n_u_qvel;
static PyObject *__pyx_n_s_r1;
static PyObject *__pyx_n_s_r2;
static PyObject *__pyx_n_s_range;
static PyObject *__pyx_n_s_ravel;
static PyObject *__pyx_n_u_rb;
static PyObject *__pyx_n_s_read;
static PyObject *__pyx_n_s_read_cuda;
static PyObject *__pyx_n_s_read_nocuda;
static PyObject *__pyx_n_s_read_pixels;
static PyObject *__pyx_n_s_reduce;
static PyObject *__pyx_n_s_reduce_cython;
static PyObject *__pyx_n_s_reduce_ex;
static PyObject *__pyx_n_s_refresh_rate;
static PyObject *__pyx_n_s_reldx;
static PyObject *__pyx_n_s_reldy;
static PyObject *__pyx_n_s_relx;
static PyObject *__pyx_n_s_rely;
static PyObject *__pyx_n_s_removeChild;
static PyObject *__pyx_n_s_remove_empty_lines;
static PyObject *__pyx_n_s_render;
static PyObject *__pyx_n_s_render_callback;
static PyObject *__pyx_n_s_render_context;
static PyObject *__pyx_n_s_render_contexts;
static PyObject *__pyx_n_s_res;
static PyObject *__pyx_n_s_reshape;
static PyObject *__pyx_n_s_resolution;
static PyObject *__pyx_n_s_result;
static PyObject *__pyx_n_s_rgb_arr;
static PyObject *__pyx_n_s_rgb_view;
static PyObject *__pyx_n_s_roompos;
static PyObject *__pyx_n_s_roomquat;
static PyObject *__pyx_n_s_roomup;
static PyObject *__pyx_n_s_rotnew2old;
static PyObject *__pyx_kp_u_s;
static PyObject *__pyx_kp_u_s_Failed_to_load_MJB;
static PyObject *__pyx_kp_u_s_Failed_to_load_XML_from_file;
static PyObject *__pyx_n_s_save_locals_str_array;
static PyObject *__pyx_n_s_scale;
static PyObject *__pyx_n_s_schema_example;
static PyObject *__pyx_n_s_schema_val;
static PyObject *__pyx_n_s_scl;
static PyObject *__pyx_n_s_scn;
static PyObject *__pyx_n_s_self;
static PyObject *__pyx_kp_s_self_ptr_cannot_be_converted_to;
static PyObject *__pyx_n_s_selpnt;
static PyObject *__pyx_n_s_send;
static PyObject *__pyx_n_s_sensor_name2id;
static PyObject *__pyx_n_s_setAttribute;
static PyObject *__pyx_n_s_set_buffer_size;
static PyObject *__pyx_n_s_set_error_callback;
static PyObject *__pyx_n_s_set_mujoco_buffers;
static PyObject *__pyx_n_s_set_substep_callback;
static PyObject *__pyx_n_s_set_userdata_names;
static PyObject *__pyx_n_s_set_warning_callback;
static PyObject *__pyx_n_s_set_window_size;
static PyObject *__pyx_n_s_set_window_size_2;
static PyObject *__pyx_n_s_setstate;
static PyObject *__pyx_n_s_setstate_cython;
static PyObject *__pyx_n_s_setup_opengl_context;
static PyObject *__pyx_n_s_shape;
static PyObject *__pyx_n_s_sim;
static PyObject *__pyx_n_s_site;
static PyObject *__pyx_n_s_site_jacp;
static PyObject *__pyx_n_s_site_jacr;
static PyObject *__pyx_n_s_site_name2id;
static PyObject *__pyx_n_s_size;
static PyObject *__pyx_n_s_skipsensorenergy;
static PyObject *__pyx_n_s_skipstage;
static PyObject *__pyx_n_s_slots;
static PyObject *__pyx_n_s_solimp;
static PyObject *__pyx_n_s_solref;
static PyObject *__pyx_n_s_split;
static PyObject *__pyx_n_s_src;
static PyObject *__pyx_n_s_start;
static PyObject *__pyx_n_s_stat;
static PyObject *__pyx_n_s_state_tuple;
static PyObject *__pyx_n_s_staticmethod;
static PyObject *__pyx_n_s_step;
static PyObject *__pyx_n_s_step_udd;
static PyObject *__pyx_n_s_stop;
static PyObject *__pyx_n_s_str;
static PyObject *__pyx_n_s_str_array;
static PyObject *__pyx_kp_s_strided_and_direct;
static PyObject *__pyx_kp_s_strided_and_direct_or_indirect;
static PyObject *__pyx_kp_s_strided_and_indirect;
static PyObject *__pyx_kp_s_stringsource;
static PyObject *__pyx_n_s_struct;
static PyObject *__pyx_n_s_substep_callback;
static PyObject *__pyx_n_s_suffix;
static PyObject *__pyx_n_s_super;
static PyObject *__pyx_n_s_swap_buffers;
static PyObject *__pyx_n_s_sys;
static PyObject *__pyx_n_s_tagName;
static PyObject *__pyx_n_s_target_height;
static PyObject *__pyx_n_s_target_width;
static PyObject *__pyx_n_s_td;
static PyObject *__pyx_n_s_tempfile;
static PyObject *__pyx_n_s_test;
static PyObject *__pyx_n_s_texid;
static PyObject *__pyx_n_s_text;
static PyObject *__pyx_n_s_text1;
static PyObject *__pyx_n_s_text2;
static PyObject *__pyx_n_s_threading;
static PyObject *__pyx_n_s_throw;
static PyObject *__pyx_n_s_time;
static PyObject *__pyx_n_u_time;
static PyObject *__pyx_kp_u_time_qpos_qvel_act_udd_state;
static PyObject *__pyx_n_s_timestep;
static PyObject *__pyx_n_s_toprettyxml;
static PyObject *__pyx_n_s_torque;
static PyObject *__pyx_n_s_traceback;
static PyObject *__pyx_n_s_type;
static PyObject *__pyx_n_s_udd_callback;
static PyObject *__pyx_n_s_udd_state;
static PyObject *__pyx_n_s_uint16;
static PyObject *__pyx_n_s_uint8;
static PyObject *__pyx_kp_s_unable_to_allocate_array_data;
static PyObject *__pyx_kp_s_unable_to_allocate_shape_and_str;
static PyObject *__pyx_n_s_unflatten_dict;
static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd;
static PyObject *__pyx_n_s_unmap;
static PyObject *__pyx_n_s_unpack;
static PyObject *__pyx_n_s_unregister;
static PyObject *__pyx_n_s_up;
static PyObject *__pyx_n_s_update;
static PyObject *__pyx_n_s_update_offscreen_size;
static PyObject *__pyx_n_s_use_cuda;
static PyObject *__pyx_n_s_use_cuda_2;
static PyObject *__pyx_n_s_userdata_name2id;
static PyObject *__pyx_n_s_userdata_names;
static PyObject *__pyx_n_s_v;
static PyObject *__pyx_n_s_val;
static PyObject *__pyx_n_s_val_array;
static PyObject *__pyx_n_s_value;
static PyObject *__pyx_n_s_values;
static PyObject *__pyx_n_s_vec;
static PyObject *__pyx_n_s_vec1;
static PyObject *__pyx_n_s_vec2;
static PyObject *__pyx_n_s_vel;
static PyObject *__pyx_n_s_vel0;
static PyObject *__pyx_n_s_vfs;
static PyObject *__pyx_n_s_viewport;
static PyObject *__pyx_n_s_vis;
static PyObject *__pyx_n_s_vopt;
static PyObject *__pyx_n_s_warn;
static PyObject *__pyx_n_s_warning;
static PyObject *__pyx_n_u_wb;
static PyObject *__pyx_n_s_width;
static PyObject *__pyx_n_s_width_2;
static PyObject *__pyx_n_s_window;
static PyObject *__pyx_n_u_window;
static PyObject *__pyx_n_s_window_hint;
static PyObject *__pyx_n_s_window_should_close;
static PyObject *__pyx_n_s_with_udd;
static PyObject *__pyx_n_s_wrap_mujoco_warning;
static PyObject *__pyx_n_s_wrap_mujoco_warning___enter;
static PyObject *__pyx_n_s_wrap_mujoco_warning___exit;
static PyObject *__pyx_n_s_write;
static PyObject *__pyx_n_s_x;
static PyObject *__pyx_n_s_xmat;
static PyObject *__pyx_n_u_xml;
static PyObject *__pyx_kp_u_xml_2;
static PyObject *__pyx_n_s_xml_dom;
static PyObject *__pyx_n_s_xml_str;
static PyObject *__pyx_n_s_xpos;
static PyObject *__pyx_n_s_y;
static PyObject *__pyx_n_s_zeros;
static int __pyx_pf_9mujoco_py_4cymj_7PyMjVFS___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self); /* proto */
static void __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_2__dealloc__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_5nfile___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_5nfile_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_8filesize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8timestep___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8timestep_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_7apirate___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7apirate_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8impratio___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8impratio_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9tolerance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9tolerance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_7density___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7density_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9viscosity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9viscosity_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_margin_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_10integrator___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_10integrator_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9collision___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9collision_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9impedance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9impedance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9reference___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9reference_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_4cone___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_4cone_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8jacobian___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8jacobian_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_6solver___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_6solver_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_10iterations___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_10iterations_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_12disableflags___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_12disableflags_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_11enableflags___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_11enableflags_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_7gravity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_4wind___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8magnetic___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjVisual___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_7global____get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_7quality___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_9headlight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_3map___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_5scale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_4rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global____cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4fovy___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4fovy_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__3ipd___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__3ipd_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4glow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4glow_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9offheight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9offheight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_6active___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_6active_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_7ambient___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_7diffuse___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_8specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5force___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5force_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6torque___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6torque_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5alpha___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5alpha_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6fogend___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6fogend_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5znear___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5znear_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_4zfar___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_4zfar_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_7connect___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_7connect_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_3com___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_3com_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_6camera___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_6camera_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_5light___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_5light_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_3fog___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_5force___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_7inertia___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_5joint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_8actuator___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_3com___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_6camera___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_5light___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_11selectpoint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_7connect___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactpoint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactforce___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_15contactfriction___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_13contacttorque___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_10constraint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_11slidercrank___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_11crankbroken___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meanmass___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meanmass_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meansize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meansize_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_6extent___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_6extent_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_6center___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_body_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2body_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4joint_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6joint_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8geom_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12site_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14site_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16light_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_18light_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_20camera_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_22camera_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_24actuator_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_26actuator_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_28sensor_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_30sensor_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_32userdata_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_34userdata_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_extract_mj_names_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_36get_xml(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_38get_mjb(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_40set_userdata_names(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_userdata_names); /* proto */
static void __pyx_pf_9mujoco_py_4cymj_9PyMjModel_42__dealloc__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_44get_joint_qpos_addr(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_46get_joint_qvel_addr(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nq___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nq_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nv___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nv_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nu___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nu_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2na___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2na_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nbody___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nbody_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4njnt___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4njnt_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ngeom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ngeom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nsite___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nsite_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ncam___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ncam_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nlight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nlight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nmesh___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nmesh_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshvert___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshvert_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshface___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshface_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nhfield___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nhfield_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nhfielddata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nhfielddata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ntex___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ntex_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8ntexdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8ntexdata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nmat_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5npair___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5npair_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nexclude___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nexclude_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_3neq___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_3neq_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7ntendon___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7ntendon_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nwrap___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nwrap_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nsensor___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nsensor_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nnumeric___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nnumeric_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nnumericdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nnumericdata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ntext___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ntext_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9ntextdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9ntextdata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6ntuple___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6ntuple_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10ntupledata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10ntupledata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nkey___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nkey_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_body___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_body_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_geom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_geom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_site___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_site_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_cam___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_cam_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nnames___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nnames_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nM___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nM_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nemax___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nemax_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5njmax___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5njmax_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nconmax___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nconmax_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nstack___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nstack_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuserdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuserdata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nmocap___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nmocap_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nsensordata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nsensordata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nbuffer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nbuffer_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_3opt___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_3vis___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4stat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5qpos0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11qpos_spring___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13body_parentid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_rootid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_weldid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_mocapid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_jntnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_jntadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_dofnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_dofadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_geomnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_geomadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8body_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_ipos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10body_iquat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_mass___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16body_subtreemass___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_inertia___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15body_invweight0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8jnt_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11jnt_qposadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_dofadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11jnt_limited___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7jnt_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8jnt_axis___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13jnt_stiffness___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9jnt_range___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8jnt_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10dof_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9dof_jntid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12dof_parentid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8dof_Madr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10dof_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10dof_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16dof_frictionloss___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12dof_armature___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11dof_damping___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14dof_invweight0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12geom_contype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16geom_conaffinity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_condim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_dataid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_matid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_group___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_solmix___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_rbound___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8geom_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13geom_friction___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8geom_gap___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11site_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10site_matid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10site_group___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8site_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_mode___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10cam_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16cam_targetbodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7cam_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11cam_poscom0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_pos0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_mat0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_fovy___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7cam_ipd___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10light_mode___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12light_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_18light_targetbodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17light_directional___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16light_castshadow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12light_active___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9light_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9light_dir___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13light_poscom0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10light_pos0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10light_dir0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17light_attenuation___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12light_cutoff___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14light_exponent___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13light_ambient___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13light_diffuse___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14light_specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_faceadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_facenum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_vertadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_vertnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13mesh_graphadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9mesh_vert___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11mesh_normal___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9mesh_face___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10mesh_graph___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_nrow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_ncol___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10hfield_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_data___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8tex_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tex_height___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9tex_width___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7tex_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7tex_rgb___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9mat_texid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14mat_texuniform___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13mat_texrepeat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mat_emission___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mat_specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13mat_shininess___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15mat_reflectance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8mat_rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8pair_dim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10pair_geom1___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10pair_geom2___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14pair_signature___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11pair_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11pair_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11pair_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8pair_gap___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13pair_friction___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17exclude_signature___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7eq_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_obj1id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_obj2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_active___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7eq_data___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tendon_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tendon_num___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tendon_matid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14tendon_limited___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tendon_width___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_lim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_lim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_fri___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_fri___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tendon_range___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13tendon_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16tendon_stiffness___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14tendon_damping___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_19tendon_frictionloss___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_19tendon_lengthspring___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14tendon_length0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_invweight0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11tendon_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11tendon_rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9wrap_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10wrap_objid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8wrap_prm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_trntype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_dyntype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17actuator_gaintype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17actuator_biastype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14actuator_trnid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_20actuator_ctrllimited___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_21actuator_forcelimited___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15actuator_dynprm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_gainprm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_biasprm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_18actuator_ctrlrange___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_19actuator_forcerange___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13actuator_gear___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_20actuator_cranklength___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_19actuator_invweight0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_length0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_20actuator_lengthrange___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13actuator_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11sensor_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15sensor_datatype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16sensor_needstage___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14sensor_objtype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12sensor_objid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10sensor_dim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10sensor_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13sensor_cutoff___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12sensor_noise___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11sensor_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11numeric_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12numeric_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12numeric_data___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8text_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9text_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9text_data___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9tuple_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tuple_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13tuple_objtype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11tuple_objid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tuple_objprm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8key_time___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8key_qpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8key_qvel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7key_act___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_bodyadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_jntadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_geomadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_siteadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_camadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13name_lightadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_meshadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14name_hfieldadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_texadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_matadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10name_eqadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14name_tendonadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16name_actuatoradr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14name_sensoradr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15name_numericadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_textadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13name_tupleadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10body_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11joint_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10site_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11light_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12camera_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14actuator_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12sensor_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_body_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_joint_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_geom_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_site_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_light_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_camera_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_actuator_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_sensor_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_body_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_joint_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_geom_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_site_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_light_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_camera_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_actuator_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_sensor_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14userdata_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14userdata_names_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14userdata_names_4__del__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_4__del__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_4__del__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_48__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_50__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_4dist___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_4dist_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_13includemargin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_13includemargin_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_2mu___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_2mu_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_3dim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_3dim_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom1___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom1_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom2___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom2_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_7exclude___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_7exclude_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_11efc_address___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_11efc_address_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_3pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_5frame___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_8friction___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_6solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_6solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_1H___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_6number___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_6number_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_8duration___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_8duration_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_6number___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_6number_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_11improvement___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_11improvement_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_8gradient___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_8gradient_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nactive___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nactive_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nchange___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nchange_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_5neval___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_5neval_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10body_xquat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_xmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_23active_contacts_efc_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static void __pyx_pf_9mujoco_py_4cymj_8PyMjData___dealloc__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_2get_body_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4get_xpos(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6get_body_xquat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8get_xquat(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10get_body_xmat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12get_xmat(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14get_body_xipos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_16get_xipos(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_18get_body_ximat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_20get_ximat(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_22get_body_jacp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacp); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_24get_body_jacr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacr); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_26get_body_xvelp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_28get_body_xvelr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_30get_joint_xanchor(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_32get_xanchor(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_34get_joint_xaxis(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_36get_xaxis(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_38get_geom_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_40get_geom_xmat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_42get_geom_jacp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacp); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_44get_geom_jacr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacr); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_46get_geom_xvelp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_48get_geom_xvelr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_50get_site_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_52get_site_xmat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_54get_site_jacp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacp); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_56get_site_jacr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacr); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_58get_site_xvelp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_60get_site_xvelr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_62get_camera_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_64get_cam_xpos(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_66get_camera_xmat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_68get_cam_xmat(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_70get_light_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_72get_light_xdir(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_74get_sensor(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_76get_sensordata(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_78get_userdata(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_80get_mocap_pos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_82set_mocap_pos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_84get_mocap_quat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_86set_mocap_quat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_88get_joint_qpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_90set_joint_qpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_92get_joint_qvel(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_94set_joint_qvel(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6nstack___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_6nstack_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7nbuffer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_7nbuffer_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6pstack___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_6pstack_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12maxuse_stack___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_12maxuse_stack_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_con___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_con_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_efc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_efc_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_11solver_iter___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_11solver_iter_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10solver_nnz___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_10solver_nnz_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_2ne___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_2ne_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_2nf___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_2nf_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4nefc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_4nefc_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4ncon___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_4ncon_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4time___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_4time_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4qpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4qvel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_3act___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4ctrl___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12qfrc_applied___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12xfrc_applied___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4qacc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7act_dot___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9mocap_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10mocap_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8userdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10sensordata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4xpos___get__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5xquat___get__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4xmat___get__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5xipos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5ximat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7xanchor___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5xaxis___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_xmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_xmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cam_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cam_xmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10light_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10light_xdir___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_11subtree_com___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4cdof___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6cinert___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_11ten_wrapadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_11ten_wrapnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10ten_length___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10ten_moment___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8wrap_obj___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9wrap_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_15actuator_length___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_15actuator_moment___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_3crb___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_2qM___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_3qLD___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9qLDiagInv___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13qLDiagSqrtInv___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7contact___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8efc_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6efc_id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12efc_J_rownnz___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12efc_J_rowadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12efc_J_colind___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_JT_rownnz___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_JT_rowadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_JT_colind___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10efc_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10efc_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10efc_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_16efc_frictionloss___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7efc_pos___get__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_J___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6efc_JT___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14efc_diagApprox___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_D___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_R___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_AR_rownnz___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_AR_rowadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_AR_colind___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6efc_AR___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12ten_velocity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_17actuator_velocity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4cvel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cdof_dot___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9qfrc_bias___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12qfrc_passive___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7efc_vel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8efc_aref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14subtree_linvel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14subtree_angmom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14actuator_force___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13qfrc_actuator___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8qfrc_unc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8qacc_unc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_b___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9efc_force___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9efc_state___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_15qfrc_constraint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14qacc_warmstart___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12qfrc_inverse___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4cacc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cfrc_int___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cfrc_ext___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7warning___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5timer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6solver___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13solver_fwdinv___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6energy___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_jacp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_jacr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10body_xvelp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10body_xvelr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_jacp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_jacr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10geom_xvelp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10geom_xvelr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_jacp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_jacr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10site_xvelp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10site_xvelr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_96__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_98__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6select___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6select_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6active___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6active_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_5scale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_5scale_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6refpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_7refquat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_8localpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_4type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_4type_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_8distance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_8distance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_7azimuth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_7azimuth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_9elevation___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_9elevation_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, mjtNum __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_6lookat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_3pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_7forward___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_2up___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4type_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_6dataid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_6dataid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7objtype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7objtype_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5objid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5objid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8category___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8category_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5texid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5texid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_10texuniform___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_10texuniform_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8emission___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8emission_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8specular_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_9shininess___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_9shininess_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11reflectance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11reflectance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7camdist___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7camdist_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11transparent___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11transparent_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, mjtByte __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_9texrepeat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_3pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_3mat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5label___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_6cutoff___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_6cutoff_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_8exponent___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_8exponent_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_9headlight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_9headlight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, mjtByte __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_11directional___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_11directional_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, mjtByte __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_10castshadow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_10castshadow_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, mjtByte __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_3pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_3dir___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_11attenuation___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_7ambient___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_7diffuse___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_8specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvOption___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5label___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5label_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5frame___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5frame_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_9geomgroup___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_9sitegroup___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5flags___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_7maxgeom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_7maxgeom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5ngeom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5ngeom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6nlight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6nlight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_15enabletransform___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_15enabletransform_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, mjtByte __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5scale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5scale_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6stereo___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6stereo_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6lights___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6camera___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_9translate___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6rotate___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5flags___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_13flg_ticklabel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_8gridsize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7gridrgb___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10figurergba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10legendrgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7textrgb___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_6xlabel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_5title___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7xformat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7yformat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_8minwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7linepnt___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_9linewidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self); /* proto */
static void __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_2__dealloc__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_4left___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_4left_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6bottom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6bottom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_5width___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_5width_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6height___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6height_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9lineWidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9lineWidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowClip___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowClip_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11shadowScale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11shadowScale_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowSize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowSize_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offWidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offWidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9offHeight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9offHeight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offSamples___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offSamples_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_6offFBO___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_6offFBO_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offColor___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offColor_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offColor_r___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offColor_r_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowTex___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowTex_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8ntexture___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8ntexture_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9basePlane___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9basePlane_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8baseMesh___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8baseMesh_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10baseHField___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10baseHField_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10rangePlane___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10rangePlane_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11rangeHField___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11rangeHField_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeFont___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeFont_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10charHeight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10charHeight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13windowSamples___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13windowSamples_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12windowStereo___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12windowStereo_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11textureType___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_7texture___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9charWidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12charWidthBig___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj__mj_activate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_2_mj_deactivate(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_4_mj_certQuestion(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_question); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_6_mj_certAnswer(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_question, PyArrayObject *__pyx_v_answer); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_8_mj_certCheck(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_question, PyArrayObject *__pyx_v_answer); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10_mj_defaultVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_12_mj_addFileVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_directory, PyObject *__pyx_v_filename); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_14_mj_makeEmptyFileVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_filename, int __pyx_v_filesize); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_16_mj_findFileVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_filename); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_18_mj_deleteFileVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_filename); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_20_mj_deleteVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_22_mj_loadXML(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_error, int __pyx_v_error_sz); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_24_mj_saveLastXML(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyObject *__pyx_v_error, int __pyx_v_error_sz); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_26_mj_freeLastXML(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_28_mj_printSchema(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_buffer, int __pyx_v_buffer_sz, int __pyx_v_flg_html, int __pyx_v_flg_pad); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_30_mj_step(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_32_mj_step1(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_34_mj_step2(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_36_mj_forward(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_38_mj_inverse(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_40_mj_forwardSkip(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_skipstage, int __pyx_v_skipsensorenergy); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_42_mj_inverseSkip(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_skipstage, int __pyx_v_skipsensorenergy); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_44_mj_defaultSolRefImp(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_solref, PyArrayObject *__pyx_v_solimp); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_46_mj_defaultOption(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_opt); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_48_mj_defaultVisual(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_vis); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_50_mj_copyModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_dest, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_src); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_52_mj_loadModel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_54_mj_deleteModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_56_mj_sizeModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_58_mj_resetData(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_60_mj_resetDataKeyframe(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_key); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_62_mj_deleteData(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_64_mj_resetCallbacks(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_66_mj_setConst(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_flg_actrange); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_68_mj_printModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyObject *__pyx_v_filename); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_70_mj_printData(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyObject *__pyx_v_filename); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_72_mju_printMat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mat, int __pyx_v_nr, int __pyx_v_nc); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_74_mj_fwdPosition(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_76_mj_fwdVelocity(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_78_mj_fwdActuation(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_80_mj_fwdAcceleration(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_82_mj_fwdConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_84_mj_Euler(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_86_mj_RungeKutta(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_N); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_88_mj_invPosition(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_90_mj_invVelocity(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_92_mj_invConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_94_mj_compareFwdInv(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_96_mj_sensorPos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_98_mj_sensorVel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_100_mj_sensorAcc(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_102_mj_energyPos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_104_mj_energyVel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_106_mj_checkPos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_108_mj_checkVel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_110_mj_checkAcc(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_112_mj_kinematics(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_114_mj_comPos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_116_mj_camlight(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_118_mj_tendon(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_120_mj_transmission(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_122_mj_crb(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_124_mj_factorM(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_126_mj_solveM(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_y, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_128_mj_solveM2(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_y, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_130_mj_comVel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_132_mj_passive(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_134_mj_rne(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_flg_acc, PyArrayObject *__pyx_v_result); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_136_mj_rnePostConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_138_mj_collision(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_140_mj_makeConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_142_mj_projectConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_144_mj_referenceConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_146_mj_constraintUpdate(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jar, PyArrayObject *__pyx_v_cost, int __pyx_v_flg_coneHessian); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_148_mj_addContact(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_con); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_150_mj_isPyramidal(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_152_mj_isSparse(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_154_mj_isDual(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_156_mj_mulJacVec(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_158_mj_mulJacTVec(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_160_mj_jac(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, PyArrayObject *__pyx_v_point, int __pyx_v_body); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_162_mj_jacBody(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, int __pyx_v_body); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_164_mj_jacBodyCom(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, int __pyx_v_body); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_166_mj_jacGeom(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, int __pyx_v_geom); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_168_mj_jacSite(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, int __pyx_v_site); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_170_mj_jacPointAxis(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacPoint, PyArrayObject *__pyx_v_jacAxis, PyArrayObject *__pyx_v_point, PyArrayObject *__pyx_v_axis, int __pyx_v_body); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_172_mj_name2id(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, int __pyx_v_type, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_174_mj_fullM(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyArrayObject *__pyx_v_dst, PyArrayObject *__pyx_v_M); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_176_mj_mulM(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_178_mj_applyFT(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_force, PyArrayObject *__pyx_v_torque, PyArrayObject *__pyx_v_point, int __pyx_v_body, PyArrayObject *__pyx_v_qfrc_target); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_180_mj_objectVelocity(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_objtype, int __pyx_v_objid, PyArrayObject *__pyx_v_res, int __pyx_v_flg_local); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_182_mj_objectAcceleration(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_objtype, int __pyx_v_objid, PyArrayObject *__pyx_v_res, int __pyx_v_flg_local); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_184_mj_differentiatePos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyArrayObject *__pyx_v_qvel, float __pyx_v_dt, PyArrayObject *__pyx_v_qpos1, PyArrayObject *__pyx_v_qpos2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_186_mj_contactForce(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_id, PyArrayObject *__pyx_v_result); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_188_mj_integratePos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyArrayObject *__pyx_v_qpos, PyArrayObject *__pyx_v_qvel, float __pyx_v_dt); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_190_mj_normalizeQuat(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyArrayObject *__pyx_v_qpos); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_192_mj_local2Global(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_xpos, PyArrayObject *__pyx_v_xmat, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_quat, int __pyx_v_body); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_194_mj_getTotalmass(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_196_mj_setTotalmass(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, float __pyx_v_newmass); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_198_mj_version(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_200_mj_rayHfield(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_geomid, PyArrayObject *__pyx_v_pnt, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_202_mj_rayMesh(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_geomid, PyArrayObject *__pyx_v_pnt, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_204_mju_rayGeom(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_size, PyArrayObject *__pyx_v_pnt, PyArrayObject *__pyx_v_vec, int __pyx_v_geomtype); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_206_mjv_defaultCamera(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_208_mjv_defaultPerturb(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_210_mjv_room2model(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_modelpos, PyArrayObject *__pyx_v_modelquat, PyArrayObject *__pyx_v_roompos, PyArrayObject *__pyx_v_roomquat, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_212_mjv_model2room(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_roompos, PyArrayObject *__pyx_v_roomquat, PyArrayObject *__pyx_v_modelpos, PyArrayObject *__pyx_v_modelquat, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_214_mjv_cameraInModel(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_headpos, PyArrayObject *__pyx_v_forward, PyArrayObject *__pyx_v_up, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_216_mjv_cameraInRoom(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_headpos, PyArrayObject *__pyx_v_forward, PyArrayObject *__pyx_v_up, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_218_mjv_frustumHeight(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_220_mjv_alignToCamera(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, PyArrayObject *__pyx_v_forward); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_222_mjv_moveCamera(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, int __pyx_v_action, float __pyx_v_reldx, float __pyx_v_reldy, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_224_mjv_movePerturb(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_action, float __pyx_v_reldx, float __pyx_v_reldy, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_226_mjv_moveModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, int __pyx_v_action, float __pyx_v_reldx, float __pyx_v_reldy, PyArrayObject *__pyx_v_roomup, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_228_mjv_initPerturb(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_230_mjv_applyPerturbPose(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert, int __pyx_v_flg_paused); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_232_mjv_applyPerturbForce(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_234_mjv_select(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_vopt, float __pyx_v_aspectratio, float __pyx_v_relx, float __pyx_v_rely, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, PyArrayObject *__pyx_v_selpnt); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_236_mjv_defaultOption(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_opt); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_238_mjv_defaultFigure(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_fig); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_240_mjv_makeConnector(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_geom, int __pyx_v_type, float __pyx_v_width, float __pyx_v_a0, float __pyx_v_a1, float __pyx_v_a2, float __pyx_v_b0, float __pyx_v_b1, float __pyx_v_b2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_242_mjv_makeScene(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, int __pyx_v_maxgeom); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_244_mjv_freeScene(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_246_mjv_updateScene(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_opt, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert, struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam, int __pyx_v_catmask, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_248_mjv_addGeoms(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_opt, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert, int __pyx_v_catmask, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_250_mjv_updateCamera(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_252_mjr_defaultContext(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_254_mjr_makeContext(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con, int __pyx_v_fontscale); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_256_mjr_freeContext(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_258_mjr_uploadTexture(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con, int __pyx_v_texid); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_260_mjr_uploadMesh(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con, int __pyx_v_meshid); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_262_mjr_uploadHField(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con, int __pyx_v_hfieldid); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_264_mjr_setBuffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_framebuffer, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_266_mjr_blitBuffer(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_src, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_dst, int __pyx_v_flg_color, int __pyx_v_flg_depth, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_268_mjr_overlay(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_font, int __pyx_v_gridpos, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_viewport, PyObject *__pyx_v_overlay, PyObject *__pyx_v_overlay2, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_270_mjr_figure(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_viewport, struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_fig, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_272_mjr_render(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_viewport, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_274_mjr_finish(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_276_mjr_getError(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_278_mju_error(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_280_mju_error_i(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg, int __pyx_v_i); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_282_mju_error_s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg, PyObject *__pyx_v_text); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_284_mju_warning(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_286_mju_warning_i(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg, int __pyx_v_i); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_288_mju_warning_s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg, PyObject *__pyx_v_text); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_290_mju_clearHandlers(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_292_mj_warning(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_warning, int __pyx_v_info); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_294_mju_writeLog(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_type, PyObject *__pyx_v_msg); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_296_mju_zero3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_298_mju_copy3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_300_mju_scl3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, float __pyx_v_scl); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_302_mju_add3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_304_mju_sub3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_306_mju_addTo3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_308_mju_subFrom3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_310_mju_addToScl3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, float __pyx_v_scl); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_312_mju_addScl3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, float __pyx_v_scl); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_314_mju_normalize3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_316_mju_norm3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_318_mju_dot3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_320_mju_dist3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_pos1, PyArrayObject *__pyx_v_pos2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_322_mju_rotVecMat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, PyArrayObject *__pyx_v_mat); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_324_mju_rotVecMatT(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, PyArrayObject *__pyx_v_mat); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_326_mju_cross(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_a, PyArrayObject *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_328_mju_zero4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_330_mju_unit4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_332_mju_copy4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_334_mju_normalize4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_336_mju_zero(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_338_mju_copy(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_data, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_340_mju_scl(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, float __pyx_v_scl, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_342_mju_add(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_344_mju_sub(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_346_mju_addTo(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_348_mju_subFrom(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_350_mju_addToScl(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, float __pyx_v_scl, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_352_mju_addScl(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, float __pyx_v_scl, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_354_mju_normalize(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_356_mju_norm(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_358_mju_dot(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_360_mju_mulMatVec(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_vec, int __pyx_v_nr, int __pyx_v_nc); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_362_mju_mulMatTVec(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_vec, int __pyx_v_nr, int __pyx_v_nc); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_364_mju_transpose(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, int __pyx_v_nr, int __pyx_v_nc); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_366_mju_mulMatMat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat1, PyArrayObject *__pyx_v_mat2, int __pyx_v_r1, int __pyx_v_c1, int __pyx_v_c2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_368_mju_mulMatMatT(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat1, PyArrayObject *__pyx_v_mat2, int __pyx_v_r1, int __pyx_v_c1, int __pyx_v_r2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_370_mju_mulMatTMat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat1, PyArrayObject *__pyx_v_mat2, int __pyx_v_r1, int __pyx_v_c1, int __pyx_v_c2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_372_mju_sqrMatTD(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_diag, int __pyx_v_nr, int __pyx_v_nc); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_374_mju_transformSpatial(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, int __pyx_v_flg_force, PyArrayObject *__pyx_v_newpos, PyArrayObject *__pyx_v_oldpos, PyArrayObject *__pyx_v_rotnew2old); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_376_mju_rotVecQuat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, PyArrayObject *__pyx_v_quat); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_378_mju_negQuat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_380_mju_mulQuat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat1, PyArrayObject *__pyx_v_quat2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_382_mju_mulQuatAxis(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_axis); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_384_mju_axisAngle2Quat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_axis, float __pyx_v_angle); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_386_mju_quat2Vel(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat, float __pyx_v_dt); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_388_mju_quat2Mat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_390_mju_mat2Quat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_mat); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_392_mju_derivQuat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_vel); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_394_mju_quatIntegrate(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_vel, float __pyx_v_scale); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_396_mju_quatZ2Vec(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_398_mju_mulPose(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_posres, PyArrayObject *__pyx_v_quatres, PyArrayObject *__pyx_v_pos1, PyArrayObject *__pyx_v_quat1, PyArrayObject *__pyx_v_pos2, PyArrayObject *__pyx_v_quat2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_400_mju_negPose(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_posres, PyArrayObject *__pyx_v_quatres, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_quat); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_402_mju_trnVecPose(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_vec); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_404_mju_cholFactor(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mat, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_406_mju_cholSolve(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_vec, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_408_mju_cholUpdate(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_x, int __pyx_v_n, int __pyx_v_flg_plus); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_410_mju_eig3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_eigval, PyArrayObject *__pyx_v_eigvec, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_mat); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_412_mju_muscleFVL(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_len, float __pyx_v_vel, float __pyx_v_lmin, float __pyx_v_lmax, PyArrayObject *__pyx_v_prm); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_414_mju_musclePassive(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_len, float __pyx_v_lmin, float __pyx_v_lmax, PyArrayObject *__pyx_v_prm); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_416_mju_pneumatic(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_len, float __pyx_v_len0, float __pyx_v_vel, PyArrayObject *__pyx_v_prm, float __pyx_v_act, float __pyx_v_ctrl, float __pyx_v_timestep, PyArrayObject *__pyx_v_jac); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_418_mju_encodePyramid(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_pyramid, PyArrayObject *__pyx_v_force, PyArrayObject *__pyx_v_mu, int __pyx_v_dim); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_420_mju_decodePyramid(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_force, PyArrayObject *__pyx_v_pyramid, PyArrayObject *__pyx_v_mu, int __pyx_v_dim); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_422_mju_springDamper(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_pos0, float __pyx_v_vel0, float __pyx_v_Kp, float __pyx_v_Kv, float __pyx_v_dt); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_424_mju_min(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_a, float __pyx_v_b); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_426_mju_max(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_a, float __pyx_v_b); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_428_mju_sign(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_430_mju_round(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_432_mju_str2Type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_str); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_434_mju_isBad(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_x); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_436_mju_isZero(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_vec, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_438_mju_standardNormal(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_num2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_440_mju_insertionSort(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_list, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_442_mju_Halton(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_index, int __pyx_v_base); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_444_add_mujoco_bin_to_dyld_library_path(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13OpenGLContext_make_context_current(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_13OpenGLContext_2set_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_width, CYTHON_UNUSED PyObject *__pyx_v_height); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_offscreen); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_2_init_glfw(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_4make_context_current(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_6set_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_8_create_window(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_offscreen); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_10get_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_12_set_window_size(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_target_width, PyObject *__pyx_v_target_height); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_14_glfw_error_callback(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_error_code, PyObject *__pyx_v_description); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_device_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext_2close(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext_4make_context_current(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext_6set_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_width, int __pyx_v_height); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_5MjSim___cinit__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_model, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_data, int __pyx_v_nsubsteps, PyObject *__pyx_v_udd_callback, PyObject *__pyx_v_substep_callback, PyObject *__pyx_v_userdata_names, PyObject *__pyx_v_render_callback); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_2reset(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_4forward(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_6step(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_with_udd); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_8render(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height, PyObject *__pyx_v_camera_name, PyObject *__pyx_v_depth, PyObject *__pyx_v_mode, PyObject *__pyx_v_device_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_10add_render_context(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_render_context); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_12udd_callback___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_5MjSim_12udd_callback_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_12substep_callback(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_14set_substep_callback(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_substep_callback, PyObject *__pyx_v_userdata_names); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_16step_udd(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_18get_state(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_20set_state(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_22set_state_from_flattened(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_4save_str_array(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arr); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_24save(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_file, PyObject *__pyx_v_format, PyObject *__pyx_v_keep_inertials); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_15render_contexts___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_22_render_context_window___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_25_render_context_offscreen___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_5model___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_4data___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_9nsubsteps___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_5MjSim_9nsubsteps_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_9udd_state___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_5MjSim_9udd_state_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_5MjSim_9udd_state_4__del__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_13_udd_callback___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_6extras___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_20substep_callback_ptr___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_15render_callback___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_5MjSim_15render_callback_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_5MjSim_15render_callback_4__del__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_26__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_28__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState___eq__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_2__ne__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_4flatten(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_6_flatten_dict(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_d); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_8from_flattened(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_array, PyObject *__pyx_v_sim); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_10_unflatten_dict(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_schema_example); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_15MjRenderContext___cinit__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_2__init__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_sim, int __pyx_v_offscreen, int __pyx_v_device_id, PyObject *__pyx_v_opengl_backend); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_4update_sim(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_new_sim); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_6_set_mujoco_buffers(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_setup_opengl_context(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_offscreen, PyObject *__pyx_v_device_id, PyObject *__pyx_v_opengl_backend); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_10_init_camera(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_sim); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_12update_offscreen_size(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_14render(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height, PyObject *__pyx_v_camera_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_16read_pixels(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height, PyObject *__pyx_v_depth); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_18upload_texture(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, int __pyx_v_tex_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_20draw_pixels(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyArrayObject *__pyx_v_image, int __pyx_v_left, int __pyx_v_bottom); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_22move_camera(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, int __pyx_v_action, double __pyx_v_reldx, double __pyx_v_reldy); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_24add_overlay(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, int __pyx_v_gridpos, PyObject *__pyx_v_text1, PyObject *__pyx_v_text2); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_26add_marker(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_marker_params); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_28_add_marker_to_scene(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_marker_params); /* proto */
static void __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_30__dealloc__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3scn___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3cam___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_4vopt___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_4pert___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3con___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_14opengl_context___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_visible___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_markers___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_overlay___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_9offscreen___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3sim___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3sim_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3sim_4__del__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_24MjRenderContextOffscreen___cinit__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_sim, int __pyx_v_device_id); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_21MjRenderContextWindow___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_sim); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_21MjRenderContextWindow_2window(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_21MjRenderContextWindow_4render(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height, PyObject *__pyx_v_batch_size, PyObject *__pyx_v_device_id, PyObject *__pyx_v_depth, PyObject *__pyx_v_use_cuda); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_2_init_cuda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_4map(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_6unmap(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_8prepare_render_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_sim); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_10render(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_sim, PyObject *__pyx_v_camera_id, PyObject *__pyx_v_batch_offset); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_12read(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_14_read_cuda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_16_read_nocuda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_18cuda_rgb_buffer_pointer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_20cuda_depth_buffer_pointer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_22__del__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_446set_warning_callback(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_warn); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_448get_warning_callback(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_19wrap_mujoco_warning___enter__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_19wrap_mujoco_warning_2__exit__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type, CYTHON_UNUSED PyObject *__pyx_v_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_450load_model_from_path(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_452load_model_from_xml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_xml_str); /* proto */
static PyObject *__pyx_pf_9mujoco_py_4cymj_454load_model_from_mjb(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_mjb_bytes); /* proto */
static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */
static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer); /* proto */
static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr); /* proto */
static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object); /* proto */
static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */
static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVFS(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjOption(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_global_(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_quality(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_headlight(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_map(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_scale(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_rgba(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjStatistic(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjModel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjContact(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjWarningStat(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjTimerStat(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjSolverStat(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjData(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvPerturb(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvCamera(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvGLCamera(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvGeom(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvLight(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvOption(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvScene(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvFigure(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjrRect(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjrContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_MjSim(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj_MjRenderContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_keys = {0, &__pyx_n_s_keys, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values = {0, &__pyx_n_s_values, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyList_Type_pop = {0, &__pyx_n_s_pop, 0, 0, 0};
static PyObject *__pyx_float_0_1;
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_2;
static PyObject *__pyx_int_3;
static PyObject *__pyx_int_4;
static PyObject *__pyx_int_6;
static PyObject *__pyx_int_7;
static PyObject *__pyx_int_1000;
static PyObject *__pyx_int_184977713;
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_tuple_;
static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__3;
static PyObject *__pyx_tuple__4;
static PyObject *__pyx_tuple__5;
static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__16;
static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__19;
static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__22;
static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__31;
static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__37;
static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__39;
static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__41;
static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__43;
static PyObject *__pyx_tuple__44;
static PyObject *__pyx_tuple__45;
static PyObject *__pyx_tuple__46;
static PyObject *__pyx_tuple__47;
static PyObject *__pyx_tuple__48;
static PyObject *__pyx_tuple__49;
static PyObject *__pyx_tuple__50;
static PyObject *__pyx_tuple__51;
static PyObject *__pyx_tuple__52;
static PyObject *__pyx_tuple__53;
static PyObject *__pyx_tuple__54;
static PyObject *__pyx_tuple__55;
static PyObject *__pyx_tuple__56;
static PyObject *__pyx_tuple__57;
static PyObject *__pyx_tuple__58;
static PyObject *__pyx_tuple__59;
static PyObject *__pyx_tuple__60;
static PyObject *__pyx_tuple__61;
static PyObject *__pyx_tuple__62;
static PyObject *__pyx_tuple__63;
static PyObject *__pyx_tuple__64;
static PyObject *__pyx_tuple__65;
static PyObject *__pyx_tuple__66;
static PyObject *__pyx_tuple__67;
static PyObject *__pyx_tuple__68;
static PyObject *__pyx_tuple__69;
static PyObject *__pyx_tuple__70;
static PyObject *__pyx_tuple__71;
static PyObject *__pyx_tuple__72;
static PyObject *__pyx_tuple__73;
static PyObject *__pyx_tuple__74;
static PyObject *__pyx_tuple__75;
static PyObject *__pyx_tuple__76;
static PyObject *__pyx_tuple__77;
static PyObject *__pyx_tuple__78;
static PyObject *__pyx_tuple__79;
static PyObject *__pyx_tuple__80;
static PyObject *__pyx_tuple__81;
static PyObject *__pyx_tuple__82;
static PyObject *__pyx_tuple__84;
static PyObject *__pyx_tuple__86;
static PyObject *__pyx_tuple__87;
static PyObject *__pyx_tuple__88;
static PyObject *__pyx_tuple__89;
static PyObject *__pyx_tuple__90;
static PyObject *__pyx_tuple__91;
static PyObject *__pyx_tuple__92;
static PyObject *__pyx_tuple__93;
static PyObject *__pyx_tuple__94;
static PyObject *__pyx_tuple__95;
static PyObject *__pyx_tuple__96;
static PyObject *__pyx_tuple__97;
static PyObject *__pyx_tuple__98;
static PyObject *__pyx_tuple__99;
static PyObject *__pyx_slice__101;
static PyObject *__pyx_slice__102;
static PyObject *__pyx_slice__103;
static PyObject *__pyx_slice__104;
static PyObject *__pyx_slice__105;
static PyObject *__pyx_slice__106;
static PyObject *__pyx_slice__122;
static PyObject *__pyx_slice__127;
static PyObject *__pyx_slice__165;
static PyObject *__pyx_slice__166;
static PyObject *__pyx_slice__167;
static PyObject *__pyx_tuple__100;
static PyObject *__pyx_tuple__108;
static PyObject *__pyx_tuple__109;
static PyObject *__pyx_tuple__110;
static PyObject *__pyx_tuple__112;
static PyObject *__pyx_tuple__113;
static PyObject *__pyx_tuple__114;
static PyObject *__pyx_tuple__115;
static PyObject *__pyx_tuple__116;
static PyObject *__pyx_tuple__117;
static PyObject *__pyx_tuple__118;
static PyObject *__pyx_tuple__119;
static PyObject *__pyx_tuple__121;
static PyObject *__pyx_tuple__124;
static PyObject *__pyx_tuple__125;
static PyObject *__pyx_tuple__126;
static PyObject *__pyx_tuple__128;
static PyObject *__pyx_tuple__129;
static PyObject *__pyx_tuple__130;
static PyObject *__pyx_tuple__131;
static PyObject *__pyx_tuple__132;
static PyObject *__pyx_tuple__133;
static PyObject *__pyx_tuple__134;
static PyObject *__pyx_tuple__135;
static PyObject *__pyx_tuple__136;
static PyObject *__pyx_tuple__137;
static PyObject *__pyx_tuple__138;
static PyObject *__pyx_tuple__139;
static PyObject *__pyx_tuple__140;
static PyObject *__pyx_tuple__141;
static PyObject *__pyx_tuple__142;
static PyObject *__pyx_tuple__143;
static PyObject *__pyx_tuple__144;
static PyObject *__pyx_tuple__145;
static PyObject *__pyx_tuple__146;
static PyObject *__pyx_tuple__147;
static PyObject *__pyx_tuple__148;
static PyObject *__pyx_tuple__149;
static PyObject *__pyx_tuple__150;
static PyObject *__pyx_tuple__151;
static PyObject *__pyx_tuple__152;
static PyObject *__pyx_tuple__153;
static PyObject *__pyx_tuple__154;
static PyObject *__pyx_tuple__155;
static PyObject *__pyx_tuple__156;
static PyObject *__pyx_tuple__157;
static PyObject *__pyx_tuple__158;
static PyObject *__pyx_tuple__159;
static PyObject *__pyx_tuple__160;
static PyObject *__pyx_tuple__161;
static PyObject *__pyx_tuple__162;
static PyObject *__pyx_tuple__163;
static PyObject *__pyx_tuple__164;
static PyObject *__pyx_tuple__168;
static PyObject *__pyx_tuple__169;
static PyObject *__pyx_tuple__170;
static PyObject *__pyx_tuple__174;
static PyObject *__pyx_tuple__177;
static PyObject *__pyx_tuple__179;
static PyObject *__pyx_tuple__181;
static PyObject *__pyx_tuple__183;
static PyObject *__pyx_tuple__185;
static PyObject *__pyx_tuple__187;
static PyObject *__pyx_tuple__189;
static PyObject *__pyx_tuple__191;
static PyObject *__pyx_tuple__193;
static PyObject *__pyx_tuple__195;
static PyObject *__pyx_tuple__197;
static PyObject *__pyx_tuple__200;
static PyObject *__pyx_tuple__202;
static PyObject *__pyx_tuple__204;
static PyObject *__pyx_tuple__206;
static PyObject *__pyx_tuple__208;
static PyObject *__pyx_tuple__210;
static PyObject *__pyx_tuple__212;
static PyObject *__pyx_tuple__214;
static PyObject *__pyx_tuple__216;
static PyObject *__pyx_tuple__218;
static PyObject *__pyx_tuple__220;
static PyObject *__pyx_tuple__222;
static PyObject *__pyx_tuple__224;
static PyObject *__pyx_tuple__226;
static PyObject *__pyx_tuple__228;
static PyObject *__pyx_tuple__230;
static PyObject *__pyx_tuple__232;
static PyObject *__pyx_tuple__234;
static PyObject *__pyx_tuple__237;
static PyObject *__pyx_tuple__239;
static PyObject *__pyx_tuple__241;
static PyObject *__pyx_tuple__243;
static PyObject *__pyx_tuple__245;
static PyObject *__pyx_tuple__247;
static PyObject *__pyx_tuple__249;
static PyObject *__pyx_tuple__251;
static PyObject *__pyx_tuple__253;
static PyObject *__pyx_tuple__255;
static PyObject *__pyx_tuple__257;
static PyObject *__pyx_tuple__259;
static PyObject *__pyx_tuple__261;
static PyObject *__pyx_tuple__263;
static PyObject *__pyx_tuple__265;
static PyObject *__pyx_tuple__267;
static PyObject *__pyx_tuple__269;
static PyObject *__pyx_tuple__271;
static PyObject *__pyx_tuple__273;
static PyObject *__pyx_tuple__275;
static PyObject *__pyx_tuple__277;
static PyObject *__pyx_tuple__279;
static PyObject *__pyx_tuple__281;
static PyObject *__pyx_tuple__283;
static PyObject *__pyx_tuple__285;
static PyObject *__pyx_tuple__287;
static PyObject *__pyx_tuple__289;
static PyObject *__pyx_tuple__291;
static PyObject *__pyx_tuple__293;
static PyObject *__pyx_tuple__295;
static PyObject *__pyx_tuple__297;
static PyObject *__pyx_tuple__299;
static PyObject *__pyx_tuple__301;
static PyObject *__pyx_tuple__303;
static PyObject *__pyx_tuple__305;
static PyObject *__pyx_tuple__307;
static PyObject *__pyx_tuple__309;
static PyObject *__pyx_tuple__311;
static PyObject *__pyx_tuple__313;
static PyObject *__pyx_tuple__315;
static PyObject *__pyx_tuple__317;
static PyObject *__pyx_tuple__319;
static PyObject *__pyx_tuple__321;
static PyObject *__pyx_tuple__323;
static PyObject *__pyx_tuple__325;
static PyObject *__pyx_tuple__327;
static PyObject *__pyx_tuple__329;
static PyObject *__pyx_tuple__331;
static PyObject *__pyx_tuple__333;
static PyObject *__pyx_tuple__335;
static PyObject *__pyx_tuple__337;
static PyObject *__pyx_tuple__339;
static PyObject *__pyx_tuple__341;
static PyObject *__pyx_tuple__343;
static PyObject *__pyx_tuple__345;
static PyObject *__pyx_tuple__347;
static PyObject *__pyx_tuple__349;
static PyObject *__pyx_tuple__351;
static PyObject *__pyx_tuple__353;
static PyObject *__pyx_tuple__355;
static PyObject *__pyx_tuple__357;
static PyObject *__pyx_tuple__359;
static PyObject *__pyx_tuple__361;
static PyObject *__pyx_tuple__363;
static PyObject *__pyx_tuple__365;
static PyObject *__pyx_tuple__367;
static PyObject *__pyx_tuple__370;
static PyObject *__pyx_tuple__372;
static PyObject *__pyx_tuple__374;
static PyObject *__pyx_tuple__376;
static PyObject *__pyx_tuple__378;
static PyObject *__pyx_tuple__380;
static PyObject *__pyx_tuple__382;
static PyObject *__pyx_tuple__384;
static PyObject *__pyx_tuple__386;
static PyObject *__pyx_tuple__388;
static PyObject *__pyx_tuple__390;
static PyObject *__pyx_tuple__392;
static PyObject *__pyx_tuple__394;
static PyObject *__pyx_tuple__396;
static PyObject *__pyx_tuple__398;
static PyObject *__pyx_tuple__400;
static PyObject *__pyx_tuple__402;
static PyObject *__pyx_tuple__404;
static PyObject *__pyx_tuple__406;
static PyObject *__pyx_tuple__408;
static PyObject *__pyx_tuple__410;
static PyObject *__pyx_tuple__412;
static PyObject *__pyx_tuple__414;
static PyObject *__pyx_tuple__416;
static PyObject *__pyx_tuple__418;
static PyObject *__pyx_tuple__420;
static PyObject *__pyx_tuple__422;
static PyObject *__pyx_tuple__424;
static PyObject *__pyx_tuple__426;
static PyObject *__pyx_tuple__428;
static PyObject *__pyx_tuple__430;
static PyObject *__pyx_tuple__432;
static PyObject *__pyx_tuple__434;
static PyObject *__pyx_tuple__436;
static PyObject *__pyx_tuple__438;
static PyObject *__pyx_tuple__440;
static PyObject *__pyx_tuple__442;
static PyObject *__pyx_tuple__446;
static PyObject *__pyx_tuple__448;
static PyObject *__pyx_tuple__450;
static PyObject *__pyx_tuple__452;
static PyObject *__pyx_tuple__454;
static PyObject *__pyx_tuple__456;
static PyObject *__pyx_tuple__459;
static PyObject *__pyx_tuple__461;
static PyObject *__pyx_tuple__463;
static PyObject *__pyx_tuple__465;
static PyObject *__pyx_tuple__467;
static PyObject *__pyx_tuple__469;
static PyObject *__pyx_tuple__471;
static PyObject *__pyx_tuple__473;
static PyObject *__pyx_tuple__475;
static PyObject *__pyx_tuple__477;
static PyObject *__pyx_tuple__479;
static PyObject *__pyx_tuple__481;
static PyObject *__pyx_tuple__483;
static PyObject *__pyx_tuple__485;
static PyObject *__pyx_tuple__487;
static PyObject *__pyx_tuple__489;
static PyObject *__pyx_tuple__491;
static PyObject *__pyx_tuple__493;
static PyObject *__pyx_tuple__495;
static PyObject *__pyx_tuple__497;
static PyObject *__pyx_tuple__499;
static PyObject *__pyx_tuple__501;
static PyObject *__pyx_tuple__503;
static PyObject *__pyx_tuple__505;
static PyObject *__pyx_tuple__507;
static PyObject *__pyx_tuple__509;
static PyObject *__pyx_tuple__511;
static PyObject *__pyx_tuple__513;
static PyObject *__pyx_tuple__515;
static PyObject *__pyx_tuple__517;
static PyObject *__pyx_tuple__519;
static PyObject *__pyx_tuple__521;
static PyObject *__pyx_tuple__523;
static PyObject *__pyx_tuple__525;
static PyObject *__pyx_tuple__527;
static PyObject *__pyx_tuple__529;
static PyObject *__pyx_tuple__531;
static PyObject *__pyx_tuple__533;
static PyObject *__pyx_tuple__535;
static PyObject *__pyx_tuple__537;
static PyObject *__pyx_tuple__539;
static PyObject *__pyx_tuple__541;
static PyObject *__pyx_tuple__543;
static PyObject *__pyx_tuple__545;
static PyObject *__pyx_tuple__547;
static PyObject *__pyx_tuple__549;
static PyObject *__pyx_tuple__551;
static PyObject *__pyx_tuple__553;
static PyObject *__pyx_tuple__555;
static PyObject *__pyx_tuple__557;
static PyObject *__pyx_tuple__559;
static PyObject *__pyx_tuple__561;
static PyObject *__pyx_tuple__563;
static PyObject *__pyx_tuple__565;
static PyObject *__pyx_tuple__567;
static PyObject *__pyx_tuple__569;
static PyObject *__pyx_tuple__571;
static PyObject *__pyx_tuple__573;
static PyObject *__pyx_tuple__575;
static PyObject *__pyx_tuple__577;
static PyObject *__pyx_tuple__579;
static PyObject *__pyx_tuple__581;
static PyObject *__pyx_tuple__583;
static PyObject *__pyx_tuple__585;
static PyObject *__pyx_tuple__587;
static PyObject *__pyx_tuple__589;
static PyObject *__pyx_tuple__591;
static PyObject *__pyx_tuple__593;
static PyObject *__pyx_tuple__595;
static PyObject *__pyx_tuple__597;
static PyObject *__pyx_tuple__599;
static PyObject *__pyx_tuple__601;
static PyObject *__pyx_tuple__603;
static PyObject *__pyx_tuple__605;
static PyObject *__pyx_tuple__607;
static PyObject *__pyx_tuple__609;
static PyObject *__pyx_tuple__612;
static PyObject *__pyx_tuple__614;
static PyObject *__pyx_tuple__616;
static PyObject *__pyx_tuple__618;
static PyObject *__pyx_tuple__619;
static PyObject *__pyx_tuple__621;
static PyObject *__pyx_tuple__623;
static PyObject *__pyx_tuple__625;
static PyObject *__pyx_tuple__627;
static PyObject *__pyx_tuple__629;
static PyObject *__pyx_tuple__631;
static PyObject *__pyx_tuple__633;
static PyObject *__pyx_tuple__635;
static PyObject *__pyx_tuple__637;
static PyObject *__pyx_tuple__639;
static PyObject *__pyx_tuple__641;
static PyObject *__pyx_tuple__643;
static PyObject *__pyx_tuple__644;
static PyObject *__pyx_tuple__646;
static PyObject *__pyx_tuple__648;
static PyObject *__pyx_tuple__650;
static PyObject *__pyx_tuple__652;
static PyObject *__pyx_tuple__654;
static PyObject *__pyx_tuple__656;
static PyObject *__pyx_tuple__658;
static PyObject *__pyx_tuple__660;
static PyObject *__pyx_tuple__662;
static PyObject *__pyx_tuple__665;
static PyObject *__pyx_tuple__666;
static PyObject *__pyx_tuple__668;
static PyObject *__pyx_tuple__669;
static PyObject *__pyx_tuple__671;
static PyObject *__pyx_tuple__673;
static PyObject *__pyx_tuple__675;
static PyObject *__pyx_tuple__677;
static PyObject *__pyx_tuple__679;
static PyObject *__pyx_tuple__680;
static PyObject *__pyx_tuple__682;
static PyObject *__pyx_tuple__684;
static PyObject *__pyx_tuple__686;
static PyObject *__pyx_tuple__688;
static PyObject *__pyx_tuple__690;
static PyObject *__pyx_tuple__692;
static PyObject *__pyx_tuple__695;
static PyObject *__pyx_tuple__696;
static PyObject *__pyx_tuple__698;
static PyObject *__pyx_tuple__700;
static PyObject *__pyx_tuple__702;
static PyObject *__pyx_tuple__704;
static PyObject *__pyx_tuple__706;
static PyObject *__pyx_tuple__707;
static PyObject *__pyx_tuple__708;
static PyObject *__pyx_tuple__709;
static PyObject *__pyx_tuple__710;
static PyObject *__pyx_tuple__711;
static PyObject *__pyx_codeobj__111;
static PyObject *__pyx_codeobj__175;
static PyObject *__pyx_codeobj__176;
static PyObject *__pyx_codeobj__178;
static PyObject *__pyx_codeobj__180;
static PyObject *__pyx_codeobj__182;
static PyObject *__pyx_codeobj__184;
static PyObject *__pyx_codeobj__186;
static PyObject *__pyx_codeobj__188;
static PyObject *__pyx_codeobj__190;
static PyObject *__pyx_codeobj__192;
static PyObject *__pyx_codeobj__194;
static PyObject *__pyx_codeobj__196;
static PyObject *__pyx_codeobj__198;
static PyObject *__pyx_codeobj__199;
static PyObject *__pyx_codeobj__201;
static PyObject *__pyx_codeobj__203;
static PyObject *__pyx_codeobj__205;
static PyObject *__pyx_codeobj__207;
static PyObject *__pyx_codeobj__209;
static PyObject *__pyx_codeobj__211;
static PyObject *__pyx_codeobj__213;
static PyObject *__pyx_codeobj__215;
static PyObject *__pyx_codeobj__217;
static PyObject *__pyx_codeobj__219;
static PyObject *__pyx_codeobj__221;
static PyObject *__pyx_codeobj__223;
static PyObject *__pyx_codeobj__225;
static PyObject *__pyx_codeobj__227;
static PyObject *__pyx_codeobj__229;
static PyObject *__pyx_codeobj__231;
static PyObject *__pyx_codeobj__233;
static PyObject *__pyx_codeobj__235;
static PyObject *__pyx_codeobj__236;
static PyObject *__pyx_codeobj__238;
static PyObject *__pyx_codeobj__240;
static PyObject *__pyx_codeobj__242;
static PyObject *__pyx_codeobj__244;
static PyObject *__pyx_codeobj__246;
static PyObject *__pyx_codeobj__248;
static PyObject *__pyx_codeobj__250;
static PyObject *__pyx_codeobj__252;
static PyObject *__pyx_codeobj__254;
static PyObject *__pyx_codeobj__256;
static PyObject *__pyx_codeobj__258;
static PyObject *__pyx_codeobj__260;
static PyObject *__pyx_codeobj__262;
static PyObject *__pyx_codeobj__264;
static PyObject *__pyx_codeobj__266;
static PyObject *__pyx_codeobj__268;
static PyObject *__pyx_codeobj__270;
static PyObject *__pyx_codeobj__272;
static PyObject *__pyx_codeobj__274;
static PyObject *__pyx_codeobj__276;
static PyObject *__pyx_codeobj__278;
static PyObject *__pyx_codeobj__280;
static PyObject *__pyx_codeobj__282;
static PyObject *__pyx_codeobj__284;
static PyObject *__pyx_codeobj__286;
static PyObject *__pyx_codeobj__288;
static PyObject *__pyx_codeobj__290;
static PyObject *__pyx_codeobj__292;
static PyObject *__pyx_codeobj__294;
static PyObject *__pyx_codeobj__296;
static PyObject *__pyx_codeobj__298;
static PyObject *__pyx_codeobj__300;
static PyObject *__pyx_codeobj__302;
static PyObject *__pyx_codeobj__304;
static PyObject *__pyx_codeobj__306;
static PyObject *__pyx_codeobj__308;
static PyObject *__pyx_codeobj__310;
static PyObject *__pyx_codeobj__312;
static PyObject *__pyx_codeobj__314;
static PyObject *__pyx_codeobj__316;
static PyObject *__pyx_codeobj__318;
static PyObject *__pyx_codeobj__320;
static PyObject *__pyx_codeobj__322;
static PyObject *__pyx_codeobj__324;
static PyObject *__pyx_codeobj__326;
static PyObject *__pyx_codeobj__328;
static PyObject *__pyx_codeobj__330;
static PyObject *__pyx_codeobj__332;
static PyObject *__pyx_codeobj__334;
static PyObject *__pyx_codeobj__336;
static PyObject *__pyx_codeobj__338;
static PyObject *__pyx_codeobj__340;
static PyObject *__pyx_codeobj__342;
static PyObject *__pyx_codeobj__344;
static PyObject *__pyx_codeobj__346;
static PyObject *__pyx_codeobj__348;
static PyObject *__pyx_codeobj__350;
static PyObject *__pyx_codeobj__352;
static PyObject *__pyx_codeobj__354;
static PyObject *__pyx_codeobj__356;
static PyObject *__pyx_codeobj__358;
static PyObject *__pyx_codeobj__360;
static PyObject *__pyx_codeobj__362;
static PyObject *__pyx_codeobj__364;
static PyObject *__pyx_codeobj__366;
static PyObject *__pyx_codeobj__368;
static PyObject *__pyx_codeobj__369;
static PyObject *__pyx_codeobj__371;
static PyObject *__pyx_codeobj__373;
static PyObject *__pyx_codeobj__375;
static PyObject *__pyx_codeobj__377;
static PyObject *__pyx_codeobj__379;
static PyObject *__pyx_codeobj__381;
static PyObject *__pyx_codeobj__383;
static PyObject *__pyx_codeobj__385;
static PyObject *__pyx_codeobj__387;
static PyObject *__pyx_codeobj__389;
static PyObject *__pyx_codeobj__391;
static PyObject *__pyx_codeobj__393;
static PyObject *__pyx_codeobj__395;
static PyObject *__pyx_codeobj__397;
static PyObject *__pyx_codeobj__399;
static PyObject *__pyx_codeobj__401;
static PyObject *__pyx_codeobj__403;
static PyObject *__pyx_codeobj__405;
static PyObject *__pyx_codeobj__407;
static PyObject *__pyx_codeobj__409;
static PyObject *__pyx_codeobj__411;
static PyObject *__pyx_codeobj__413;
static PyObject *__pyx_codeobj__415;
static PyObject *__pyx_codeobj__417;
static PyObject *__pyx_codeobj__419;
static PyObject *__pyx_codeobj__421;
static PyObject *__pyx_codeobj__423;
static PyObject *__pyx_codeobj__425;
static PyObject *__pyx_codeobj__427;
static PyObject *__pyx_codeobj__429;
static PyObject *__pyx_codeobj__431;
static PyObject *__pyx_codeobj__433;
static PyObject *__pyx_codeobj__435;
static PyObject *__pyx_codeobj__437;
static PyObject *__pyx_codeobj__439;
static PyObject *__pyx_codeobj__441;
static PyObject *__pyx_codeobj__443;
static PyObject *__pyx_codeobj__444;
static PyObject *__pyx_codeobj__445;
static PyObject *__pyx_codeobj__447;
static PyObject *__pyx_codeobj__449;
static PyObject *__pyx_codeobj__451;
static PyObject *__pyx_codeobj__453;
static PyObject *__pyx_codeobj__455;
static PyObject *__pyx_codeobj__457;
static PyObject *__pyx_codeobj__458;
static PyObject *__pyx_codeobj__460;
static PyObject *__pyx_codeobj__462;
static PyObject *__pyx_codeobj__464;
static PyObject *__pyx_codeobj__466;
static PyObject *__pyx_codeobj__468;
static PyObject *__pyx_codeobj__470;
static PyObject *__pyx_codeobj__472;
static PyObject *__pyx_codeobj__474;
static PyObject *__pyx_codeobj__476;
static PyObject *__pyx_codeobj__478;
static PyObject *__pyx_codeobj__480;
static PyObject *__pyx_codeobj__482;
static PyObject *__pyx_codeobj__484;
static PyObject *__pyx_codeobj__486;
static PyObject *__pyx_codeobj__488;
static PyObject *__pyx_codeobj__490;
static PyObject *__pyx_codeobj__492;
static PyObject *__pyx_codeobj__494;
static PyObject *__pyx_codeobj__496;
static PyObject *__pyx_codeobj__498;
static PyObject *__pyx_codeobj__500;
static PyObject *__pyx_codeobj__502;
static PyObject *__pyx_codeobj__504;
static PyObject *__pyx_codeobj__506;
static PyObject *__pyx_codeobj__508;
static PyObject *__pyx_codeobj__510;
static PyObject *__pyx_codeobj__512;
static PyObject *__pyx_codeobj__514;
static PyObject *__pyx_codeobj__516;
static PyObject *__pyx_codeobj__518;
static PyObject *__pyx_codeobj__520;
static PyObject *__pyx_codeobj__522;
static PyObject *__pyx_codeobj__524;
static PyObject *__pyx_codeobj__526;
static PyObject *__pyx_codeobj__528;
static PyObject *__pyx_codeobj__530;
static PyObject *__pyx_codeobj__532;
static PyObject *__pyx_codeobj__534;
static PyObject *__pyx_codeobj__536;
static PyObject *__pyx_codeobj__538;
static PyObject *__pyx_codeobj__540;
static PyObject *__pyx_codeobj__542;
static PyObject *__pyx_codeobj__544;
static PyObject *__pyx_codeobj__546;
static PyObject *__pyx_codeobj__548;
static PyObject *__pyx_codeobj__550;
static PyObject *__pyx_codeobj__552;
static PyObject *__pyx_codeobj__554;
static PyObject *__pyx_codeobj__556;
static PyObject *__pyx_codeobj__558;
static PyObject *__pyx_codeobj__560;
static PyObject *__pyx_codeobj__562;
static PyObject *__pyx_codeobj__564;
static PyObject *__pyx_codeobj__566;
static PyObject *__pyx_codeobj__568;
static PyObject *__pyx_codeobj__570;
static PyObject *__pyx_codeobj__572;
static PyObject *__pyx_codeobj__574;
static PyObject *__pyx_codeobj__576;
static PyObject *__pyx_codeobj__578;
static PyObject *__pyx_codeobj__580;
static PyObject *__pyx_codeobj__582;
static PyObject *__pyx_codeobj__584;
static PyObject *__pyx_codeobj__586;
static PyObject *__pyx_codeobj__588;
static PyObject *__pyx_codeobj__590;
static PyObject *__pyx_codeobj__592;
static PyObject *__pyx_codeobj__594;
static PyObject *__pyx_codeobj__596;
static PyObject *__pyx_codeobj__598;
static PyObject *__pyx_codeobj__600;
static PyObject *__pyx_codeobj__602;
static PyObject *__pyx_codeobj__604;
static PyObject *__pyx_codeobj__606;
static PyObject *__pyx_codeobj__608;
static PyObject *__pyx_codeobj__610;
static PyObject *__pyx_codeobj__613;
static PyObject *__pyx_codeobj__615;
static PyObject *__pyx_codeobj__617;
static PyObject *__pyx_codeobj__620;
static PyObject *__pyx_codeobj__622;
static PyObject *__pyx_codeobj__624;
static PyObject *__pyx_codeobj__626;
static PyObject *__pyx_codeobj__628;
static PyObject *__pyx_codeobj__630;
static PyObject *__pyx_codeobj__632;
static PyObject *__pyx_codeobj__634;
static PyObject *__pyx_codeobj__636;
static PyObject *__pyx_codeobj__638;
static PyObject *__pyx_codeobj__640;
static PyObject *__pyx_codeobj__642;
static PyObject *__pyx_codeobj__645;
static PyObject *__pyx_codeobj__647;
static PyObject *__pyx_codeobj__649;
static PyObject *__pyx_codeobj__651;
static PyObject *__pyx_codeobj__653;
static PyObject *__pyx_codeobj__655;
static PyObject *__pyx_codeobj__657;
static PyObject *__pyx_codeobj__659;
static PyObject *__pyx_codeobj__661;
static PyObject *__pyx_codeobj__663;
static PyObject *__pyx_codeobj__667;
static PyObject *__pyx_codeobj__670;
static PyObject *__pyx_codeobj__672;
static PyObject *__pyx_codeobj__674;
static PyObject *__pyx_codeobj__676;
static PyObject *__pyx_codeobj__678;
static PyObject *__pyx_codeobj__681;
static PyObject *__pyx_codeobj__683;
static PyObject *__pyx_codeobj__685;
static PyObject *__pyx_codeobj__687;
static PyObject *__pyx_codeobj__689;
static PyObject *__pyx_codeobj__691;
static PyObject *__pyx_codeobj__693;
static PyObject *__pyx_codeobj__694;
static PyObject *__pyx_codeobj__697;
static PyObject *__pyx_codeobj__699;
static PyObject *__pyx_codeobj__701;
static PyObject *__pyx_codeobj__703;
static PyObject *__pyx_codeobj__705;
static PyObject *__pyx_codeobj__712;

/* "mujoco_py/generated/wrappers.pxi":17
 *     cdef np.ndarray _filesize
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = <mjVFS*> PyMem_Malloc(sizeof(mjVFS))
 *         if not self.ptr:
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_7PyMjVFS___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_7PyMjVFS___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":18
 * 
 *     def __cinit__(self):
 *         self.ptr = <mjVFS*> PyMem_Malloc(sizeof(mjVFS))             # <<<<<<<<<<<<<<
 *         if not self.ptr:
 *             raise MemoryError()
 */
  __pyx_v_self->ptr = ((mjVFS *)PyMem_Malloc((sizeof(mjVFS))));

  /* "mujoco_py/generated/wrappers.pxi":19
 *     def __cinit__(self):
 *         self.ptr = <mjVFS*> PyMem_Malloc(sizeof(mjVFS))
 *         if not self.ptr:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
  __pyx_t_1 = ((!(__pyx_v_self->ptr != 0)) != 0);
  if (__pyx_t_1) {

    /* "mujoco_py/generated/wrappers.pxi":20
 *         self.ptr = <mjVFS*> PyMem_Malloc(sizeof(mjVFS))
 *         if not self.ptr:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    PyErr_NoMemory(); __PYX_ERR(3, 20, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":19
 *     def __cinit__(self):
 *         self.ptr = <mjVFS*> PyMem_Malloc(sizeof(mjVFS))
 *         if not self.ptr:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":17
 *     cdef np.ndarray _filesize
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = <mjVFS*> PyMem_Malloc(sizeof(mjVFS))
 *         if not self.ptr:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVFS.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":22
 *             raise MemoryError()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         PyMem_Free(self.ptr)
 * 
 */

/* Python wrapper */
static void __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_2__dealloc__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_2__dealloc__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "mujoco_py/generated/wrappers.pxi":23
 * 
 *     def __dealloc__(self):
 *         PyMem_Free(self.ptr)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  PyMem_Free(__pyx_v_self->ptr);

  /* "mujoco_py/generated/wrappers.pxi":22
 *             raise MemoryError()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         PyMem_Free(self.ptr)
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":27
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjVFS* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVFS.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":29
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVFS* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_7PyMjVFS__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self, mjVFS *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":31
 *     cdef void _set(self, mjVFS* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":34
 * 
 * 
 *         self._filesize = _wrap_int_1d(&p.filesize[0], 200)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d((&(__pyx_v_p->filesize[0])), 0xC8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_filesize);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_filesize));
  __pyx_v_self->_filesize = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":29
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVFS* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjVFS._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":37
 * 
 *     @property
 *     def nfile(self): return self.ptr.nfile             # <<<<<<<<<<<<<<
 *     @nfile.setter
 *     def nfile(self, int x): self.ptr.nfile = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_5nfile_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_5nfile_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_5nfile___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_5nfile___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nfile); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVFS.nfile.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":39
 *     def nfile(self): return self.ptr.nfile
 *     @nfile.setter
 *     def nfile(self, int x): self.ptr.nfile = x             # <<<<<<<<<<<<<<
 *     @property
 *     def filesize(self): return self._filesize
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_5nfile_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_5nfile_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 39, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVFS.nfile.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_5nfile_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_5nfile_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nfile = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":41
 *     def nfile(self, int x): self.ptr.nfile = x
 *     @property
 *     def filesize(self): return self._filesize             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjVFS WrapMjVFS(mjVFS* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_8filesize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_8filesize_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_8filesize___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_8filesize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_filesize));
  __pyx_r = ((PyObject *)__pyx_v_self->_filesize);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_4__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVFS.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_7PyMjVFS_6__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_7PyMjVFS_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVFS.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":43
 *     def filesize(self): return self._filesize
 * 
 * cdef PyMjVFS WrapMjVFS(mjVFS* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVFS o = PyMjVFS()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_f_9mujoco_py_4cymj_WrapMjVFS(mjVFS *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjVFS", 0);

  /* "mujoco_py/generated/wrappers.pxi":44
 * 
 * cdef PyMjVFS WrapMjVFS(mjVFS* p):
 *     cdef PyMjVFS o = PyMjVFS()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjVFS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":45
 * cdef PyMjVFS WrapMjVFS(mjVFS* p):
 *     cdef PyMjVFS o = PyMjVFS()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":46
 *     cdef PyMjVFS o = PyMjVFS()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjOption(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":43
 *     def filesize(self): return self._filesize
 * 
 * cdef PyMjVFS WrapMjVFS(mjVFS* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVFS o = PyMjVFS()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjVFS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":58
 *     cdef np.ndarray _o_solimp
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":59
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":58
 *     cdef np.ndarray _o_solimp
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":63
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjOption* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":65
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjOption* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_10PyMjOption__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjOption *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":67
 *     cdef void _set(self, mjOption* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":70
 * 
 * 
 *         self._gravity = _wrap_mjtNum_1d(&p.gravity[0], 3)             # <<<<<<<<<<<<<<
 *         self._wind = _wrap_mjtNum_1d(&p.wind[0], 3)
 *         self._magnetic = _wrap_mjtNum_1d(&p.magnetic[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->gravity[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_gravity);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_gravity));
  __pyx_v_self->_gravity = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":71
 * 
 *         self._gravity = _wrap_mjtNum_1d(&p.gravity[0], 3)
 *         self._wind = _wrap_mjtNum_1d(&p.wind[0], 3)             # <<<<<<<<<<<<<<
 *         self._magnetic = _wrap_mjtNum_1d(&p.magnetic[0], 3)
 *         self._o_solref = _wrap_mjtNum_1d(&p.o_solref[0], 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->wind[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_wind);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_wind));
  __pyx_v_self->_wind = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":72
 *         self._gravity = _wrap_mjtNum_1d(&p.gravity[0], 3)
 *         self._wind = _wrap_mjtNum_1d(&p.wind[0], 3)
 *         self._magnetic = _wrap_mjtNum_1d(&p.magnetic[0], 3)             # <<<<<<<<<<<<<<
 *         self._o_solref = _wrap_mjtNum_1d(&p.o_solref[0], 2)
 *         self._o_solimp = _wrap_mjtNum_1d(&p.o_solimp[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->magnetic[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_magnetic);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_magnetic));
  __pyx_v_self->_magnetic = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":73
 *         self._wind = _wrap_mjtNum_1d(&p.wind[0], 3)
 *         self._magnetic = _wrap_mjtNum_1d(&p.magnetic[0], 3)
 *         self._o_solref = _wrap_mjtNum_1d(&p.o_solref[0], 2)             # <<<<<<<<<<<<<<
 *         self._o_solimp = _wrap_mjtNum_1d(&p.o_solimp[0], 3)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->o_solref[0])), 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_o_solref);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_o_solref));
  __pyx_v_self->_o_solref = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":74
 *         self._magnetic = _wrap_mjtNum_1d(&p.magnetic[0], 3)
 *         self._o_solref = _wrap_mjtNum_1d(&p.o_solref[0], 2)
 *         self._o_solimp = _wrap_mjtNum_1d(&p.o_solimp[0], 3)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->o_solimp[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_o_solimp);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_o_solimp));
  __pyx_v_self->_o_solimp = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":65
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjOption* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjOption._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":77
 * 
 *     @property
 *     def timestep(self): return self.ptr.timestep             # <<<<<<<<<<<<<<
 *     @timestep.setter
 *     def timestep(self, mjtNum x): self.ptr.timestep = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8timestep_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8timestep_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8timestep___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8timestep___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->timestep); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.timestep.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":79
 *     def timestep(self): return self.ptr.timestep
 *     @timestep.setter
 *     def timestep(self, mjtNum x): self.ptr.timestep = x             # <<<<<<<<<<<<<<
 *     @property
 *     def apirate(self): return self.ptr.apirate
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8timestep_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8timestep_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 79, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.timestep.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8timestep_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8timestep_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->timestep = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":81
 *     def timestep(self, mjtNum x): self.ptr.timestep = x
 *     @property
 *     def apirate(self): return self.ptr.apirate             # <<<<<<<<<<<<<<
 *     @apirate.setter
 *     def apirate(self, mjtNum x): self.ptr.apirate = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_7apirate_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_7apirate_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7apirate___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_7apirate___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->apirate); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.apirate.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":83
 *     def apirate(self): return self.ptr.apirate
 *     @apirate.setter
 *     def apirate(self, mjtNum x): self.ptr.apirate = x             # <<<<<<<<<<<<<<
 *     @property
 *     def impratio(self): return self.ptr.impratio
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7apirate_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7apirate_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 83, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.apirate.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7apirate_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7apirate_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->apirate = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":85
 *     def apirate(self, mjtNum x): self.ptr.apirate = x
 *     @property
 *     def impratio(self): return self.ptr.impratio             # <<<<<<<<<<<<<<
 *     @impratio.setter
 *     def impratio(self, mjtNum x): self.ptr.impratio = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8impratio_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8impratio_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8impratio___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8impratio___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->impratio); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.impratio.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":87
 *     def impratio(self): return self.ptr.impratio
 *     @impratio.setter
 *     def impratio(self, mjtNum x): self.ptr.impratio = x             # <<<<<<<<<<<<<<
 *     @property
 *     def tolerance(self): return self.ptr.tolerance
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8impratio_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8impratio_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 87, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.impratio.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8impratio_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8impratio_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->impratio = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":89
 *     def impratio(self, mjtNum x): self.ptr.impratio = x
 *     @property
 *     def tolerance(self): return self.ptr.tolerance             # <<<<<<<<<<<<<<
 *     @tolerance.setter
 *     def tolerance(self, mjtNum x): self.ptr.tolerance = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9tolerance_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9tolerance_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9tolerance___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9tolerance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->tolerance); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.tolerance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":91
 *     def tolerance(self): return self.ptr.tolerance
 *     @tolerance.setter
 *     def tolerance(self, mjtNum x): self.ptr.tolerance = x             # <<<<<<<<<<<<<<
 *     @property
 *     def noslip_tolerance(self): return self.ptr.noslip_tolerance
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9tolerance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9tolerance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 91, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.tolerance.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9tolerance_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9tolerance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->tolerance = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":93
 *     def tolerance(self, mjtNum x): self.ptr.tolerance = x
 *     @property
 *     def noslip_tolerance(self): return self.ptr.noslip_tolerance             # <<<<<<<<<<<<<<
 *     @noslip_tolerance.setter
 *     def noslip_tolerance(self, mjtNum x): self.ptr.noslip_tolerance = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->noslip_tolerance); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.noslip_tolerance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":95
 *     def noslip_tolerance(self): return self.ptr.noslip_tolerance
 *     @noslip_tolerance.setter
 *     def noslip_tolerance(self, mjtNum x): self.ptr.noslip_tolerance = x             # <<<<<<<<<<<<<<
 *     @property
 *     def mpr_tolerance(self): return self.ptr.mpr_tolerance
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 95, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.noslip_tolerance.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->noslip_tolerance = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":97
 *     def noslip_tolerance(self, mjtNum x): self.ptr.noslip_tolerance = x
 *     @property
 *     def mpr_tolerance(self): return self.ptr.mpr_tolerance             # <<<<<<<<<<<<<<
 *     @mpr_tolerance.setter
 *     def mpr_tolerance(self, mjtNum x): self.ptr.mpr_tolerance = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->mpr_tolerance); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.mpr_tolerance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":99
 *     def mpr_tolerance(self): return self.ptr.mpr_tolerance
 *     @mpr_tolerance.setter
 *     def mpr_tolerance(self, mjtNum x): self.ptr.mpr_tolerance = x             # <<<<<<<<<<<<<<
 *     @property
 *     def density(self): return self.ptr.density
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 99, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.mpr_tolerance.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->mpr_tolerance = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":101
 *     def mpr_tolerance(self, mjtNum x): self.ptr.mpr_tolerance = x
 *     @property
 *     def density(self): return self.ptr.density             # <<<<<<<<<<<<<<
 *     @density.setter
 *     def density(self, mjtNum x): self.ptr.density = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_7density_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_7density_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7density___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_7density___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->density); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.density.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":103
 *     def density(self): return self.ptr.density
 *     @density.setter
 *     def density(self, mjtNum x): self.ptr.density = x             # <<<<<<<<<<<<<<
 *     @property
 *     def viscosity(self): return self.ptr.viscosity
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7density_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7density_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 103, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.density.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7density_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7density_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->density = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":105
 *     def density(self, mjtNum x): self.ptr.density = x
 *     @property
 *     def viscosity(self): return self.ptr.viscosity             # <<<<<<<<<<<<<<
 *     @viscosity.setter
 *     def viscosity(self, mjtNum x): self.ptr.viscosity = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9viscosity_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9viscosity_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9viscosity___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9viscosity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->viscosity); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.viscosity.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":107
 *     def viscosity(self): return self.ptr.viscosity
 *     @viscosity.setter
 *     def viscosity(self, mjtNum x): self.ptr.viscosity = x             # <<<<<<<<<<<<<<
 *     @property
 *     def o_margin(self): return self.ptr.o_margin
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9viscosity_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9viscosity_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 107, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.viscosity.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9viscosity_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9viscosity_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->viscosity = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":109
 *     def viscosity(self, mjtNum x): self.ptr.viscosity = x
 *     @property
 *     def o_margin(self): return self.ptr.o_margin             # <<<<<<<<<<<<<<
 *     @o_margin.setter
 *     def o_margin(self, mjtNum x): self.ptr.o_margin = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_margin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_margin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_margin___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->o_margin); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.o_margin.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":111
 *     def o_margin(self): return self.ptr.o_margin
 *     @o_margin.setter
 *     def o_margin(self, mjtNum x): self.ptr.o_margin = x             # <<<<<<<<<<<<<<
 *     @property
 *     def integrator(self): return self.ptr.integrator
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_margin_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_margin_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 111, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.o_margin.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_margin_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_margin_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->o_margin = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":113
 *     def o_margin(self, mjtNum x): self.ptr.o_margin = x
 *     @property
 *     def integrator(self): return self.ptr.integrator             # <<<<<<<<<<<<<<
 *     @integrator.setter
 *     def integrator(self, int x): self.ptr.integrator = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_10integrator_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_10integrator_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_10integrator___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_10integrator___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->integrator); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.integrator.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":115
 *     def integrator(self): return self.ptr.integrator
 *     @integrator.setter
 *     def integrator(self, int x): self.ptr.integrator = x             # <<<<<<<<<<<<<<
 *     @property
 *     def collision(self): return self.ptr.collision
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_10integrator_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_10integrator_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 115, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.integrator.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_10integrator_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_10integrator_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->integrator = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":117
 *     def integrator(self, int x): self.ptr.integrator = x
 *     @property
 *     def collision(self): return self.ptr.collision             # <<<<<<<<<<<<<<
 *     @collision.setter
 *     def collision(self, int x): self.ptr.collision = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9collision_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9collision_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9collision___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9collision___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->collision); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.collision.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":119
 *     def collision(self): return self.ptr.collision
 *     @collision.setter
 *     def collision(self, int x): self.ptr.collision = x             # <<<<<<<<<<<<<<
 *     @property
 *     def impedance(self): return self.ptr.impedance
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9collision_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9collision_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 119, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.collision.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9collision_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9collision_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->collision = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":121
 *     def collision(self, int x): self.ptr.collision = x
 *     @property
 *     def impedance(self): return self.ptr.impedance             # <<<<<<<<<<<<<<
 *     @impedance.setter
 *     def impedance(self, int x): self.ptr.impedance = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9impedance_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9impedance_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9impedance___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9impedance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->impedance); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.impedance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":123
 *     def impedance(self): return self.ptr.impedance
 *     @impedance.setter
 *     def impedance(self, int x): self.ptr.impedance = x             # <<<<<<<<<<<<<<
 *     @property
 *     def reference(self): return self.ptr.reference
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9impedance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9impedance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 123, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.impedance.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9impedance_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9impedance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->impedance = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":125
 *     def impedance(self, int x): self.ptr.impedance = x
 *     @property
 *     def reference(self): return self.ptr.reference             # <<<<<<<<<<<<<<
 *     @reference.setter
 *     def reference(self, int x): self.ptr.reference = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9reference_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_9reference_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9reference___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_9reference___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->reference); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.reference.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":127
 *     def reference(self): return self.ptr.reference
 *     @reference.setter
 *     def reference(self, int x): self.ptr.reference = x             # <<<<<<<<<<<<<<
 *     @property
 *     def cone(self): return self.ptr.cone
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9reference_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9reference_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 127, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.reference.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9reference_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_9reference_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->reference = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":129
 *     def reference(self, int x): self.ptr.reference = x
 *     @property
 *     def cone(self): return self.ptr.cone             # <<<<<<<<<<<<<<
 *     @cone.setter
 *     def cone(self, int x): self.ptr.cone = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_4cone_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_4cone_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_4cone___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_4cone___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->cone); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.cone.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":131
 *     def cone(self): return self.ptr.cone
 *     @cone.setter
 *     def cone(self, int x): self.ptr.cone = x             # <<<<<<<<<<<<<<
 *     @property
 *     def jacobian(self): return self.ptr.jacobian
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_4cone_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_4cone_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 131, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.cone.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_4cone_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_4cone_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->cone = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":133
 *     def cone(self, int x): self.ptr.cone = x
 *     @property
 *     def jacobian(self): return self.ptr.jacobian             # <<<<<<<<<<<<<<
 *     @jacobian.setter
 *     def jacobian(self, int x): self.ptr.jacobian = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8jacobian_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8jacobian_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8jacobian___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8jacobian___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->jacobian); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.jacobian.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":135
 *     def jacobian(self): return self.ptr.jacobian
 *     @jacobian.setter
 *     def jacobian(self, int x): self.ptr.jacobian = x             # <<<<<<<<<<<<<<
 *     @property
 *     def solver(self): return self.ptr.solver
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8jacobian_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8jacobian_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 135, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.jacobian.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8jacobian_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8jacobian_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->jacobian = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":137
 *     def jacobian(self, int x): self.ptr.jacobian = x
 *     @property
 *     def solver(self): return self.ptr.solver             # <<<<<<<<<<<<<<
 *     @solver.setter
 *     def solver(self, int x): self.ptr.solver = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_6solver_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_6solver_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_6solver___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_6solver___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->solver); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.solver.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":139
 *     def solver(self): return self.ptr.solver
 *     @solver.setter
 *     def solver(self, int x): self.ptr.solver = x             # <<<<<<<<<<<<<<
 *     @property
 *     def iterations(self): return self.ptr.iterations
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_6solver_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_6solver_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 139, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.solver.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_6solver_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_6solver_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->solver = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":141
 *     def solver(self, int x): self.ptr.solver = x
 *     @property
 *     def iterations(self): return self.ptr.iterations             # <<<<<<<<<<<<<<
 *     @iterations.setter
 *     def iterations(self, int x): self.ptr.iterations = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_10iterations_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_10iterations_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_10iterations___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_10iterations___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->iterations); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.iterations.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":143
 *     def iterations(self): return self.ptr.iterations
 *     @iterations.setter
 *     def iterations(self, int x): self.ptr.iterations = x             # <<<<<<<<<<<<<<
 *     @property
 *     def noslip_iterations(self): return self.ptr.noslip_iterations
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_10iterations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_10iterations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 143, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.iterations.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_10iterations_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_10iterations_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->iterations = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":145
 *     def iterations(self, int x): self.ptr.iterations = x
 *     @property
 *     def noslip_iterations(self): return self.ptr.noslip_iterations             # <<<<<<<<<<<<<<
 *     @noslip_iterations.setter
 *     def noslip_iterations(self, int x): self.ptr.noslip_iterations = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->noslip_iterations); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.noslip_iterations.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":147
 *     def noslip_iterations(self): return self.ptr.noslip_iterations
 *     @noslip_iterations.setter
 *     def noslip_iterations(self, int x): self.ptr.noslip_iterations = x             # <<<<<<<<<<<<<<
 *     @property
 *     def mpr_iterations(self): return self.ptr.mpr_iterations
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 147, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.noslip_iterations.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->noslip_iterations = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":149
 *     def noslip_iterations(self, int x): self.ptr.noslip_iterations = x
 *     @property
 *     def mpr_iterations(self): return self.ptr.mpr_iterations             # <<<<<<<<<<<<<<
 *     @mpr_iterations.setter
 *     def mpr_iterations(self, int x): self.ptr.mpr_iterations = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->mpr_iterations); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.mpr_iterations.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":151
 *     def mpr_iterations(self): return self.ptr.mpr_iterations
 *     @mpr_iterations.setter
 *     def mpr_iterations(self, int x): self.ptr.mpr_iterations = x             # <<<<<<<<<<<<<<
 *     @property
 *     def disableflags(self): return self.ptr.disableflags
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 151, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.mpr_iterations.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->mpr_iterations = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":153
 *     def mpr_iterations(self, int x): self.ptr.mpr_iterations = x
 *     @property
 *     def disableflags(self): return self.ptr.disableflags             # <<<<<<<<<<<<<<
 *     @disableflags.setter
 *     def disableflags(self, int x): self.ptr.disableflags = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_12disableflags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_12disableflags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_12disableflags___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_12disableflags___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->disableflags); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.disableflags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":155
 *     def disableflags(self): return self.ptr.disableflags
 *     @disableflags.setter
 *     def disableflags(self, int x): self.ptr.disableflags = x             # <<<<<<<<<<<<<<
 *     @property
 *     def enableflags(self): return self.ptr.enableflags
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_12disableflags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_12disableflags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 155, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.disableflags.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_12disableflags_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_12disableflags_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->disableflags = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":157
 *     def disableflags(self, int x): self.ptr.disableflags = x
 *     @property
 *     def enableflags(self): return self.ptr.enableflags             # <<<<<<<<<<<<<<
 *     @enableflags.setter
 *     def enableflags(self, int x): self.ptr.enableflags = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_11enableflags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_11enableflags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_11enableflags___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_11enableflags___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->enableflags); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.enableflags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":159
 *     def enableflags(self): return self.ptr.enableflags
 *     @enableflags.setter
 *     def enableflags(self, int x): self.ptr.enableflags = x             # <<<<<<<<<<<<<<
 *     @property
 *     def gravity(self): return self._gravity
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_11enableflags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjOption_11enableflags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 159, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.enableflags.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_11enableflags_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjOption_11enableflags_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->enableflags = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":161
 *     def enableflags(self, int x): self.ptr.enableflags = x
 *     @property
 *     def gravity(self): return self._gravity             # <<<<<<<<<<<<<<
 *     @property
 *     def wind(self): return self._wind
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_7gravity_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_7gravity_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_7gravity___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_7gravity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_gravity));
  __pyx_r = ((PyObject *)__pyx_v_self->_gravity);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":163
 *     def gravity(self): return self._gravity
 *     @property
 *     def wind(self): return self._wind             # <<<<<<<<<<<<<<
 *     @property
 *     def magnetic(self): return self._magnetic
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_4wind_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_4wind_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_4wind___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_4wind___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_wind));
  __pyx_r = ((PyObject *)__pyx_v_self->_wind);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":165
 *     def wind(self): return self._wind
 *     @property
 *     def magnetic(self): return self._magnetic             # <<<<<<<<<<<<<<
 *     @property
 *     def o_solref(self): return self._o_solref
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8magnetic_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8magnetic_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8magnetic___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8magnetic___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_magnetic));
  __pyx_r = ((PyObject *)__pyx_v_self->_magnetic);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":167
 *     def magnetic(self): return self._magnetic
 *     @property
 *     def o_solref(self): return self._o_solref             # <<<<<<<<<<<<<<
 *     @property
 *     def o_solimp(self): return self._o_solimp
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_solref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_solref_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_solref___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_o_solref));
  __pyx_r = ((PyObject *)__pyx_v_self->_o_solref);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":169
 *     def o_solref(self): return self._o_solref
 *     @property
 *     def o_solimp(self): return self._o_solimp             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjOption WrapMjOption(mjOption* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_solimp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_solimp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_solimp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_8o_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_o_solimp));
  __pyx_r = ((PyObject *)__pyx_v_self->_o_solimp);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjOption_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjOption_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjOption_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjOption.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":171
 *     def o_solimp(self): return self._o_solimp
 * 
 * cdef PyMjOption WrapMjOption(mjOption* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjOption o = PyMjOption()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_f_9mujoco_py_4cymj_WrapMjOption(mjOption *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjOption", 0);

  /* "mujoco_py/generated/wrappers.pxi":172
 * 
 * cdef PyMjOption WrapMjOption(mjOption* p):
 *     cdef PyMjOption o = PyMjOption()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjOption), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":173
 * cdef PyMjOption WrapMjOption(mjOption* p):
 *     cdef PyMjOption o = PyMjOption()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjOption *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":174
 *     cdef PyMjOption o = PyMjOption()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjVisual(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":171
 *     def o_solimp(self): return self._o_solimp
 * 
 * cdef PyMjOption WrapMjOption(mjOption* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjOption o = PyMjOption()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjOption", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":187
 *     cdef PyMjVisual_rgba _rgba
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjVisual_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjVisual_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjVisual___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":188
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":187
 *     cdef PyMjVisual_rgba _rgba
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":192
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjVisual* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":194
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_10PyMjVisual__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self, mjVisual *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":196
 *     cdef void _set(self, mjVisual* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":199
 * 
 * 
 *         self._global_ = WrapMjVisual_global_(&p.global_)             # <<<<<<<<<<<<<<
 *         self._quality = WrapMjVisual_quality(&p.quality)
 *         self._headlight = WrapMjVisual_headlight(&p.headlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjVisual_global_((&__pyx_v_p->global))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_global_);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_global_));
  __pyx_v_self->_global_ = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":200
 * 
 *         self._global_ = WrapMjVisual_global_(&p.global_)
 *         self._quality = WrapMjVisual_quality(&p.quality)             # <<<<<<<<<<<<<<
 *         self._headlight = WrapMjVisual_headlight(&p.headlight)
 *         self._map = WrapMjVisual_map(&p.map)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjVisual_quality((&__pyx_v_p->quality))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_quality);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_quality));
  __pyx_v_self->_quality = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":201
 *         self._global_ = WrapMjVisual_global_(&p.global_)
 *         self._quality = WrapMjVisual_quality(&p.quality)
 *         self._headlight = WrapMjVisual_headlight(&p.headlight)             # <<<<<<<<<<<<<<
 *         self._map = WrapMjVisual_map(&p.map)
 *         self._scale = WrapMjVisual_scale(&p.scale)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjVisual_headlight((&__pyx_v_p->headlight))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_headlight);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_headlight));
  __pyx_v_self->_headlight = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":202
 *         self._quality = WrapMjVisual_quality(&p.quality)
 *         self._headlight = WrapMjVisual_headlight(&p.headlight)
 *         self._map = WrapMjVisual_map(&p.map)             # <<<<<<<<<<<<<<
 *         self._scale = WrapMjVisual_scale(&p.scale)
 *         self._rgba = WrapMjVisual_rgba(&p.rgba)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjVisual_map((&__pyx_v_p->map))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_map);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_map));
  __pyx_v_self->_map = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":203
 *         self._headlight = WrapMjVisual_headlight(&p.headlight)
 *         self._map = WrapMjVisual_map(&p.map)
 *         self._scale = WrapMjVisual_scale(&p.scale)             # <<<<<<<<<<<<<<
 *         self._rgba = WrapMjVisual_rgba(&p.rgba)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjVisual_scale((&__pyx_v_p->scale))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_scale);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_scale));
  __pyx_v_self->_scale = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":204
 *         self._map = WrapMjVisual_map(&p.map)
 *         self._scale = WrapMjVisual_scale(&p.scale)
 *         self._rgba = WrapMjVisual_rgba(&p.rgba)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjVisual_rgba((&__pyx_v_p->rgba))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_rgba);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_rgba));
  __pyx_v_self->_rgba = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":194
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjVisual._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":207
 * 
 *     @property
 *     def global_(self): return self._global_             # <<<<<<<<<<<<<<
 *     @property
 *     def quality(self): return self._quality
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_7global__1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_7global__1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual_7global____get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_7global____get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_global_));
  __pyx_r = ((PyObject *)__pyx_v_self->_global_);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":209
 *     def global_(self): return self._global_
 *     @property
 *     def quality(self): return self._quality             # <<<<<<<<<<<<<<
 *     @property
 *     def headlight(self): return self._headlight
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_7quality_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_7quality_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual_7quality___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_7quality___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_quality));
  __pyx_r = ((PyObject *)__pyx_v_self->_quality);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":211
 *     def quality(self): return self._quality
 *     @property
 *     def headlight(self): return self._headlight             # <<<<<<<<<<<<<<
 *     @property
 *     def map(self): return self._map
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_9headlight_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_9headlight_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual_9headlight___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_9headlight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_headlight));
  __pyx_r = ((PyObject *)__pyx_v_self->_headlight);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":213
 *     def headlight(self): return self._headlight
 *     @property
 *     def map(self): return self._map             # <<<<<<<<<<<<<<
 *     @property
 *     def scale(self): return self._scale
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_3map_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_3map_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual_3map___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_3map___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_map));
  __pyx_r = ((PyObject *)__pyx_v_self->_map);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":215
 *     def map(self): return self._map
 *     @property
 *     def scale(self): return self._scale             # <<<<<<<<<<<<<<
 *     @property
 *     def rgba(self): return self._rgba
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_5scale_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_5scale_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual_5scale___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_5scale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_scale));
  __pyx_r = ((PyObject *)__pyx_v_self->_scale);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":217
 *     def scale(self): return self._scale
 *     @property
 *     def rgba(self): return self._rgba             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjVisual WrapMjVisual(mjVisual* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_4rgba_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_4rgba_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual_4rgba___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_4rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_rgba));
  __pyx_r = ((PyObject *)__pyx_v_self->_rgba);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjVisual_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjVisual_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":219
 *     def rgba(self): return self._rgba
 * 
 * cdef PyMjVisual WrapMjVisual(mjVisual* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual o = PyMjVisual()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_f_9mujoco_py_4cymj_WrapMjVisual(mjVisual *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjVisual", 0);

  /* "mujoco_py/generated/wrappers.pxi":220
 * 
 * cdef PyMjVisual WrapMjVisual(mjVisual* p):
 *     cdef PyMjVisual o = PyMjVisual()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjVisual), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":221
 * cdef PyMjVisual WrapMjVisual(mjVisual* p):
 *     cdef PyMjVisual o = PyMjVisual()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":222
 *     cdef PyMjVisual o = PyMjVisual()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjVisual_global_(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":219
 *     def rgba(self): return self._rgba
 * 
 * cdef PyMjVisual WrapMjVisual(mjVisual* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual o = PyMjVisual()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjVisual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":229
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global____cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global____cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":230
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":229
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":234
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjVisual_global_* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":236
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_global_* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_18PyMjVisual_global___set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_global_ *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":238
 *     cdef void _set(self, mjVisual_global_* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":236
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_global_* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":243
 * 
 *     @property
 *     def fovy(self): return self.ptr.fovy             # <<<<<<<<<<<<<<
 *     @fovy.setter
 *     def fovy(self, float x): self.ptr.fovy = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4fovy_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4fovy_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4fovy___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4fovy___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->fovy); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.fovy.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":245
 *     def fovy(self): return self.ptr.fovy
 *     @fovy.setter
 *     def fovy(self, float x): self.ptr.fovy = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ipd(self): return self.ptr.ipd
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4fovy_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4fovy_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 245, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.fovy.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4fovy_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4fovy_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->fovy = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":247
 *     def fovy(self, float x): self.ptr.fovy = x
 *     @property
 *     def ipd(self): return self.ptr.ipd             # <<<<<<<<<<<<<<
 *     @ipd.setter
 *     def ipd(self, float x): self.ptr.ipd = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__3ipd_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__3ipd_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__3ipd___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__3ipd___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->ipd); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.ipd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":249
 *     def ipd(self): return self.ptr.ipd
 *     @ipd.setter
 *     def ipd(self, float x): self.ptr.ipd = x             # <<<<<<<<<<<<<<
 *     @property
 *     def linewidth(self): return self.ptr.linewidth
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__3ipd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__3ipd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 249, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.ipd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__3ipd_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__3ipd_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ipd = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":251
 *     def ipd(self, float x): self.ptr.ipd = x
 *     @property
 *     def linewidth(self): return self.ptr.linewidth             # <<<<<<<<<<<<<<
 *     @linewidth.setter
 *     def linewidth(self, float x): self.ptr.linewidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->linewidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.linewidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":253
 *     def linewidth(self): return self.ptr.linewidth
 *     @linewidth.setter
 *     def linewidth(self, float x): self.ptr.linewidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def glow(self): return self.ptr.glow
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 253, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.linewidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->linewidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":255
 *     def linewidth(self, float x): self.ptr.linewidth = x
 *     @property
 *     def glow(self): return self.ptr.glow             # <<<<<<<<<<<<<<
 *     @glow.setter
 *     def glow(self, float x): self.ptr.glow = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4glow_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4glow_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4glow___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4glow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->glow); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.glow.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":257
 *     def glow(self): return self.ptr.glow
 *     @glow.setter
 *     def glow(self, float x): self.ptr.glow = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offwidth(self): return self.ptr.offwidth
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4glow_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4glow_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 257, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.glow.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4glow_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4glow_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->glow = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":259
 *     def glow(self, float x): self.ptr.glow = x
 *     @property
 *     def offwidth(self): return self.ptr.offwidth             # <<<<<<<<<<<<<<
 *     @offwidth.setter
 *     def offwidth(self, int x): self.ptr.offwidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->offwidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.offwidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":261
 *     def offwidth(self): return self.ptr.offwidth
 *     @offwidth.setter
 *     def offwidth(self, int x): self.ptr.offwidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offheight(self): return self.ptr.offheight
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 261, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.offwidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offwidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":263
 *     def offwidth(self, int x): self.ptr.offwidth = x
 *     @property
 *     def offheight(self): return self.ptr.offheight             # <<<<<<<<<<<<<<
 *     @offheight.setter
 *     def offheight(self, int x): self.ptr.offheight = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9offheight_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9offheight_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9offheight___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9offheight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->offheight); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.offheight.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":265
 *     def offheight(self): return self.ptr.offheight
 *     @offheight.setter
 *     def offheight(self, int x): self.ptr.offheight = x             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjVisual_global_ WrapMjVisual_global_(mjVisual_global_* p):
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9offheight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9offheight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 265, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.offheight.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9offheight_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__9offheight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offheight = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_global__4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_global_.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":267
 *     def offheight(self, int x): self.ptr.offheight = x
 * 
 * cdef PyMjVisual_global_ WrapMjVisual_global_(mjVisual_global_* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_global_ o = PyMjVisual_global_()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_global_(struct __pyx_t_9mujoco_py_4cymj_mjVisual_global_ *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjVisual_global_", 0);

  /* "mujoco_py/generated/wrappers.pxi":268
 * 
 * cdef PyMjVisual_global_ WrapMjVisual_global_(mjVisual_global_* p):
 *     cdef PyMjVisual_global_ o = PyMjVisual_global_()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_global_), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":269
 * cdef PyMjVisual_global_ WrapMjVisual_global_(mjVisual_global_* p):
 *     cdef PyMjVisual_global_ o = PyMjVisual_global_()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_global_ *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":270
 *     cdef PyMjVisual_global_ o = PyMjVisual_global_()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjVisual_quality(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":267
 *     def offheight(self, int x): self.ptr.offheight = x
 * 
 * cdef PyMjVisual_global_ WrapMjVisual_global_(mjVisual_global_* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_global_ o = PyMjVisual_global_()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjVisual_global_", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":277
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":278
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":277
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":282
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjVisual_quality* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":284
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_quality* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_18PyMjVisual_quality__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_quality *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":286
 *     cdef void _set(self, mjVisual_quality* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":284
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_quality* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":291
 * 
 *     @property
 *     def shadowsize(self): return self.ptr.shadowsize             # <<<<<<<<<<<<<<
 *     @shadowsize.setter
 *     def shadowsize(self, int x): self.ptr.shadowsize = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->shadowsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.shadowsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":293
 *     def shadowsize(self): return self.ptr.shadowsize
 *     @shadowsize.setter
 *     def shadowsize(self, int x): self.ptr.shadowsize = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offsamples(self): return self.ptr.offsamples
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 293, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.shadowsize.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->shadowsize = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":295
 *     def shadowsize(self, int x): self.ptr.shadowsize = x
 *     @property
 *     def offsamples(self): return self.ptr.offsamples             # <<<<<<<<<<<<<<
 *     @offsamples.setter
 *     def offsamples(self, int x): self.ptr.offsamples = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->offsamples); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.offsamples.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":297
 *     def offsamples(self): return self.ptr.offsamples
 *     @offsamples.setter
 *     def offsamples(self, int x): self.ptr.offsamples = x             # <<<<<<<<<<<<<<
 *     @property
 *     def numslices(self): return self.ptr.numslices
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 297, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.offsamples.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offsamples = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":299
 *     def offsamples(self, int x): self.ptr.offsamples = x
 *     @property
 *     def numslices(self): return self.ptr.numslices             # <<<<<<<<<<<<<<
 *     @numslices.setter
 *     def numslices(self, int x): self.ptr.numslices = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->numslices); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.numslices.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":301
 *     def numslices(self): return self.ptr.numslices
 *     @numslices.setter
 *     def numslices(self, int x): self.ptr.numslices = x             # <<<<<<<<<<<<<<
 *     @property
 *     def numstacks(self): return self.ptr.numstacks
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 301, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.numslices.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->numslices = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":303
 *     def numslices(self, int x): self.ptr.numslices = x
 *     @property
 *     def numstacks(self): return self.ptr.numstacks             # <<<<<<<<<<<<<<
 *     @numstacks.setter
 *     def numstacks(self, int x): self.ptr.numstacks = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->numstacks); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.numstacks.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":305
 *     def numstacks(self): return self.ptr.numstacks
 *     @numstacks.setter
 *     def numstacks(self, int x): self.ptr.numstacks = x             # <<<<<<<<<<<<<<
 *     @property
 *     def numarrows(self): return self.ptr.numarrows
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 305, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.numstacks.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->numstacks = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":307
 *     def numstacks(self, int x): self.ptr.numstacks = x
 *     @property
 *     def numarrows(self): return self.ptr.numarrows             # <<<<<<<<<<<<<<
 *     @numarrows.setter
 *     def numarrows(self, int x): self.ptr.numarrows = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->numarrows); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.numarrows.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":309
 *     def numarrows(self): return self.ptr.numarrows
 *     @numarrows.setter
 *     def numarrows(self, int x): self.ptr.numarrows = x             # <<<<<<<<<<<<<<
 *     @property
 *     def numquads(self): return self.ptr.numquads
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 309, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.numarrows.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->numarrows = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":311
 *     def numarrows(self, int x): self.ptr.numarrows = x
 *     @property
 *     def numquads(self): return self.ptr.numquads             # <<<<<<<<<<<<<<
 *     @numquads.setter
 *     def numquads(self, int x): self.ptr.numquads = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->numquads); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.numquads.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":313
 *     def numquads(self): return self.ptr.numquads
 *     @numquads.setter
 *     def numquads(self, int x): self.ptr.numquads = x             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjVisual_quality WrapMjVisual_quality(mjVisual_quality* p):
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 313, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.numquads.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->numquads = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18PyMjVisual_quality_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_quality.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":315
 *     def numquads(self, int x): self.ptr.numquads = x
 * 
 * cdef PyMjVisual_quality WrapMjVisual_quality(mjVisual_quality* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_quality o = PyMjVisual_quality()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_quality(struct __pyx_t_9mujoco_py_4cymj_mjVisual_quality *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjVisual_quality", 0);

  /* "mujoco_py/generated/wrappers.pxi":316
 * 
 * cdef PyMjVisual_quality WrapMjVisual_quality(mjVisual_quality* p):
 *     cdef PyMjVisual_quality o = PyMjVisual_quality()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_quality), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":317
 * cdef PyMjVisual_quality WrapMjVisual_quality(mjVisual_quality* p):
 *     cdef PyMjVisual_quality o = PyMjVisual_quality()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_quality *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":318
 *     cdef PyMjVisual_quality o = PyMjVisual_quality()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjVisual_headlight(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":315
 *     def numquads(self, int x): self.ptr.numquads = x
 * 
 * cdef PyMjVisual_quality WrapMjVisual_quality(mjVisual_quality* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_quality o = PyMjVisual_quality()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjVisual_quality", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":328
 *     cdef np.ndarray _specular
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":329
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":328
 *     cdef np.ndarray _specular
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":333
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjVisual_headlight* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_headlight.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":335
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_headlight* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_20PyMjVisual_headlight__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_headlight *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":337
 *     cdef void _set(self, mjVisual_headlight* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":340
 * 
 * 
 *         self._ambient = _wrap_float_1d(&p.ambient[0], 3)             # <<<<<<<<<<<<<<
 *         self._diffuse = _wrap_float_1d(&p.diffuse[0], 3)
 *         self._specular = _wrap_float_1d(&p.specular[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->ambient[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_ambient);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_ambient));
  __pyx_v_self->_ambient = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":341
 * 
 *         self._ambient = _wrap_float_1d(&p.ambient[0], 3)
 *         self._diffuse = _wrap_float_1d(&p.diffuse[0], 3)             # <<<<<<<<<<<<<<
 *         self._specular = _wrap_float_1d(&p.specular[0], 3)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->diffuse[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_diffuse);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_diffuse));
  __pyx_v_self->_diffuse = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":342
 *         self._ambient = _wrap_float_1d(&p.ambient[0], 3)
 *         self._diffuse = _wrap_float_1d(&p.diffuse[0], 3)
 *         self._specular = _wrap_float_1d(&p.specular[0], 3)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->specular[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_specular);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_specular));
  __pyx_v_self->_specular = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":335
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_headlight* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjVisual_headlight._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":345
 * 
 *     @property
 *     def active(self): return self.ptr.active             # <<<<<<<<<<<<<<
 *     @active.setter
 *     def active(self, int x): self.ptr.active = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_6active_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_6active_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_6active___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_6active___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->active); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_headlight.active.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":347
 *     def active(self): return self.ptr.active
 *     @active.setter
 *     def active(self, int x): self.ptr.active = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ambient(self): return self._ambient
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_6active_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_6active_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 347, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_headlight.active.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_6active_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_6active_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->active = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":349
 *     def active(self, int x): self.ptr.active = x
 *     @property
 *     def ambient(self): return self._ambient             # <<<<<<<<<<<<<<
 *     @property
 *     def diffuse(self): return self._diffuse
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_7ambient_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_7ambient_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_7ambient___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_7ambient___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_ambient));
  __pyx_r = ((PyObject *)__pyx_v_self->_ambient);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":351
 *     def ambient(self): return self._ambient
 *     @property
 *     def diffuse(self): return self._diffuse             # <<<<<<<<<<<<<<
 *     @property
 *     def specular(self): return self._specular
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_7diffuse_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_7diffuse_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_7diffuse___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_7diffuse___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_diffuse));
  __pyx_r = ((PyObject *)__pyx_v_self->_diffuse);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":353
 *     def diffuse(self): return self._diffuse
 *     @property
 *     def specular(self): return self._specular             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjVisual_headlight WrapMjVisual_headlight(mjVisual_headlight* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_8specular_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_8specular_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_8specular___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_8specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_specular));
  __pyx_r = ((PyObject *)__pyx_v_self->_specular);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_headlight.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_20PyMjVisual_headlight_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_headlight.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":355
 *     def specular(self): return self._specular
 * 
 * cdef PyMjVisual_headlight WrapMjVisual_headlight(mjVisual_headlight* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_headlight o = PyMjVisual_headlight()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_headlight(struct __pyx_t_9mujoco_py_4cymj_mjVisual_headlight *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjVisual_headlight", 0);

  /* "mujoco_py/generated/wrappers.pxi":356
 * 
 * cdef PyMjVisual_headlight WrapMjVisual_headlight(mjVisual_headlight* p):
 *     cdef PyMjVisual_headlight o = PyMjVisual_headlight()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_headlight), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":357
 * cdef PyMjVisual_headlight WrapMjVisual_headlight(mjVisual_headlight* p):
 *     cdef PyMjVisual_headlight o = PyMjVisual_headlight()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_headlight *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":358
 *     cdef PyMjVisual_headlight o = PyMjVisual_headlight()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjVisual_map(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":355
 *     def specular(self): return self._specular
 * 
 * cdef PyMjVisual_headlight WrapMjVisual_headlight(mjVisual_headlight* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_headlight o = PyMjVisual_headlight()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjVisual_headlight", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":365
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":366
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":365
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":370
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjVisual_map* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":372
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_map* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_14PyMjVisual_map__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_map *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":374
 *     cdef void _set(self, mjVisual_map* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":372
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_map* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":379
 * 
 *     @property
 *     def stiffness(self): return self.ptr.stiffness             # <<<<<<<<<<<<<<
 *     @stiffness.setter
 *     def stiffness(self, float x): self.ptr.stiffness = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->stiffness); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.stiffness.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":381
 *     def stiffness(self): return self.ptr.stiffness
 *     @stiffness.setter
 *     def stiffness(self, float x): self.ptr.stiffness = x             # <<<<<<<<<<<<<<
 *     @property
 *     def stiffnessrot(self): return self.ptr.stiffnessrot
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 381, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.stiffness.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->stiffness = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":383
 *     def stiffness(self, float x): self.ptr.stiffness = x
 *     @property
 *     def stiffnessrot(self): return self.ptr.stiffnessrot             # <<<<<<<<<<<<<<
 *     @stiffnessrot.setter
 *     def stiffnessrot(self, float x): self.ptr.stiffnessrot = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->stiffnessrot); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.stiffnessrot.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":385
 *     def stiffnessrot(self): return self.ptr.stiffnessrot
 *     @stiffnessrot.setter
 *     def stiffnessrot(self, float x): self.ptr.stiffnessrot = x             # <<<<<<<<<<<<<<
 *     @property
 *     def force(self): return self.ptr.force
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 385, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.stiffnessrot.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->stiffnessrot = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":387
 *     def stiffnessrot(self, float x): self.ptr.stiffnessrot = x
 *     @property
 *     def force(self): return self.ptr.force             # <<<<<<<<<<<<<<
 *     @force.setter
 *     def force(self, float x): self.ptr.force = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5force_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5force_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5force___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5force___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->force); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.force.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":389
 *     def force(self): return self.ptr.force
 *     @force.setter
 *     def force(self, float x): self.ptr.force = x             # <<<<<<<<<<<<<<
 *     @property
 *     def torque(self): return self.ptr.torque
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5force_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5force_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 389, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.force.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5force_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5force_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->force = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":391
 *     def force(self, float x): self.ptr.force = x
 *     @property
 *     def torque(self): return self.ptr.torque             # <<<<<<<<<<<<<<
 *     @torque.setter
 *     def torque(self, float x): self.ptr.torque = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6torque_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6torque_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6torque___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6torque___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->torque); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.torque.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":393
 *     def torque(self): return self.ptr.torque
 *     @torque.setter
 *     def torque(self, float x): self.ptr.torque = x             # <<<<<<<<<<<<<<
 *     @property
 *     def alpha(self): return self.ptr.alpha
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6torque_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6torque_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 393, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.torque.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6torque_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6torque_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->torque = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":395
 *     def torque(self, float x): self.ptr.torque = x
 *     @property
 *     def alpha(self): return self.ptr.alpha             # <<<<<<<<<<<<<<
 *     @alpha.setter
 *     def alpha(self, float x): self.ptr.alpha = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5alpha_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5alpha_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5alpha___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5alpha___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->alpha); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.alpha.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":397
 *     def alpha(self): return self.ptr.alpha
 *     @alpha.setter
 *     def alpha(self, float x): self.ptr.alpha = x             # <<<<<<<<<<<<<<
 *     @property
 *     def fogstart(self): return self.ptr.fogstart
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5alpha_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5alpha_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 397, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.alpha.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5alpha_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5alpha_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->alpha = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":399
 *     def alpha(self, float x): self.ptr.alpha = x
 *     @property
 *     def fogstart(self): return self.ptr.fogstart             # <<<<<<<<<<<<<<
 *     @fogstart.setter
 *     def fogstart(self, float x): self.ptr.fogstart = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->fogstart); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.fogstart.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":401
 *     def fogstart(self): return self.ptr.fogstart
 *     @fogstart.setter
 *     def fogstart(self, float x): self.ptr.fogstart = x             # <<<<<<<<<<<<<<
 *     @property
 *     def fogend(self): return self.ptr.fogend
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 401, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.fogstart.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->fogstart = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":403
 *     def fogstart(self, float x): self.ptr.fogstart = x
 *     @property
 *     def fogend(self): return self.ptr.fogend             # <<<<<<<<<<<<<<
 *     @fogend.setter
 *     def fogend(self, float x): self.ptr.fogend = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6fogend_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6fogend_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6fogend___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6fogend___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->fogend); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.fogend.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":405
 *     def fogend(self): return self.ptr.fogend
 *     @fogend.setter
 *     def fogend(self, float x): self.ptr.fogend = x             # <<<<<<<<<<<<<<
 *     @property
 *     def znear(self): return self.ptr.znear
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6fogend_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6fogend_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 405, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.fogend.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6fogend_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_6fogend_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->fogend = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":407
 *     def fogend(self, float x): self.ptr.fogend = x
 *     @property
 *     def znear(self): return self.ptr.znear             # <<<<<<<<<<<<<<
 *     @znear.setter
 *     def znear(self, float x): self.ptr.znear = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5znear_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5znear_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5znear___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5znear___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->znear); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.znear.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":409
 *     def znear(self): return self.ptr.znear
 *     @znear.setter
 *     def znear(self, float x): self.ptr.znear = x             # <<<<<<<<<<<<<<
 *     @property
 *     def zfar(self): return self.ptr.zfar
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5znear_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5znear_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 409, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.znear.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5znear_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_5znear_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->znear = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":411
 *     def znear(self, float x): self.ptr.znear = x
 *     @property
 *     def zfar(self): return self.ptr.zfar             # <<<<<<<<<<<<<<
 *     @zfar.setter
 *     def zfar(self, float x): self.ptr.zfar = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_4zfar_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_4zfar_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_4zfar___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_4zfar___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->zfar); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.zfar.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":413
 *     def zfar(self): return self.ptr.zfar
 *     @zfar.setter
 *     def zfar(self, float x): self.ptr.zfar = x             # <<<<<<<<<<<<<<
 *     @property
 *     def shadowclip(self): return self.ptr.shadowclip
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_4zfar_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_4zfar_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 413, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.zfar.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_4zfar_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_4zfar_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->zfar = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":415
 *     def zfar(self, float x): self.ptr.zfar = x
 *     @property
 *     def shadowclip(self): return self.ptr.shadowclip             # <<<<<<<<<<<<<<
 *     @shadowclip.setter
 *     def shadowclip(self, float x): self.ptr.shadowclip = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->shadowclip); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.shadowclip.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":417
 *     def shadowclip(self): return self.ptr.shadowclip
 *     @shadowclip.setter
 *     def shadowclip(self, float x): self.ptr.shadowclip = x             # <<<<<<<<<<<<<<
 *     @property
 *     def shadowscale(self): return self.ptr.shadowscale
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 417, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.shadowclip.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->shadowclip = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":419
 *     def shadowclip(self, float x): self.ptr.shadowclip = x
 *     @property
 *     def shadowscale(self): return self.ptr.shadowscale             # <<<<<<<<<<<<<<
 *     @shadowscale.setter
 *     def shadowscale(self, float x): self.ptr.shadowscale = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->shadowscale); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.shadowscale.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":421
 *     def shadowscale(self): return self.ptr.shadowscale
 *     @shadowscale.setter
 *     def shadowscale(self, float x): self.ptr.shadowscale = x             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjVisual_map WrapMjVisual_map(mjVisual_map* p):
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 421, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.shadowscale.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->shadowscale = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjVisual_map_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_map.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":423
 *     def shadowscale(self, float x): self.ptr.shadowscale = x
 * 
 * cdef PyMjVisual_map WrapMjVisual_map(mjVisual_map* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_map o = PyMjVisual_map()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_map(struct __pyx_t_9mujoco_py_4cymj_mjVisual_map *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjVisual_map", 0);

  /* "mujoco_py/generated/wrappers.pxi":424
 * 
 * cdef PyMjVisual_map WrapMjVisual_map(mjVisual_map* p):
 *     cdef PyMjVisual_map o = PyMjVisual_map()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_map), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":425
 * cdef PyMjVisual_map WrapMjVisual_map(mjVisual_map* p):
 *     cdef PyMjVisual_map o = PyMjVisual_map()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_map *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":426
 *     cdef PyMjVisual_map o = PyMjVisual_map()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjVisual_scale(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":423
 *     def shadowscale(self, float x): self.ptr.shadowscale = x
 * 
 * cdef PyMjVisual_map WrapMjVisual_map(mjVisual_map* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_map o = PyMjVisual_map()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjVisual_map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":433
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":434
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":433
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":438
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjVisual_scale* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":440
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_scale* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_16PyMjVisual_scale__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_scale *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":442
 *     cdef void _set(self, mjVisual_scale* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":440
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_scale* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":447
 * 
 *     @property
 *     def forcewidth(self): return self.ptr.forcewidth             # <<<<<<<<<<<<<<
 *     @forcewidth.setter
 *     def forcewidth(self, float x): self.ptr.forcewidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->forcewidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.forcewidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":449
 *     def forcewidth(self): return self.ptr.forcewidth
 *     @forcewidth.setter
 *     def forcewidth(self, float x): self.ptr.forcewidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def contactwidth(self): return self.ptr.contactwidth
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 449, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.forcewidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->forcewidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":451
 *     def forcewidth(self, float x): self.ptr.forcewidth = x
 *     @property
 *     def contactwidth(self): return self.ptr.contactwidth             # <<<<<<<<<<<<<<
 *     @contactwidth.setter
 *     def contactwidth(self, float x): self.ptr.contactwidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->contactwidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.contactwidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":453
 *     def contactwidth(self): return self.ptr.contactwidth
 *     @contactwidth.setter
 *     def contactwidth(self, float x): self.ptr.contactwidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def contactheight(self): return self.ptr.contactheight
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 453, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.contactwidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->contactwidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":455
 *     def contactwidth(self, float x): self.ptr.contactwidth = x
 *     @property
 *     def contactheight(self): return self.ptr.contactheight             # <<<<<<<<<<<<<<
 *     @contactheight.setter
 *     def contactheight(self, float x): self.ptr.contactheight = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->contactheight); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.contactheight.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":457
 *     def contactheight(self): return self.ptr.contactheight
 *     @contactheight.setter
 *     def contactheight(self, float x): self.ptr.contactheight = x             # <<<<<<<<<<<<<<
 *     @property
 *     def connect(self): return self.ptr.connect
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 457, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.contactheight.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->contactheight = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":459
 *     def contactheight(self, float x): self.ptr.contactheight = x
 *     @property
 *     def connect(self): return self.ptr.connect             # <<<<<<<<<<<<<<
 *     @connect.setter
 *     def connect(self, float x): self.ptr.connect = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_7connect_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_7connect_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_7connect___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_7connect___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->connect); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.connect.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":461
 *     def connect(self): return self.ptr.connect
 *     @connect.setter
 *     def connect(self, float x): self.ptr.connect = x             # <<<<<<<<<<<<<<
 *     @property
 *     def com(self): return self.ptr.com
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_7connect_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_7connect_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 461, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.connect.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_7connect_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_7connect_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->connect = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":463
 *     def connect(self, float x): self.ptr.connect = x
 *     @property
 *     def com(self): return self.ptr.com             # <<<<<<<<<<<<<<
 *     @com.setter
 *     def com(self, float x): self.ptr.com = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_3com_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_3com_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_3com___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_3com___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->com); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.com.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":465
 *     def com(self): return self.ptr.com
 *     @com.setter
 *     def com(self, float x): self.ptr.com = x             # <<<<<<<<<<<<<<
 *     @property
 *     def camera(self): return self.ptr.camera
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_3com_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_3com_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 465, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.com.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_3com_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_3com_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->com = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":467
 *     def com(self, float x): self.ptr.com = x
 *     @property
 *     def camera(self): return self.ptr.camera             # <<<<<<<<<<<<<<
 *     @camera.setter
 *     def camera(self, float x): self.ptr.camera = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_6camera_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_6camera_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_6camera___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_6camera___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->camera); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.camera.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":469
 *     def camera(self): return self.ptr.camera
 *     @camera.setter
 *     def camera(self, float x): self.ptr.camera = x             # <<<<<<<<<<<<<<
 *     @property
 *     def light(self): return self.ptr.light
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_6camera_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_6camera_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 469, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.camera.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_6camera_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_6camera_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->camera = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":471
 *     def camera(self, float x): self.ptr.camera = x
 *     @property
 *     def light(self): return self.ptr.light             # <<<<<<<<<<<<<<
 *     @light.setter
 *     def light(self, float x): self.ptr.light = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_5light_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_5light_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_5light___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_5light___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->light); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.light.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":473
 *     def light(self): return self.ptr.light
 *     @light.setter
 *     def light(self, float x): self.ptr.light = x             # <<<<<<<<<<<<<<
 *     @property
 *     def selectpoint(self): return self.ptr.selectpoint
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_5light_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_5light_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 473, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.light.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_5light_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_5light_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->light = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":475
 *     def light(self, float x): self.ptr.light = x
 *     @property
 *     def selectpoint(self): return self.ptr.selectpoint             # <<<<<<<<<<<<<<
 *     @selectpoint.setter
 *     def selectpoint(self, float x): self.ptr.selectpoint = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->selectpoint); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.selectpoint.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":477
 *     def selectpoint(self): return self.ptr.selectpoint
 *     @selectpoint.setter
 *     def selectpoint(self, float x): self.ptr.selectpoint = x             # <<<<<<<<<<<<<<
 *     @property
 *     def jointlength(self): return self.ptr.jointlength
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 477, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.selectpoint.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->selectpoint = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":479
 *     def selectpoint(self, float x): self.ptr.selectpoint = x
 *     @property
 *     def jointlength(self): return self.ptr.jointlength             # <<<<<<<<<<<<<<
 *     @jointlength.setter
 *     def jointlength(self, float x): self.ptr.jointlength = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->jointlength); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.jointlength.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":481
 *     def jointlength(self): return self.ptr.jointlength
 *     @jointlength.setter
 *     def jointlength(self, float x): self.ptr.jointlength = x             # <<<<<<<<<<<<<<
 *     @property
 *     def jointwidth(self): return self.ptr.jointwidth
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 481, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.jointlength.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->jointlength = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":483
 *     def jointlength(self, float x): self.ptr.jointlength = x
 *     @property
 *     def jointwidth(self): return self.ptr.jointwidth             # <<<<<<<<<<<<<<
 *     @jointwidth.setter
 *     def jointwidth(self, float x): self.ptr.jointwidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->jointwidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.jointwidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":485
 *     def jointwidth(self): return self.ptr.jointwidth
 *     @jointwidth.setter
 *     def jointwidth(self, float x): self.ptr.jointwidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def actuatorlength(self): return self.ptr.actuatorlength
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 485, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.jointwidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->jointwidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":487
 *     def jointwidth(self, float x): self.ptr.jointwidth = x
 *     @property
 *     def actuatorlength(self): return self.ptr.actuatorlength             # <<<<<<<<<<<<<<
 *     @actuatorlength.setter
 *     def actuatorlength(self, float x): self.ptr.actuatorlength = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->actuatorlength); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.actuatorlength.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":489
 *     def actuatorlength(self): return self.ptr.actuatorlength
 *     @actuatorlength.setter
 *     def actuatorlength(self, float x): self.ptr.actuatorlength = x             # <<<<<<<<<<<<<<
 *     @property
 *     def actuatorwidth(self): return self.ptr.actuatorwidth
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 489, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.actuatorlength.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->actuatorlength = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":491
 *     def actuatorlength(self, float x): self.ptr.actuatorlength = x
 *     @property
 *     def actuatorwidth(self): return self.ptr.actuatorwidth             # <<<<<<<<<<<<<<
 *     @actuatorwidth.setter
 *     def actuatorwidth(self, float x): self.ptr.actuatorwidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->actuatorwidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.actuatorwidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":493
 *     def actuatorwidth(self): return self.ptr.actuatorwidth
 *     @actuatorwidth.setter
 *     def actuatorwidth(self, float x): self.ptr.actuatorwidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def framelength(self): return self.ptr.framelength
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 493, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.actuatorwidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->actuatorwidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":495
 *     def actuatorwidth(self, float x): self.ptr.actuatorwidth = x
 *     @property
 *     def framelength(self): return self.ptr.framelength             # <<<<<<<<<<<<<<
 *     @framelength.setter
 *     def framelength(self, float x): self.ptr.framelength = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->framelength); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.framelength.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":497
 *     def framelength(self): return self.ptr.framelength
 *     @framelength.setter
 *     def framelength(self, float x): self.ptr.framelength = x             # <<<<<<<<<<<<<<
 *     @property
 *     def framewidth(self): return self.ptr.framewidth
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 497, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.framelength.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->framelength = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":499
 *     def framelength(self, float x): self.ptr.framelength = x
 *     @property
 *     def framewidth(self): return self.ptr.framewidth             # <<<<<<<<<<<<<<
 *     @framewidth.setter
 *     def framewidth(self, float x): self.ptr.framewidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->framewidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.framewidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":501
 *     def framewidth(self): return self.ptr.framewidth
 *     @framewidth.setter
 *     def framewidth(self, float x): self.ptr.framewidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def constraint(self): return self.ptr.constraint
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 501, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.framewidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->framewidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":503
 *     def framewidth(self, float x): self.ptr.framewidth = x
 *     @property
 *     def constraint(self): return self.ptr.constraint             # <<<<<<<<<<<<<<
 *     @constraint.setter
 *     def constraint(self, float x): self.ptr.constraint = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->constraint); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.constraint.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":505
 *     def constraint(self): return self.ptr.constraint
 *     @constraint.setter
 *     def constraint(self, float x): self.ptr.constraint = x             # <<<<<<<<<<<<<<
 *     @property
 *     def slidercrank(self): return self.ptr.slidercrank
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 505, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.constraint.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->constraint = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":507
 *     def constraint(self, float x): self.ptr.constraint = x
 *     @property
 *     def slidercrank(self): return self.ptr.slidercrank             # <<<<<<<<<<<<<<
 *     @slidercrank.setter
 *     def slidercrank(self, float x): self.ptr.slidercrank = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->slidercrank); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.slidercrank.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":509
 *     def slidercrank(self): return self.ptr.slidercrank
 *     @slidercrank.setter
 *     def slidercrank(self, float x): self.ptr.slidercrank = x             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjVisual_scale WrapMjVisual_scale(mjVisual_scale* p):
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 509, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.slidercrank.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->slidercrank = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16PyMjVisual_scale_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_scale.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":511
 *     def slidercrank(self, float x): self.ptr.slidercrank = x
 * 
 * cdef PyMjVisual_scale WrapMjVisual_scale(mjVisual_scale* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_scale o = PyMjVisual_scale()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_scale(struct __pyx_t_9mujoco_py_4cymj_mjVisual_scale *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjVisual_scale", 0);

  /* "mujoco_py/generated/wrappers.pxi":512
 * 
 * cdef PyMjVisual_scale WrapMjVisual_scale(mjVisual_scale* p):
 *     cdef PyMjVisual_scale o = PyMjVisual_scale()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_scale), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":513
 * cdef PyMjVisual_scale WrapMjVisual_scale(mjVisual_scale* p):
 *     cdef PyMjVisual_scale o = PyMjVisual_scale()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_scale *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":514
 *     cdef PyMjVisual_scale o = PyMjVisual_scale()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjVisual_rgba(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":511
 *     def slidercrank(self, float x): self.ptr.slidercrank = x
 * 
 * cdef PyMjVisual_scale WrapMjVisual_scale(mjVisual_scale* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_scale o = PyMjVisual_scale()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjVisual_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":538
 *     cdef np.ndarray _crankbroken
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":539
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":538
 *     cdef np.ndarray _crankbroken
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":543
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjVisual_rgba* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_rgba.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":545
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_rgba* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_15PyMjVisual_rgba__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self, struct __pyx_t_9mujoco_py_4cymj_mjVisual_rgba *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":547
 *     cdef void _set(self, mjVisual_rgba* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":550
 * 
 * 
 *         self._fog = _wrap_float_1d(&p.fog[0], 4)             # <<<<<<<<<<<<<<
 *         self._force = _wrap_float_1d(&p.force[0], 4)
 *         self._inertia = _wrap_float_1d(&p.inertia[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->fog[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_fog);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_fog));
  __pyx_v_self->_fog = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":551
 * 
 *         self._fog = _wrap_float_1d(&p.fog[0], 4)
 *         self._force = _wrap_float_1d(&p.force[0], 4)             # <<<<<<<<<<<<<<
 *         self._inertia = _wrap_float_1d(&p.inertia[0], 4)
 *         self._joint = _wrap_float_1d(&p.joint[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->force[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_force);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_force));
  __pyx_v_self->_force = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":552
 *         self._fog = _wrap_float_1d(&p.fog[0], 4)
 *         self._force = _wrap_float_1d(&p.force[0], 4)
 *         self._inertia = _wrap_float_1d(&p.inertia[0], 4)             # <<<<<<<<<<<<<<
 *         self._joint = _wrap_float_1d(&p.joint[0], 4)
 *         self._actuator = _wrap_float_1d(&p.actuator[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->inertia[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_inertia);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_inertia));
  __pyx_v_self->_inertia = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":553
 *         self._force = _wrap_float_1d(&p.force[0], 4)
 *         self._inertia = _wrap_float_1d(&p.inertia[0], 4)
 *         self._joint = _wrap_float_1d(&p.joint[0], 4)             # <<<<<<<<<<<<<<
 *         self._actuator = _wrap_float_1d(&p.actuator[0], 4)
 *         self._com = _wrap_float_1d(&p.com[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->joint[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_joint);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_joint));
  __pyx_v_self->_joint = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":554
 *         self._inertia = _wrap_float_1d(&p.inertia[0], 4)
 *         self._joint = _wrap_float_1d(&p.joint[0], 4)
 *         self._actuator = _wrap_float_1d(&p.actuator[0], 4)             # <<<<<<<<<<<<<<
 *         self._com = _wrap_float_1d(&p.com[0], 4)
 *         self._camera = _wrap_float_1d(&p.camera[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->actuator[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator));
  __pyx_v_self->_actuator = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":555
 *         self._joint = _wrap_float_1d(&p.joint[0], 4)
 *         self._actuator = _wrap_float_1d(&p.actuator[0], 4)
 *         self._com = _wrap_float_1d(&p.com[0], 4)             # <<<<<<<<<<<<<<
 *         self._camera = _wrap_float_1d(&p.camera[0], 4)
 *         self._light = _wrap_float_1d(&p.light[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->com[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_com);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_com));
  __pyx_v_self->_com = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":556
 *         self._actuator = _wrap_float_1d(&p.actuator[0], 4)
 *         self._com = _wrap_float_1d(&p.com[0], 4)
 *         self._camera = _wrap_float_1d(&p.camera[0], 4)             # <<<<<<<<<<<<<<
 *         self._light = _wrap_float_1d(&p.light[0], 4)
 *         self._selectpoint = _wrap_float_1d(&p.selectpoint[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->camera[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_camera);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_camera));
  __pyx_v_self->_camera = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":557
 *         self._com = _wrap_float_1d(&p.com[0], 4)
 *         self._camera = _wrap_float_1d(&p.camera[0], 4)
 *         self._light = _wrap_float_1d(&p.light[0], 4)             # <<<<<<<<<<<<<<
 *         self._selectpoint = _wrap_float_1d(&p.selectpoint[0], 4)
 *         self._connect = _wrap_float_1d(&p.connect[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->light[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light));
  __pyx_v_self->_light = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":558
 *         self._camera = _wrap_float_1d(&p.camera[0], 4)
 *         self._light = _wrap_float_1d(&p.light[0], 4)
 *         self._selectpoint = _wrap_float_1d(&p.selectpoint[0], 4)             # <<<<<<<<<<<<<<
 *         self._connect = _wrap_float_1d(&p.connect[0], 4)
 *         self._contactpoint = _wrap_float_1d(&p.contactpoint[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->selectpoint[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_selectpoint);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_selectpoint));
  __pyx_v_self->_selectpoint = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":559
 *         self._light = _wrap_float_1d(&p.light[0], 4)
 *         self._selectpoint = _wrap_float_1d(&p.selectpoint[0], 4)
 *         self._connect = _wrap_float_1d(&p.connect[0], 4)             # <<<<<<<<<<<<<<
 *         self._contactpoint = _wrap_float_1d(&p.contactpoint[0], 4)
 *         self._contactforce = _wrap_float_1d(&p.contactforce[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->connect[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_connect);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_connect));
  __pyx_v_self->_connect = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":560
 *         self._selectpoint = _wrap_float_1d(&p.selectpoint[0], 4)
 *         self._connect = _wrap_float_1d(&p.connect[0], 4)
 *         self._contactpoint = _wrap_float_1d(&p.contactpoint[0], 4)             # <<<<<<<<<<<<<<
 *         self._contactforce = _wrap_float_1d(&p.contactforce[0], 4)
 *         self._contactfriction = _wrap_float_1d(&p.contactfriction[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->contactpoint[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_contactpoint);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_contactpoint));
  __pyx_v_self->_contactpoint = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":561
 *         self._connect = _wrap_float_1d(&p.connect[0], 4)
 *         self._contactpoint = _wrap_float_1d(&p.contactpoint[0], 4)
 *         self._contactforce = _wrap_float_1d(&p.contactforce[0], 4)             # <<<<<<<<<<<<<<
 *         self._contactfriction = _wrap_float_1d(&p.contactfriction[0], 4)
 *         self._contacttorque = _wrap_float_1d(&p.contacttorque[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->contactforce[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_contactforce);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_contactforce));
  __pyx_v_self->_contactforce = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":562
 *         self._contactpoint = _wrap_float_1d(&p.contactpoint[0], 4)
 *         self._contactforce = _wrap_float_1d(&p.contactforce[0], 4)
 *         self._contactfriction = _wrap_float_1d(&p.contactfriction[0], 4)             # <<<<<<<<<<<<<<
 *         self._contacttorque = _wrap_float_1d(&p.contacttorque[0], 4)
 *         self._constraint = _wrap_float_1d(&p.constraint[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->contactfriction[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_contactfriction);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_contactfriction));
  __pyx_v_self->_contactfriction = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":563
 *         self._contactforce = _wrap_float_1d(&p.contactforce[0], 4)
 *         self._contactfriction = _wrap_float_1d(&p.contactfriction[0], 4)
 *         self._contacttorque = _wrap_float_1d(&p.contacttorque[0], 4)             # <<<<<<<<<<<<<<
 *         self._constraint = _wrap_float_1d(&p.constraint[0], 4)
 *         self._slidercrank = _wrap_float_1d(&p.slidercrank[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->contacttorque[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_contacttorque);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_contacttorque));
  __pyx_v_self->_contacttorque = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":564
 *         self._contactfriction = _wrap_float_1d(&p.contactfriction[0], 4)
 *         self._contacttorque = _wrap_float_1d(&p.contacttorque[0], 4)
 *         self._constraint = _wrap_float_1d(&p.constraint[0], 4)             # <<<<<<<<<<<<<<
 *         self._slidercrank = _wrap_float_1d(&p.slidercrank[0], 4)
 *         self._crankbroken = _wrap_float_1d(&p.crankbroken[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->constraint[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_constraint);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_constraint));
  __pyx_v_self->_constraint = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":565
 *         self._contacttorque = _wrap_float_1d(&p.contacttorque[0], 4)
 *         self._constraint = _wrap_float_1d(&p.constraint[0], 4)
 *         self._slidercrank = _wrap_float_1d(&p.slidercrank[0], 4)             # <<<<<<<<<<<<<<
 *         self._crankbroken = _wrap_float_1d(&p.crankbroken[0], 4)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->slidercrank[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_slidercrank);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_slidercrank));
  __pyx_v_self->_slidercrank = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":566
 *         self._constraint = _wrap_float_1d(&p.constraint[0], 4)
 *         self._slidercrank = _wrap_float_1d(&p.slidercrank[0], 4)
 *         self._crankbroken = _wrap_float_1d(&p.crankbroken[0], 4)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->crankbroken[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_crankbroken);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_crankbroken));
  __pyx_v_self->_crankbroken = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":545
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjVisual_rgba* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjVisual_rgba._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":569
 * 
 *     @property
 *     def fog(self): return self._fog             # <<<<<<<<<<<<<<
 *     @property
 *     def force(self): return self._force
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_3fog_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_3fog_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_3fog___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_3fog___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_fog));
  __pyx_r = ((PyObject *)__pyx_v_self->_fog);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":571
 *     def fog(self): return self._fog
 *     @property
 *     def force(self): return self._force             # <<<<<<<<<<<<<<
 *     @property
 *     def inertia(self): return self._inertia
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5force_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5force_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_5force___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_5force___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_force));
  __pyx_r = ((PyObject *)__pyx_v_self->_force);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":573
 *     def force(self): return self._force
 *     @property
 *     def inertia(self): return self._inertia             # <<<<<<<<<<<<<<
 *     @property
 *     def joint(self): return self._joint
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_7inertia_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_7inertia_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_7inertia___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_7inertia___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_inertia));
  __pyx_r = ((PyObject *)__pyx_v_self->_inertia);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":575
 *     def inertia(self): return self._inertia
 *     @property
 *     def joint(self): return self._joint             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator(self): return self._actuator
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5joint_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5joint_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_5joint___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_5joint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_joint));
  __pyx_r = ((PyObject *)__pyx_v_self->_joint);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":577
 *     def joint(self): return self._joint
 *     @property
 *     def actuator(self): return self._actuator             # <<<<<<<<<<<<<<
 *     @property
 *     def com(self): return self._com
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_8actuator_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_8actuator_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_8actuator___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_8actuator___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":579
 *     def actuator(self): return self._actuator
 *     @property
 *     def com(self): return self._com             # <<<<<<<<<<<<<<
 *     @property
 *     def camera(self): return self._camera
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_3com_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_3com_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_3com___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_3com___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_com));
  __pyx_r = ((PyObject *)__pyx_v_self->_com);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":581
 *     def com(self): return self._com
 *     @property
 *     def camera(self): return self._camera             # <<<<<<<<<<<<<<
 *     @property
 *     def light(self): return self._light
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_6camera_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_6camera_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_6camera___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_6camera___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_camera));
  __pyx_r = ((PyObject *)__pyx_v_self->_camera);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":583
 *     def camera(self): return self._camera
 *     @property
 *     def light(self): return self._light             # <<<<<<<<<<<<<<
 *     @property
 *     def selectpoint(self): return self._selectpoint
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5light_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5light_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_5light___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_5light___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light));
  __pyx_r = ((PyObject *)__pyx_v_self->_light);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":585
 *     def light(self): return self._light
 *     @property
 *     def selectpoint(self): return self._selectpoint             # <<<<<<<<<<<<<<
 *     @property
 *     def connect(self): return self._connect
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_11selectpoint_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_11selectpoint_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_11selectpoint___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_11selectpoint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_selectpoint));
  __pyx_r = ((PyObject *)__pyx_v_self->_selectpoint);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":587
 *     def selectpoint(self): return self._selectpoint
 *     @property
 *     def connect(self): return self._connect             # <<<<<<<<<<<<<<
 *     @property
 *     def contactpoint(self): return self._contactpoint
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_7connect_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_7connect_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_7connect___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_7connect___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_connect));
  __pyx_r = ((PyObject *)__pyx_v_self->_connect);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":589
 *     def connect(self): return self._connect
 *     @property
 *     def contactpoint(self): return self._contactpoint             # <<<<<<<<<<<<<<
 *     @property
 *     def contactforce(self): return self._contactforce
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactpoint_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactpoint_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactpoint___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactpoint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_contactpoint));
  __pyx_r = ((PyObject *)__pyx_v_self->_contactpoint);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":591
 *     def contactpoint(self): return self._contactpoint
 *     @property
 *     def contactforce(self): return self._contactforce             # <<<<<<<<<<<<<<
 *     @property
 *     def contactfriction(self): return self._contactfriction
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactforce_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactforce_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactforce___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactforce___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_contactforce));
  __pyx_r = ((PyObject *)__pyx_v_self->_contactforce);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":593
 *     def contactforce(self): return self._contactforce
 *     @property
 *     def contactfriction(self): return self._contactfriction             # <<<<<<<<<<<<<<
 *     @property
 *     def contacttorque(self): return self._contacttorque
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_15contactfriction_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_15contactfriction_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_15contactfriction___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_15contactfriction___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_contactfriction));
  __pyx_r = ((PyObject *)__pyx_v_self->_contactfriction);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":595
 *     def contactfriction(self): return self._contactfriction
 *     @property
 *     def contacttorque(self): return self._contacttorque             # <<<<<<<<<<<<<<
 *     @property
 *     def constraint(self): return self._constraint
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_13contacttorque_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_13contacttorque_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_13contacttorque___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_13contacttorque___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_contacttorque));
  __pyx_r = ((PyObject *)__pyx_v_self->_contacttorque);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":597
 *     def contacttorque(self): return self._contacttorque
 *     @property
 *     def constraint(self): return self._constraint             # <<<<<<<<<<<<<<
 *     @property
 *     def slidercrank(self): return self._slidercrank
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_10constraint_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_10constraint_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_10constraint___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_10constraint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_constraint));
  __pyx_r = ((PyObject *)__pyx_v_self->_constraint);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":599
 *     def constraint(self): return self._constraint
 *     @property
 *     def slidercrank(self): return self._slidercrank             # <<<<<<<<<<<<<<
 *     @property
 *     def crankbroken(self): return self._crankbroken
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_11slidercrank_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_11slidercrank_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_11slidercrank___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_11slidercrank___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_slidercrank));
  __pyx_r = ((PyObject *)__pyx_v_self->_slidercrank);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":601
 *     def slidercrank(self): return self._slidercrank
 *     @property
 *     def crankbroken(self): return self._crankbroken             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjVisual_rgba WrapMjVisual_rgba(mjVisual_rgba* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_11crankbroken_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_11crankbroken_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_11crankbroken___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_11crankbroken___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_crankbroken));
  __pyx_r = ((PyObject *)__pyx_v_self->_crankbroken);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_rgba.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjVisual_rgba_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjVisual_rgba.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":603
 *     def crankbroken(self): return self._crankbroken
 * 
 * cdef PyMjVisual_rgba WrapMjVisual_rgba(mjVisual_rgba* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_rgba o = PyMjVisual_rgba()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_f_9mujoco_py_4cymj_WrapMjVisual_rgba(struct __pyx_t_9mujoco_py_4cymj_mjVisual_rgba *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjVisual_rgba", 0);

  /* "mujoco_py/generated/wrappers.pxi":604
 * 
 * cdef PyMjVisual_rgba WrapMjVisual_rgba(mjVisual_rgba* p):
 *     cdef PyMjVisual_rgba o = PyMjVisual_rgba()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjVisual_rgba), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":605
 * cdef PyMjVisual_rgba WrapMjVisual_rgba(mjVisual_rgba* p):
 *     cdef PyMjVisual_rgba o = PyMjVisual_rgba()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_rgba *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":606
 *     cdef PyMjVisual_rgba o = PyMjVisual_rgba()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjStatistic(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":603
 *     def crankbroken(self): return self._crankbroken
 * 
 * cdef PyMjVisual_rgba WrapMjVisual_rgba(mjVisual_rgba* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjVisual_rgba o = PyMjVisual_rgba()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjVisual_rgba", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":614
 *     cdef np.ndarray _center
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":615
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":614
 *     cdef np.ndarray _center
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":619
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjStatistic* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":621
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjStatistic* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_13PyMjStatistic__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjStatistic *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":623
 *     cdef void _set(self, mjStatistic* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":626
 * 
 * 
 *         self._center = _wrap_mjtNum_1d(&p.center[0], 3)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->center[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_center);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_center));
  __pyx_v_self->_center = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":621
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjStatistic* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjStatistic._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":629
 * 
 *     @property
 *     def meaninertia(self): return self.ptr.meaninertia             # <<<<<<<<<<<<<<
 *     @meaninertia.setter
 *     def meaninertia(self, mjtNum x): self.ptr.meaninertia = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->meaninertia); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.meaninertia.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":631
 *     def meaninertia(self): return self.ptr.meaninertia
 *     @meaninertia.setter
 *     def meaninertia(self, mjtNum x): self.ptr.meaninertia = x             # <<<<<<<<<<<<<<
 *     @property
 *     def meanmass(self): return self.ptr.meanmass
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 631, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.meaninertia.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->meaninertia = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":633
 *     def meaninertia(self, mjtNum x): self.ptr.meaninertia = x
 *     @property
 *     def meanmass(self): return self.ptr.meanmass             # <<<<<<<<<<<<<<
 *     @meanmass.setter
 *     def meanmass(self, mjtNum x): self.ptr.meanmass = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meanmass_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meanmass_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meanmass___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meanmass___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->meanmass); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.meanmass.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":635
 *     def meanmass(self): return self.ptr.meanmass
 *     @meanmass.setter
 *     def meanmass(self, mjtNum x): self.ptr.meanmass = x             # <<<<<<<<<<<<<<
 *     @property
 *     def meansize(self): return self.ptr.meansize
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meanmass_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meanmass_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 635, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.meanmass.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meanmass_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meanmass_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->meanmass = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":637
 *     def meanmass(self, mjtNum x): self.ptr.meanmass = x
 *     @property
 *     def meansize(self): return self.ptr.meansize             # <<<<<<<<<<<<<<
 *     @meansize.setter
 *     def meansize(self, mjtNum x): self.ptr.meansize = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meansize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meansize_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meansize___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meansize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->meansize); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.meansize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":639
 *     def meansize(self): return self.ptr.meansize
 *     @meansize.setter
 *     def meansize(self, mjtNum x): self.ptr.meansize = x             # <<<<<<<<<<<<<<
 *     @property
 *     def extent(self): return self.ptr.extent
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meansize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meansize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 639, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.meansize.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meansize_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_8meansize_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->meansize = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":641
 *     def meansize(self, mjtNum x): self.ptr.meansize = x
 *     @property
 *     def extent(self): return self.ptr.extent             # <<<<<<<<<<<<<<
 *     @extent.setter
 *     def extent(self, mjtNum x): self.ptr.extent = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_6extent_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_6extent_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_6extent___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_6extent___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->extent); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.extent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":643
 *     def extent(self): return self.ptr.extent
 *     @extent.setter
 *     def extent(self, mjtNum x): self.ptr.extent = x             # <<<<<<<<<<<<<<
 *     @property
 *     def center(self): return self._center
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_6extent_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_6extent_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 643, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.extent.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_6extent_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_6extent_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->extent = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":645
 *     def extent(self, mjtNum x): self.ptr.extent = x
 *     @property
 *     def center(self): return self._center             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjStatistic WrapMjStatistic(mjStatistic* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_6center_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_6center_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_6center___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_6center___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_center));
  __pyx_r = ((PyObject *)__pyx_v_self->_center);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjStatistic_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjStatistic.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":647
 *     def center(self): return self._center
 * 
 * cdef PyMjStatistic WrapMjStatistic(mjStatistic* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjStatistic o = PyMjStatistic()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_f_9mujoco_py_4cymj_WrapMjStatistic(mjStatistic *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjStatistic", 0);

  /* "mujoco_py/generated/wrappers.pxi":648
 * 
 * cdef PyMjStatistic WrapMjStatistic(mjStatistic* p):
 *     cdef PyMjStatistic o = PyMjStatistic()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjStatistic), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":649
 * cdef PyMjStatistic WrapMjStatistic(mjStatistic* p):
 *     cdef PyMjStatistic o = PyMjStatistic()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjStatistic *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":650
 *     cdef PyMjStatistic o = PyMjStatistic()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjModel(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":647
 *     def center(self): return self._center
 * 
 * cdef PyMjStatistic WrapMjStatistic(mjStatistic* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjStatistic o = PyMjStatistic()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjStatistic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":892
 *     cdef readonly dict _body_name2id, _joint_name2id, _geom_name2id, _site_name2id, _light_name2id, _camera_name2id, _actuator_name2id, _sensor_name2id
 * 
 *     def body_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._body_id2name:
 *             raise ValueError("No body with id %d exists." % id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_1body_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_1body_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("body_id2name (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_body_id2name(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_body_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("body_id2name", 0);

  /* "mujoco_py/generated/wrappers.pxi":893
 * 
 *     def body_id2name(self, id):
 *         if id not in self._body_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No body with id %d exists." % id)
 *         return self._body_id2name[id]
 */
  if (unlikely(__pyx_v_self->_body_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 893, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_id, __pyx_v_self->_body_id2name, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 893, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":894
 *     def body_id2name(self, id):
 *         if id not in self._body_id2name:
 *             raise ValueError("No body with id %d exists." % id)             # <<<<<<<<<<<<<<
 *         return self._body_id2name[id]
 * 
 */
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_No_body_with_id_d_exists, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(3, 894, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":893
 * 
 *     def body_id2name(self, id):
 *         if id not in self._body_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No body with id %d exists." % id)
 *         return self._body_id2name[id]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":895
 *         if id not in self._body_id2name:
 *             raise ValueError("No body with id %d exists." % id)
 *         return self._body_id2name[id]             # <<<<<<<<<<<<<<
 * 
 *     def body_name2id(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_body_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 895, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_body_id2name, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":892
 *     cdef readonly dict _body_name2id, _joint_name2id, _geom_name2id, _site_name2id, _light_name2id, _camera_name2id, _actuator_name2id, _sensor_name2id
 * 
 *     def body_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._body_id2name:
 *             raise ValueError("No body with id %d exists." % id)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.body_id2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":897
 *         return self._body_id2name[id]
 * 
 *     def body_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._body_name2id:
 *             raise ValueError("No \"body\" with name %s exists. Available \"body\" names = %s." % (name, self.body_names))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_3body_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_3body_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("body_name2id (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2body_name2id(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2body_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("body_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":898
 * 
 *     def body_name2id(self, name):
 *         if name not in self._body_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"body\" with name %s exists. Available \"body\" names = %s." % (name, self.body_names))
 *         return self._body_name2id[name]
 */
  if (unlikely(__pyx_v_self->_body_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 898, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_body_name2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 898, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":899
 *     def body_name2id(self, name):
 *         if name not in self._body_name2id:
 *             raise ValueError("No \"body\" with name %s exists. Available \"body\" names = %s." % (name, self.body_names))             # <<<<<<<<<<<<<<
 *         return self._body_name2id[name]
 * 
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 899, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
    __Pyx_INCREF(__pyx_v_self->body_names);
    __Pyx_GIVEREF(__pyx_v_self->body_names);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->body_names);
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_No_body_with_name_s_exists_Avail, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 899, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 899, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 899, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(3, 899, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":898
 * 
 *     def body_name2id(self, name):
 *         if name not in self._body_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"body\" with name %s exists. Available \"body\" names = %s." % (name, self.body_names))
 *         return self._body_name2id[name]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":900
 *         if name not in self._body_name2id:
 *             raise ValueError("No \"body\" with name %s exists. Available \"body\" names = %s." % (name, self.body_names))
 *         return self._body_name2id[name]             # <<<<<<<<<<<<<<
 * 
 *     def joint_id2name(self, id):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_body_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 900, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_body_name2id, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 900, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":897
 *         return self._body_id2name[id]
 * 
 *     def body_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._body_name2id:
 *             raise ValueError("No \"body\" with name %s exists. Available \"body\" names = %s." % (name, self.body_names))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.body_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":902
 *         return self._body_name2id[name]
 * 
 *     def joint_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._joint_id2name:
 *             raise ValueError("No joint with id %d exists." % id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5joint_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5joint_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("joint_id2name (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4joint_id2name(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4joint_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("joint_id2name", 0);

  /* "mujoco_py/generated/wrappers.pxi":903
 * 
 *     def joint_id2name(self, id):
 *         if id not in self._joint_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No joint with id %d exists." % id)
 *         return self._joint_id2name[id]
 */
  if (unlikely(__pyx_v_self->_joint_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 903, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_id, __pyx_v_self->_joint_id2name, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 903, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":904
 *     def joint_id2name(self, id):
 *         if id not in self._joint_id2name:
 *             raise ValueError("No joint with id %d exists." % id)             # <<<<<<<<<<<<<<
 *         return self._joint_id2name[id]
 * 
 */
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_No_joint_with_id_d_exists, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 904, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 904, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 904, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(3, 904, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":903
 * 
 *     def joint_id2name(self, id):
 *         if id not in self._joint_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No joint with id %d exists." % id)
 *         return self._joint_id2name[id]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":905
 *         if id not in self._joint_id2name:
 *             raise ValueError("No joint with id %d exists." % id)
 *         return self._joint_id2name[id]             # <<<<<<<<<<<<<<
 * 
 *     def joint_name2id(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_joint_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 905, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_joint_id2name, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":902
 *         return self._body_name2id[name]
 * 
 *     def joint_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._joint_id2name:
 *             raise ValueError("No joint with id %d exists." % id)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.joint_id2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":907
 *         return self._joint_id2name[id]
 * 
 *     def joint_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._joint_name2id:
 *             raise ValueError("No \"joint\" with name %s exists. Available \"joint\" names = %s." % (name, self.joint_names))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7joint_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7joint_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("joint_name2id (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6joint_name2id(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6joint_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("joint_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":908
 * 
 *     def joint_name2id(self, name):
 *         if name not in self._joint_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"joint\" with name %s exists. Available \"joint\" names = %s." % (name, self.joint_names))
 *         return self._joint_name2id[name]
 */
  if (unlikely(__pyx_v_self->_joint_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 908, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_joint_name2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 908, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":909
 *     def joint_name2id(self, name):
 *         if name not in self._joint_name2id:
 *             raise ValueError("No \"joint\" with name %s exists. Available \"joint\" names = %s." % (name, self.joint_names))             # <<<<<<<<<<<<<<
 *         return self._joint_name2id[name]
 * 
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
    __Pyx_INCREF(__pyx_v_self->joint_names);
    __Pyx_GIVEREF(__pyx_v_self->joint_names);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->joint_names);
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_No_joint_with_name_s_exists_Avai, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(3, 909, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":908
 * 
 *     def joint_name2id(self, name):
 *         if name not in self._joint_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"joint\" with name %s exists. Available \"joint\" names = %s." % (name, self.joint_names))
 *         return self._joint_name2id[name]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":910
 *         if name not in self._joint_name2id:
 *             raise ValueError("No \"joint\" with name %s exists. Available \"joint\" names = %s." % (name, self.joint_names))
 *         return self._joint_name2id[name]             # <<<<<<<<<<<<<<
 * 
 *     def geom_id2name(self, id):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_joint_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 910, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_joint_name2id, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":907
 *         return self._joint_id2name[id]
 * 
 *     def joint_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._joint_name2id:
 *             raise ValueError("No \"joint\" with name %s exists. Available \"joint\" names = %s." % (name, self.joint_names))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.joint_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":912
 *         return self._joint_name2id[name]
 * 
 *     def geom_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._geom_id2name:
 *             raise ValueError("No geom with id %d exists." % id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("geom_id2name (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8geom_id2name(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8geom_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("geom_id2name", 0);

  /* "mujoco_py/generated/wrappers.pxi":913
 * 
 *     def geom_id2name(self, id):
 *         if id not in self._geom_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No geom with id %d exists." % id)
 *         return self._geom_id2name[id]
 */
  if (unlikely(__pyx_v_self->_geom_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 913, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_id, __pyx_v_self->_geom_id2name, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 913, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":914
 *     def geom_id2name(self, id):
 *         if id not in self._geom_id2name:
 *             raise ValueError("No geom with id %d exists." % id)             # <<<<<<<<<<<<<<
 *         return self._geom_id2name[id]
 * 
 */
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_No_geom_with_id_d_exists, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(3, 914, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":913
 * 
 *     def geom_id2name(self, id):
 *         if id not in self._geom_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No geom with id %d exists." % id)
 *         return self._geom_id2name[id]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":915
 *         if id not in self._geom_id2name:
 *             raise ValueError("No geom with id %d exists." % id)
 *         return self._geom_id2name[id]             # <<<<<<<<<<<<<<
 * 
 *     def geom_name2id(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_geom_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 915, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_geom_id2name, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":912
 *         return self._joint_name2id[name]
 * 
 *     def geom_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._geom_id2name:
 *             raise ValueError("No geom with id %d exists." % id)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.geom_id2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":917
 *         return self._geom_id2name[id]
 * 
 *     def geom_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._geom_name2id:
 *             raise ValueError("No \"geom\" with name %s exists. Available \"geom\" names = %s." % (name, self.geom_names))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("geom_name2id (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_name2id(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("geom_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":918
 * 
 *     def geom_name2id(self, name):
 *         if name not in self._geom_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"geom\" with name %s exists. Available \"geom\" names = %s." % (name, self.geom_names))
 *         return self._geom_name2id[name]
 */
  if (unlikely(__pyx_v_self->_geom_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 918, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_geom_name2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 918, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":919
 *     def geom_name2id(self, name):
 *         if name not in self._geom_name2id:
 *             raise ValueError("No \"geom\" with name %s exists. Available \"geom\" names = %s." % (name, self.geom_names))             # <<<<<<<<<<<<<<
 *         return self._geom_name2id[name]
 * 
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
    __Pyx_INCREF(__pyx_v_self->geom_names);
    __Pyx_GIVEREF(__pyx_v_self->geom_names);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->geom_names);
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_No_geom_with_name_s_exists_Avail, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(3, 919, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":918
 * 
 *     def geom_name2id(self, name):
 *         if name not in self._geom_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"geom\" with name %s exists. Available \"geom\" names = %s." % (name, self.geom_names))
 *         return self._geom_name2id[name]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":920
 *         if name not in self._geom_name2id:
 *             raise ValueError("No \"geom\" with name %s exists. Available \"geom\" names = %s." % (name, self.geom_names))
 *         return self._geom_name2id[name]             # <<<<<<<<<<<<<<
 * 
 *     def site_id2name(self, id):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_geom_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 920, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_geom_name2id, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 920, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":917
 *         return self._geom_id2name[id]
 * 
 *     def geom_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._geom_name2id:
 *             raise ValueError("No \"geom\" with name %s exists. Available \"geom\" names = %s." % (name, self.geom_names))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.geom_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":922
 *         return self._geom_name2id[name]
 * 
 *     def site_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._site_id2name:
 *             raise ValueError("No site with id %d exists." % id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13site_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13site_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("site_id2name (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12site_id2name(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12site_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("site_id2name", 0);

  /* "mujoco_py/generated/wrappers.pxi":923
 * 
 *     def site_id2name(self, id):
 *         if id not in self._site_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No site with id %d exists." % id)
 *         return self._site_id2name[id]
 */
  if (unlikely(__pyx_v_self->_site_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 923, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_id, __pyx_v_self->_site_id2name, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 923, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":924
 *     def site_id2name(self, id):
 *         if id not in self._site_id2name:
 *             raise ValueError("No site with id %d exists." % id)             # <<<<<<<<<<<<<<
 *         return self._site_id2name[id]
 * 
 */
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_No_site_with_id_d_exists, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 924, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 924, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 924, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(3, 924, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":923
 * 
 *     def site_id2name(self, id):
 *         if id not in self._site_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No site with id %d exists." % id)
 *         return self._site_id2name[id]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":925
 *         if id not in self._site_id2name:
 *             raise ValueError("No site with id %d exists." % id)
 *         return self._site_id2name[id]             # <<<<<<<<<<<<<<
 * 
 *     def site_name2id(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_site_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 925, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_site_id2name, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":922
 *         return self._geom_name2id[name]
 * 
 *     def site_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._site_id2name:
 *             raise ValueError("No site with id %d exists." % id)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.site_id2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":927
 *         return self._site_id2name[id]
 * 
 *     def site_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._site_name2id:
 *             raise ValueError("No \"site\" with name %s exists. Available \"site\" names = %s." % (name, self.site_names))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15site_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15site_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("site_name2id (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14site_name2id(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14site_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("site_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":928
 * 
 *     def site_name2id(self, name):
 *         if name not in self._site_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"site\" with name %s exists. Available \"site\" names = %s." % (name, self.site_names))
 *         return self._site_name2id[name]
 */
  if (unlikely(__pyx_v_self->_site_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 928, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_site_name2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 928, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":929
 *     def site_name2id(self, name):
 *         if name not in self._site_name2id:
 *             raise ValueError("No \"site\" with name %s exists. Available \"site\" names = %s." % (name, self.site_names))             # <<<<<<<<<<<<<<
 *         return self._site_name2id[name]
 * 
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 929, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
    __Pyx_INCREF(__pyx_v_self->site_names);
    __Pyx_GIVEREF(__pyx_v_self->site_names);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->site_names);
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_No_site_with_name_s_exists_Avail, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 929, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 929, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 929, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(3, 929, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":928
 * 
 *     def site_name2id(self, name):
 *         if name not in self._site_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"site\" with name %s exists. Available \"site\" names = %s." % (name, self.site_names))
 *         return self._site_name2id[name]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":930
 *         if name not in self._site_name2id:
 *             raise ValueError("No \"site\" with name %s exists. Available \"site\" names = %s." % (name, self.site_names))
 *         return self._site_name2id[name]             # <<<<<<<<<<<<<<
 * 
 *     def light_id2name(self, id):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_site_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 930, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_site_name2id, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":927
 *         return self._site_id2name[id]
 * 
 *     def site_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._site_name2id:
 *             raise ValueError("No \"site\" with name %s exists. Available \"site\" names = %s." % (name, self.site_names))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.site_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":932
 *         return self._site_name2id[name]
 * 
 *     def light_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._light_id2name:
 *             raise ValueError("No light with id %d exists." % id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17light_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17light_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("light_id2name (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16light_id2name(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16light_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("light_id2name", 0);

  /* "mujoco_py/generated/wrappers.pxi":933
 * 
 *     def light_id2name(self, id):
 *         if id not in self._light_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No light with id %d exists." % id)
 *         return self._light_id2name[id]
 */
  if (unlikely(__pyx_v_self->_light_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 933, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_id, __pyx_v_self->_light_id2name, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 933, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":934
 *     def light_id2name(self, id):
 *         if id not in self._light_id2name:
 *             raise ValueError("No light with id %d exists." % id)             # <<<<<<<<<<<<<<
 *         return self._light_id2name[id]
 * 
 */
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_No_light_with_id_d_exists, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(3, 934, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":933
 * 
 *     def light_id2name(self, id):
 *         if id not in self._light_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No light with id %d exists." % id)
 *         return self._light_id2name[id]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":935
 *         if id not in self._light_id2name:
 *             raise ValueError("No light with id %d exists." % id)
 *         return self._light_id2name[id]             # <<<<<<<<<<<<<<
 * 
 *     def light_name2id(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_light_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 935, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_light_id2name, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":932
 *         return self._site_name2id[name]
 * 
 *     def light_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._light_id2name:
 *             raise ValueError("No light with id %d exists." % id)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.light_id2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":937
 *         return self._light_id2name[id]
 * 
 *     def light_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._light_name2id:
 *             raise ValueError("No \"light\" with name %s exists. Available \"light\" names = %s." % (name, self.light_names))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19light_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19light_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("light_name2id (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_18light_name2id(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_18light_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("light_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":938
 * 
 *     def light_name2id(self, name):
 *         if name not in self._light_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"light\" with name %s exists. Available \"light\" names = %s." % (name, self.light_names))
 *         return self._light_name2id[name]
 */
  if (unlikely(__pyx_v_self->_light_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 938, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_light_name2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 938, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":939
 *     def light_name2id(self, name):
 *         if name not in self._light_name2id:
 *             raise ValueError("No \"light\" with name %s exists. Available \"light\" names = %s." % (name, self.light_names))             # <<<<<<<<<<<<<<
 *         return self._light_name2id[name]
 * 
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 939, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
    __Pyx_INCREF(__pyx_v_self->light_names);
    __Pyx_GIVEREF(__pyx_v_self->light_names);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->light_names);
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_No_light_with_name_s_exists_Avai, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 939, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 939, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 939, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(3, 939, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":938
 * 
 *     def light_name2id(self, name):
 *         if name not in self._light_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"light\" with name %s exists. Available \"light\" names = %s." % (name, self.light_names))
 *         return self._light_name2id[name]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":940
 *         if name not in self._light_name2id:
 *             raise ValueError("No \"light\" with name %s exists. Available \"light\" names = %s." % (name, self.light_names))
 *         return self._light_name2id[name]             # <<<<<<<<<<<<<<
 * 
 *     def camera_id2name(self, id):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_light_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 940, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_light_name2id, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":937
 *         return self._light_id2name[id]
 * 
 *     def light_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._light_name2id:
 *             raise ValueError("No \"light\" with name %s exists. Available \"light\" names = %s." % (name, self.light_names))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.light_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":942
 *         return self._light_name2id[name]
 * 
 *     def camera_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._camera_id2name:
 *             raise ValueError("No camera with id %d exists." % id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_21camera_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_21camera_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("camera_id2name (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_20camera_id2name(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_20camera_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("camera_id2name", 0);

  /* "mujoco_py/generated/wrappers.pxi":943
 * 
 *     def camera_id2name(self, id):
 *         if id not in self._camera_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No camera with id %d exists." % id)
 *         return self._camera_id2name[id]
 */
  if (unlikely(__pyx_v_self->_camera_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 943, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_id, __pyx_v_self->_camera_id2name, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 943, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":944
 *     def camera_id2name(self, id):
 *         if id not in self._camera_id2name:
 *             raise ValueError("No camera with id %d exists." % id)             # <<<<<<<<<<<<<<
 *         return self._camera_id2name[id]
 * 
 */
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_No_camera_with_id_d_exists, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(3, 944, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":943
 * 
 *     def camera_id2name(self, id):
 *         if id not in self._camera_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No camera with id %d exists." % id)
 *         return self._camera_id2name[id]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":945
 *         if id not in self._camera_id2name:
 *             raise ValueError("No camera with id %d exists." % id)
 *         return self._camera_id2name[id]             # <<<<<<<<<<<<<<
 * 
 *     def camera_name2id(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_camera_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 945, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_camera_id2name, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":942
 *         return self._light_name2id[name]
 * 
 *     def camera_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._camera_id2name:
 *             raise ValueError("No camera with id %d exists." % id)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.camera_id2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":947
 *         return self._camera_id2name[id]
 * 
 *     def camera_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._camera_name2id:
 *             raise ValueError("No \"camera\" with name %s exists. Available \"camera\" names = %s." % (name, self.camera_names))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_23camera_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_23camera_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("camera_name2id (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_22camera_name2id(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_22camera_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("camera_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":948
 * 
 *     def camera_name2id(self, name):
 *         if name not in self._camera_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"camera\" with name %s exists. Available \"camera\" names = %s." % (name, self.camera_names))
 *         return self._camera_name2id[name]
 */
  if (unlikely(__pyx_v_self->_camera_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 948, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_camera_name2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 948, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":949
 *     def camera_name2id(self, name):
 *         if name not in self._camera_name2id:
 *             raise ValueError("No \"camera\" with name %s exists. Available \"camera\" names = %s." % (name, self.camera_names))             # <<<<<<<<<<<<<<
 *         return self._camera_name2id[name]
 * 
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 949, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
    __Pyx_INCREF(__pyx_v_self->camera_names);
    __Pyx_GIVEREF(__pyx_v_self->camera_names);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->camera_names);
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_No_camera_with_name_s_exists_Ava, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 949, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 949, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 949, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(3, 949, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":948
 * 
 *     def camera_name2id(self, name):
 *         if name not in self._camera_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"camera\" with name %s exists. Available \"camera\" names = %s." % (name, self.camera_names))
 *         return self._camera_name2id[name]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":950
 *         if name not in self._camera_name2id:
 *             raise ValueError("No \"camera\" with name %s exists. Available \"camera\" names = %s." % (name, self.camera_names))
 *         return self._camera_name2id[name]             # <<<<<<<<<<<<<<
 * 
 *     def actuator_id2name(self, id):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_camera_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 950, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_camera_name2id, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":947
 *         return self._camera_id2name[id]
 * 
 *     def camera_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._camera_name2id:
 *             raise ValueError("No \"camera\" with name %s exists. Available \"camera\" names = %s." % (name, self.camera_names))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.camera_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":952
 *         return self._camera_name2id[name]
 * 
 *     def actuator_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._actuator_id2name:
 *             raise ValueError("No actuator with id %d exists." % id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_25actuator_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_25actuator_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("actuator_id2name (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_24actuator_id2name(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_24actuator_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("actuator_id2name", 0);

  /* "mujoco_py/generated/wrappers.pxi":953
 * 
 *     def actuator_id2name(self, id):
 *         if id not in self._actuator_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No actuator with id %d exists." % id)
 *         return self._actuator_id2name[id]
 */
  if (unlikely(__pyx_v_self->_actuator_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 953, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_id, __pyx_v_self->_actuator_id2name, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 953, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":954
 *     def actuator_id2name(self, id):
 *         if id not in self._actuator_id2name:
 *             raise ValueError("No actuator with id %d exists." % id)             # <<<<<<<<<<<<<<
 *         return self._actuator_id2name[id]
 * 
 */
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_No_actuator_with_id_d_exists, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 954, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 954, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 954, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(3, 954, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":953
 * 
 *     def actuator_id2name(self, id):
 *         if id not in self._actuator_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No actuator with id %d exists." % id)
 *         return self._actuator_id2name[id]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":955
 *         if id not in self._actuator_id2name:
 *             raise ValueError("No actuator with id %d exists." % id)
 *         return self._actuator_id2name[id]             # <<<<<<<<<<<<<<
 * 
 *     def actuator_name2id(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_actuator_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 955, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_actuator_id2name, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":952
 *         return self._camera_name2id[name]
 * 
 *     def actuator_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._actuator_id2name:
 *             raise ValueError("No actuator with id %d exists." % id)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.actuator_id2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":957
 *         return self._actuator_id2name[id]
 * 
 *     def actuator_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._actuator_name2id:
 *             raise ValueError("No \"actuator\" with name %s exists. Available \"actuator\" names = %s." % (name, self.actuator_names))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_27actuator_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_27actuator_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("actuator_name2id (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_26actuator_name2id(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_26actuator_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("actuator_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":958
 * 
 *     def actuator_name2id(self, name):
 *         if name not in self._actuator_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"actuator\" with name %s exists. Available \"actuator\" names = %s." % (name, self.actuator_names))
 *         return self._actuator_name2id[name]
 */
  if (unlikely(__pyx_v_self->_actuator_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 958, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_actuator_name2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 958, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":959
 *     def actuator_name2id(self, name):
 *         if name not in self._actuator_name2id:
 *             raise ValueError("No \"actuator\" with name %s exists. Available \"actuator\" names = %s." % (name, self.actuator_names))             # <<<<<<<<<<<<<<
 *         return self._actuator_name2id[name]
 * 
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
    __Pyx_INCREF(__pyx_v_self->actuator_names);
    __Pyx_GIVEREF(__pyx_v_self->actuator_names);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->actuator_names);
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_No_actuator_with_name_s_exists_A, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(3, 959, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":958
 * 
 *     def actuator_name2id(self, name):
 *         if name not in self._actuator_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"actuator\" with name %s exists. Available \"actuator\" names = %s." % (name, self.actuator_names))
 *         return self._actuator_name2id[name]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":960
 *         if name not in self._actuator_name2id:
 *             raise ValueError("No \"actuator\" with name %s exists. Available \"actuator\" names = %s." % (name, self.actuator_names))
 *         return self._actuator_name2id[name]             # <<<<<<<<<<<<<<
 * 
 *     def sensor_id2name(self, id):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_actuator_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 960, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_actuator_name2id, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":957
 *         return self._actuator_id2name[id]
 * 
 *     def actuator_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._actuator_name2id:
 *             raise ValueError("No \"actuator\" with name %s exists. Available \"actuator\" names = %s." % (name, self.actuator_names))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.actuator_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":962
 *         return self._actuator_name2id[name]
 * 
 *     def sensor_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._sensor_id2name:
 *             raise ValueError("No sensor with id %d exists." % id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_29sensor_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_29sensor_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sensor_id2name (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_28sensor_id2name(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_28sensor_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("sensor_id2name", 0);

  /* "mujoco_py/generated/wrappers.pxi":963
 * 
 *     def sensor_id2name(self, id):
 *         if id not in self._sensor_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No sensor with id %d exists." % id)
 *         return self._sensor_id2name[id]
 */
  if (unlikely(__pyx_v_self->_sensor_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 963, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_id, __pyx_v_self->_sensor_id2name, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 963, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":964
 *     def sensor_id2name(self, id):
 *         if id not in self._sensor_id2name:
 *             raise ValueError("No sensor with id %d exists." % id)             # <<<<<<<<<<<<<<
 *         return self._sensor_id2name[id]
 * 
 */
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_No_sensor_with_id_d_exists, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(3, 964, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":963
 * 
 *     def sensor_id2name(self, id):
 *         if id not in self._sensor_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No sensor with id %d exists." % id)
 *         return self._sensor_id2name[id]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":965
 *         if id not in self._sensor_id2name:
 *             raise ValueError("No sensor with id %d exists." % id)
 *         return self._sensor_id2name[id]             # <<<<<<<<<<<<<<
 * 
 *     def sensor_name2id(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_sensor_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 965, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_sensor_id2name, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":962
 *         return self._actuator_name2id[name]
 * 
 *     def sensor_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._sensor_id2name:
 *             raise ValueError("No sensor with id %d exists." % id)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.sensor_id2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":967
 *         return self._sensor_id2name[id]
 * 
 *     def sensor_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._sensor_name2id:
 *             raise ValueError("No \"sensor\" with name %s exists. Available \"sensor\" names = %s." % (name, self.sensor_names))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_31sensor_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_31sensor_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sensor_name2id (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_30sensor_name2id(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_30sensor_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("sensor_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":968
 * 
 *     def sensor_name2id(self, name):
 *         if name not in self._sensor_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"sensor\" with name %s exists. Available \"sensor\" names = %s." % (name, self.sensor_names))
 *         return self._sensor_name2id[name]
 */
  if (unlikely(__pyx_v_self->_sensor_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 968, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_sensor_name2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 968, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":969
 *     def sensor_name2id(self, name):
 *         if name not in self._sensor_name2id:
 *             raise ValueError("No \"sensor\" with name %s exists. Available \"sensor\" names = %s." % (name, self.sensor_names))             # <<<<<<<<<<<<<<
 *         return self._sensor_name2id[name]
 *     cdef public tuple userdata_names
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
    __Pyx_INCREF(__pyx_v_self->sensor_names);
    __Pyx_GIVEREF(__pyx_v_self->sensor_names);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->sensor_names);
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_No_sensor_with_name_s_exists_Ava, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(3, 969, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":968
 * 
 *     def sensor_name2id(self, name):
 *         if name not in self._sensor_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"sensor\" with name %s exists. Available \"sensor\" names = %s." % (name, self.sensor_names))
 *         return self._sensor_name2id[name]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":970
 *         if name not in self._sensor_name2id:
 *             raise ValueError("No \"sensor\" with name %s exists. Available \"sensor\" names = %s." % (name, self.sensor_names))
 *         return self._sensor_name2id[name]             # <<<<<<<<<<<<<<
 *     cdef public tuple userdata_names
 *     cdef public dict _userdata_id2name
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_sensor_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 970, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_sensor_name2id, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":967
 *         return self._sensor_id2name[id]
 * 
 *     def sensor_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._sensor_name2id:
 *             raise ValueError("No \"sensor\" with name %s exists. Available \"sensor\" names = %s." % (name, self.sensor_names))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.sensor_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":975
 *     cdef public dict _userdata_name2id
 * 
 *     def userdata_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._userdata_id2name:
 *             raise ValueError("No userdata with id %d exists." % id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_33userdata_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_33userdata_id2name(PyObject *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("userdata_id2name (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_32userdata_id2name(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_32userdata_id2name(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("userdata_id2name", 0);

  /* "mujoco_py/generated/wrappers.pxi":976
 * 
 *     def userdata_id2name(self, id):
 *         if id not in self._userdata_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No userdata with id %d exists." % id)
 *         return self._userdata_id2name[id]
 */
  if (unlikely(__pyx_v_self->_userdata_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 976, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_id, __pyx_v_self->_userdata_id2name, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 976, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":977
 *     def userdata_id2name(self, id):
 *         if id not in self._userdata_id2name:
 *             raise ValueError("No userdata with id %d exists." % id)             # <<<<<<<<<<<<<<
 *         return self._userdata_id2name[id]
 * 
 */
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_No_userdata_with_id_d_exists, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 977, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 977, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 977, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(3, 977, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":976
 * 
 *     def userdata_id2name(self, id):
 *         if id not in self._userdata_id2name:             # <<<<<<<<<<<<<<
 *             raise ValueError("No userdata with id %d exists." % id)
 *         return self._userdata_id2name[id]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":978
 *         if id not in self._userdata_id2name:
 *             raise ValueError("No userdata with id %d exists." % id)
 *         return self._userdata_id2name[id]             # <<<<<<<<<<<<<<
 * 
 *     def userdata_name2id(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_userdata_id2name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 978, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_userdata_id2name, __pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":975
 *     cdef public dict _userdata_name2id
 * 
 *     def userdata_id2name(self, id):             # <<<<<<<<<<<<<<
 *         if id not in self._userdata_id2name:
 *             raise ValueError("No userdata with id %d exists." % id)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.userdata_id2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":980
 *         return self._userdata_id2name[id]
 * 
 *     def userdata_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._userdata_name2id:
 *             raise ValueError("No \"userdata\" with name %s exists. Available \"userdata\" names = %s." % (name, self.userdata_names))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_35userdata_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_35userdata_name2id(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("userdata_name2id (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_34userdata_name2id(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_34userdata_name2id(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("userdata_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":981
 * 
 *     def userdata_name2id(self, name):
 *         if name not in self._userdata_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"userdata\" with name %s exists. Available \"userdata\" names = %s." % (name, self.userdata_names))
 *         return self._userdata_name2id[name]
 */
  if (unlikely(__pyx_v_self->_userdata_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 981, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_self->_userdata_name2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 981, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/generated/wrappers.pxi":982
 *     def userdata_name2id(self, name):
 *         if name not in self._userdata_name2id:
 *             raise ValueError("No \"userdata\" with name %s exists. Available \"userdata\" names = %s." % (name, self.userdata_names))             # <<<<<<<<<<<<<<
 *         return self._userdata_name2id[name]
 * 
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 982, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
    __Pyx_INCREF(__pyx_v_self->userdata_names);
    __Pyx_GIVEREF(__pyx_v_self->userdata_names);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->userdata_names);
    __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_No_userdata_with_name_s_exists_A, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 982, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 982, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 982, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(3, 982, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":981
 * 
 *     def userdata_name2id(self, name):
 *         if name not in self._userdata_name2id:             # <<<<<<<<<<<<<<
 *             raise ValueError("No \"userdata\" with name %s exists. Available \"userdata\" names = %s." % (name, self.userdata_names))
 *         return self._userdata_name2id[name]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":983
 *         if name not in self._userdata_name2id:
 *             raise ValueError("No \"userdata\" with name %s exists. Available \"userdata\" names = %s." % (name, self.userdata_names))
 *         return self._userdata_name2id[name]             # <<<<<<<<<<<<<<
 * 
 *     cdef inline tuple _extract_mj_names(self, mjModel* p, int*name_adr, int n, mjtObj obj_type):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_userdata_name2id == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 983, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_userdata_name2id, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":980
 *         return self._userdata_id2name[id]
 * 
 *     def userdata_name2id(self, name):             # <<<<<<<<<<<<<<
 *         if name not in self._userdata_name2id:
 *             raise ValueError("No \"userdata\" with name %s exists. Available \"userdata\" names = %s." % (name, self.userdata_names))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.userdata_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9mujoco_py_4cymj_9PyMjModel_17_extract_mj_names_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "mujoco_py/generated/wrappers.pxi":1002
 * 
 *         # sort names by increasing id to keep order deterministic
 *         return tuple(id2name[id] for id in sorted(name2id.values())), name2id, id2name             # <<<<<<<<<<<<<<
 * 
 *     def get_xml(self):
 */

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_extract_mj_names_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *)__pyx_tp_new_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr(__pyx_ptype_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(3, 1002, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9mujoco_py_4cymj_9PyMjModel_17_extract_mj_names_2generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_PyMjModel__extract_mj_names_loca, __pyx_n_s_mujoco_py_cymj); if (unlikely(!gen)) __PYX_ERR(3, 1002, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel._extract_mj_names.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9mujoco_py_4cymj_9PyMjModel_17_extract_mj_names_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 1002, __pyx_L1_error)
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_name2id)) { __Pyx_RaiseClosureNameError("name2id"); __PYX_ERR(3, 1002, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_name2id == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
    __PYX_ERR(3, 1002, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyDict_Values(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 1002, __pyx_L1_error)
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(3, 1002, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(3, 1002, __pyx_L1_error)
    #else
    __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1002, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_id);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_id, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_id2name)) { __Pyx_RaiseClosureNameError("id2name"); __PYX_ERR(3, 1002, __pyx_L1_error) }
    if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_id2name == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(3, 1002, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_id2name, __pyx_cur_scope->__pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1002, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    __Pyx_XGIVEREF(__pyx_t_3);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_3);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 1002, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":985
 *         return self._userdata_name2id[name]
 * 
 *     cdef inline tuple _extract_mj_names(self, mjModel* p, int*name_adr, int n, mjtObj obj_type):             # <<<<<<<<<<<<<<
 *         cdef char *name
 *         cdef int obj_id
 */

static CYTHON_INLINE PyObject *__pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, mjModel *__pyx_v_p, int *__pyx_v_name_adr, int __pyx_v_n, mjtObj __pyx_v_obj_type) {
  struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *__pyx_cur_scope;
  char *__pyx_v_name;
  int __pyx_v_obj_id;
  int __pyx_v_i;
  PyObject *__pyx_v_decoded_name = NULL;
  int __pyx_7genexpr__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_extract_mj_names", 0);
  __pyx_cur_scope = (struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *)__pyx_tp_new_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names(__pyx_ptype_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(3, 985, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }

  /* "mujoco_py/generated/wrappers.pxi":990
 * 
 *         # objects don't need to be named in the XML, so name might be None
 *         id2name = {i: None for i in range(n)}             # <<<<<<<<<<<<<<
 *         name2id = {}
 *         for i in range(n):
 */
  { /* enter inner scope */
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 990, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_n;
    for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
      __pyx_7genexpr__pyx_v_i = __pyx_t_3;
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_7genexpr__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 990, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_t_4, (PyObject*)Py_None))) __PYX_ERR(3, 990, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  } /* exit inner scope */
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_id2name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":991
 *         # objects don't need to be named in the XML, so name might be None
 *         id2name = {i: None for i in range(n)}
 *         name2id = {}             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             name = p.names + name_adr[i]
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_name2id = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":992
 *         id2name = {i: None for i in range(n)}
 *         name2id = {}
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             name = p.names + name_adr[i]
 *             decoded_name = name.decode()
 */
  __pyx_t_2 = __pyx_v_n;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "mujoco_py/generated/wrappers.pxi":993
 *         name2id = {}
 *         for i in range(n):
 *             name = p.names + name_adr[i]             # <<<<<<<<<<<<<<
 *             decoded_name = name.decode()
 *             if decoded_name:
 */
    __pyx_v_name = (__pyx_v_p->names + (__pyx_v_name_adr[__pyx_v_i]));

    /* "mujoco_py/generated/wrappers.pxi":994
 *         for i in range(n):
 *             name = p.names + name_adr[i]
 *             decoded_name = name.decode()             # <<<<<<<<<<<<<<
 *             if decoded_name:
 *                 obj_id = mj_name2id(p, obj_type, name)
 */
    __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_name, 0, strlen(__pyx_v_name), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 994, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_decoded_name, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "mujoco_py/generated/wrappers.pxi":995
 *             name = p.names + name_adr[i]
 *             decoded_name = name.decode()
 *             if decoded_name:             # <<<<<<<<<<<<<<
 *                 obj_id = mj_name2id(p, obj_type, name)
 *                 assert 0 <= obj_id < n and id2name[obj_id] is None
 */
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_decoded_name); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(3, 995, __pyx_L1_error)
    if (__pyx_t_5) {

      /* "mujoco_py/generated/wrappers.pxi":996
 *             decoded_name = name.decode()
 *             if decoded_name:
 *                 obj_id = mj_name2id(p, obj_type, name)             # <<<<<<<<<<<<<<
 *                 assert 0 <= obj_id < n and id2name[obj_id] is None
 *                 name2id[decoded_name] = obj_id
 */
      __pyx_v_obj_id = mj_name2id(__pyx_v_p, __pyx_v_obj_type, __pyx_v_name);

      /* "mujoco_py/generated/wrappers.pxi":997
 *             if decoded_name:
 *                 obj_id = mj_name2id(p, obj_type, name)
 *                 assert 0 <= obj_id < n and id2name[obj_id] is None             # <<<<<<<<<<<<<<
 *                 name2id[decoded_name] = obj_id
 *                 id2name[obj_id] = decoded_name
 */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!Py_OptimizeFlag)) {
        __pyx_t_6 = (0 <= __pyx_v_obj_id);
        if (__pyx_t_6) {
          __pyx_t_6 = (__pyx_v_obj_id < __pyx_v_n);
        }
        __pyx_t_7 = (__pyx_t_6 != 0);
        if (__pyx_t_7) {
        } else {
          __pyx_t_5 = __pyx_t_7;
          goto __pyx_L8_bool_binop_done;
        }
        __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_obj_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 997, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_cur_scope->__pyx_v_id2name, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 997, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_7 = (__pyx_t_4 == Py_None);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_6 = (__pyx_t_7 != 0);
        __pyx_t_5 = __pyx_t_6;
        __pyx_L8_bool_binop_done:;
        if (unlikely(!__pyx_t_5)) {
          PyErr_SetNone(PyExc_AssertionError);
          __PYX_ERR(3, 997, __pyx_L1_error)
        }
      }
      #endif

      /* "mujoco_py/generated/wrappers.pxi":998
 *                 obj_id = mj_name2id(p, obj_type, name)
 *                 assert 0 <= obj_id < n and id2name[obj_id] is None
 *                 name2id[decoded_name] = obj_id             # <<<<<<<<<<<<<<
 *                 id2name[obj_id] = decoded_name
 * 
 */
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_obj_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 998, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (unlikely(PyDict_SetItem(__pyx_cur_scope->__pyx_v_name2id, __pyx_v_decoded_name, __pyx_t_4) < 0)) __PYX_ERR(3, 998, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "mujoco_py/generated/wrappers.pxi":999
 *                 assert 0 <= obj_id < n and id2name[obj_id] is None
 *                 name2id[decoded_name] = obj_id
 *                 id2name[obj_id] = decoded_name             # <<<<<<<<<<<<<<
 * 
 *         # sort names by increasing id to keep order deterministic
 */
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_obj_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 999, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (unlikely(PyDict_SetItem(__pyx_cur_scope->__pyx_v_id2name, __pyx_t_4, __pyx_v_decoded_name) < 0)) __PYX_ERR(3, 999, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "mujoco_py/generated/wrappers.pxi":995
 *             name = p.names + name_adr[i]
 *             decoded_name = name.decode()
 *             if decoded_name:             # <<<<<<<<<<<<<<
 *                 obj_id = mj_name2id(p, obj_type, name)
 *                 assert 0 <= obj_id < n and id2name[obj_id] is None
 */
    }
  }

  /* "mujoco_py/generated/wrappers.pxi":1002
 * 
 *         # sort names by increasing id to keep order deterministic
 *         return tuple(id2name[id] for id in sorted(name2id.values())), name2id, id2name             # <<<<<<<<<<<<<<
 * 
 *     def get_xml(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_extract_mj_names_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name2id);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name2id);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_cur_scope->__pyx_v_name2id);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_id2name);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_id2name);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_cur_scope->__pyx_v_id2name);
  __pyx_t_1 = 0;
  __pyx_r = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":985
 *         return self._userdata_name2id[name]
 * 
 *     cdef inline tuple _extract_mj_names(self, mjModel* p, int*name_adr, int n, mjtObj obj_type):             # <<<<<<<<<<<<<<
 *         cdef char *name
 *         cdef int obj_id
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel._extract_mj_names", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_decoded_name);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1004
 *         return tuple(id2name[id] for id in sorted(name2id.values())), name2id, id2name
 * 
 *     def get_xml(self):             # <<<<<<<<<<<<<<
 *         cdef char errstr[300]
 *         cdef int ret
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_37get_xml(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_37get_xml(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_xml (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_36get_xml(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_36get_xml(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  char __pyx_v_errstr[0x12C];
  int __pyx_v_ret;
  PyObject *__pyx_v_td = NULL;
  PyObject *__pyx_v_filename = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  char const *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_t_16;
  int __pyx_t_17;
  PyObject *__pyx_t_18 = NULL;
  __Pyx_RefNannySetupContext("get_xml", 0);

  /* "mujoco_py/generated/wrappers.pxi":1007
 *         cdef char errstr[300]
 *         cdef int ret
 *         with TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *             filename = os.path.join(td, 'model.xml')
 *             with wrap_mujoco_warning():
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_TemporaryDirectory); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1007, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1007, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1007, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1007, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1007, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1007, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1007, __pyx_L3_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {
          __pyx_v_td = __pyx_t_3;
          __pyx_t_3 = 0;

          /* "mujoco_py/generated/wrappers.pxi":1008
 *         cdef int ret
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.xml')             # <<<<<<<<<<<<<<
 *             with wrap_mujoco_warning():
 *                 ret = mj_saveLastXML(filename.encode(), self.ptr, errstr, 300)
 */
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1008, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1008, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_join); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1008, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __pyx_t_2 = NULL;
          __pyx_t_9 = 0;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_2)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_2);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
              __pyx_t_9 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_1)) {
            PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_td, __pyx_kp_u_model_xml};
            __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1008, __pyx_L7_error)
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_GOTREF(__pyx_t_3);
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
            PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_td, __pyx_kp_u_model_xml};
            __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1008, __pyx_L7_error)
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_GOTREF(__pyx_t_3);
          } else
          #endif
          {
            __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1008, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_2) {
              __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
            }
            __Pyx_INCREF(__pyx_v_td);
            __Pyx_GIVEREF(__pyx_v_td);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_v_td);
            __Pyx_INCREF(__pyx_kp_u_model_xml);
            __Pyx_GIVEREF(__pyx_kp_u_model_xml);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_kp_u_model_xml);
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1008, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_v_filename = __pyx_t_3;
          __pyx_t_3 = 0;

          /* "mujoco_py/generated/wrappers.pxi":1009
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.xml')
 *             with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *                 ret = mj_saveLastXML(filename.encode(), self.ptr, errstr, 300)
 *             if ret == 0:
 */
          /*with:*/ {
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_wrap_mujoco_warning); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1009, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = NULL;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
              }
            }
            if (__pyx_t_5) {
              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1009, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            } else {
              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1009, __pyx_L7_error)
            }
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_10 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 1009, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1009, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_2 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_2)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_2);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
              }
            }
            if (__pyx_t_2) {
              __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1009, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            } else {
              __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1009, __pyx_L13_error)
            }
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            /*try:*/ {
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_12);
                __Pyx_XGOTREF(__pyx_t_13);
                /*try:*/ {

                  /* "mujoco_py/generated/wrappers.pxi":1010
 *             filename = os.path.join(td, 'model.xml')
 *             with wrap_mujoco_warning():
 *                 ret = mj_saveLastXML(filename.encode(), self.ptr, errstr, 300)             # <<<<<<<<<<<<<<
 *             if ret == 0:
 *                 raise Exception('Failed to save XML: {}'.format(errstr))
 */
                  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1010, __pyx_L17_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __pyx_t_5 = NULL;
                  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
                    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
                    if (likely(__pyx_t_5)) {
                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                      __Pyx_INCREF(__pyx_t_5);
                      __Pyx_INCREF(function);
                      __Pyx_DECREF_SET(__pyx_t_1, function);
                    }
                  }
                  if (__pyx_t_5) {
                    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1010, __pyx_L17_error)
                    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  } else {
                    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1010, __pyx_L17_error)
                  }
                  __Pyx_GOTREF(__pyx_t_3);
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(3, 1010, __pyx_L17_error)
                  __pyx_v_ret = mj_saveLastXML(__pyx_t_14, __pyx_v_self->ptr, __pyx_v_errstr, 0x12C);
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

                  /* "mujoco_py/generated/wrappers.pxi":1009
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.xml')
 *             with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *                 ret = mj_saveLastXML(filename.encode(), self.ptr, errstr, 300)
 *             if ret == 0:
 */
                }
                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
                goto __pyx_L22_try_end;
                __pyx_L17_error:;
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                /*except:*/ {
                  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.get_xml", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_5) < 0) __PYX_ERR(3, 1009, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_GOTREF(__pyx_t_5);
                  __pyx_t_2 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1009, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL);
                  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                  if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 1009, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_15);
                  __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_15);
                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                  if (__pyx_t_16 < 0) __PYX_ERR(3, 1009, __pyx_L19_except_error)
                  __pyx_t_17 = ((!(__pyx_t_16 != 0)) != 0);
                  if (__pyx_t_17) {
                    __Pyx_GIVEREF(__pyx_t_3);
                    __Pyx_GIVEREF(__pyx_t_1);
                    __Pyx_XGIVEREF(__pyx_t_5);
                    __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_1, __pyx_t_5);
                    __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_5 = 0; 
                    __PYX_ERR(3, 1009, __pyx_L19_except_error)
                  }
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  goto __pyx_L18_exception_handled;
                }
                __pyx_L19_except_error:;
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_XGIVEREF(__pyx_t_12);
                __Pyx_XGIVEREF(__pyx_t_13);
                __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
                goto __pyx_L7_error;
                __pyx_L18_exception_handled:;
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_XGIVEREF(__pyx_t_12);
                __Pyx_XGIVEREF(__pyx_t_13);
                __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
                __pyx_L22_try_end:;
              }
            }
            /*finally:*/ {
              /*normal exit:*/{
                if (__pyx_t_10) {
                  __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__21, NULL);
                  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                  if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 1009, __pyx_L7_error)
                  __Pyx_GOTREF(__pyx_t_13);
                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
                }
                goto __pyx_L16;
              }
              __pyx_L16:;
            }
            goto __pyx_L26;
            __pyx_L13_error:;
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            goto __pyx_L7_error;
            __pyx_L26:;
          }

          /* "mujoco_py/generated/wrappers.pxi":1011
 *             with wrap_mujoco_warning():
 *                 ret = mj_saveLastXML(filename.encode(), self.ptr, errstr, 300)
 *             if ret == 0:             # <<<<<<<<<<<<<<
 *                 raise Exception('Failed to save XML: {}'.format(errstr))
 *             return open(filename).read()
 */
          __pyx_t_17 = ((__pyx_v_ret == 0) != 0);
          if (__pyx_t_17) {

            /* "mujoco_py/generated/wrappers.pxi":1012
 *                 ret = mj_saveLastXML(filename.encode(), self.ptr, errstr, 300)
 *             if ret == 0:
 *                 raise Exception('Failed to save XML: {}'.format(errstr))             # <<<<<<<<<<<<<<
 *             return open(filename).read()
 * 
 */
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Failed_to_save_XML, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1012, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_3 = __Pyx_PyObject_FromString(__pyx_v_errstr); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1012, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_2 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_2)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_2);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
              }
            }
            if (!__pyx_t_2) {
              __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1012, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_GOTREF(__pyx_t_5);
            } else {
              #if CYTHON_FAST_PYCALL
              if (PyFunction_Check(__pyx_t_1)) {
                PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
                __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1012, __pyx_L7_error)
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              } else
              #endif
              #if CYTHON_FAST_PYCCALL
              if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
                PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
                __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1012, __pyx_L7_error)
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              } else
              #endif
              {
                __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(3, 1012, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_18);
                __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_2); __pyx_t_2 = NULL;
                __Pyx_GIVEREF(__pyx_t_3);
                PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_3);
                __pyx_t_3 = 0;
                __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1012, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
              }
            }
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1012, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1012, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_Raise(__pyx_t_5, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __PYX_ERR(3, 1012, __pyx_L7_error)

            /* "mujoco_py/generated/wrappers.pxi":1011
 *             with wrap_mujoco_warning():
 *                 ret = mj_saveLastXML(filename.encode(), self.ptr, errstr, 300)
 *             if ret == 0:             # <<<<<<<<<<<<<<
 *                 raise Exception('Failed to save XML: {}'.format(errstr))
 *             return open(filename).read()
 */
          }

          /* "mujoco_py/generated/wrappers.pxi":1013
 *             if ret == 0:
 *                 raise Exception('Failed to save XML: {}'.format(errstr))
 *             return open(filename).read()             # <<<<<<<<<<<<<<
 * 
 *     def get_mjb(self):
 */
          __Pyx_XDECREF(__pyx_r);
          __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1013, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_INCREF(__pyx_v_filename);
          __Pyx_GIVEREF(__pyx_v_filename);
          PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_filename);
          __pyx_t_18 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_1, NULL); if (unlikely(!__pyx_t_18)) __PYX_ERR(3, 1013, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_18);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_read); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1013, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          __pyx_t_18 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_18)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_18);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
            }
          }
          if (__pyx_t_18) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_18); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1013, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          } else {
            __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1013, __pyx_L7_error)
          }
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_r = __pyx_t_5;
          __pyx_t_5 = 0;
          goto __pyx_L11_try_return;

          /* "mujoco_py/generated/wrappers.pxi":1007
 *         cdef char errstr[300]
 *         cdef int ret
 *         with TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *             filename = os.path.join(td, 'model.xml')
 *             with wrap_mujoco_warning():
 */
        }
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.get_xml", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_18) < 0) __PYX_ERR(3, 1007, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_18);
          __pyx_t_3 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_1, __pyx_t_18); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1007, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 1007, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_17 < 0) __PYX_ERR(3, 1007, __pyx_L9_except_error)
          __pyx_t_16 = ((!(__pyx_t_17 != 0)) != 0);
          if (__pyx_t_16) {
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_1, __pyx_t_18);
            __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_18 = 0; 
            __PYX_ERR(3, 1007, __pyx_L9_except_error)
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__22, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 1007, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_8 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_4) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__23, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 1007, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __pyx_r = __pyx_t_8;
        __pyx_t_8 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L31;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L31:;
  }

  /* "mujoco_py/generated/wrappers.pxi":1004
 *         return tuple(id2name[id] for id in sorted(name2id.values())), name2id, id2name
 * 
 *     def get_xml(self):             # <<<<<<<<<<<<<<
 *         cdef char errstr[300]
 *         cdef int ret
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.get_xml", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_td);
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1015
 *             return open(filename).read()
 * 
 *     def get_mjb(self):             # <<<<<<<<<<<<<<
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_39get_mjb(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_39get_mjb(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_mjb (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_38get_mjb(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_38get_mjb(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_v_td = NULL;
  PyObject *__pyx_v_filename = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  char const *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_t_16;
  int __pyx_t_17;
  __Pyx_RefNannySetupContext("get_mjb", 0);

  /* "mujoco_py/generated/wrappers.pxi":1016
 * 
 *     def get_mjb(self):
 *         with TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *             filename = os.path.join(td, 'model.mjb')
 *             with wrap_mujoco_warning():
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_TemporaryDirectory); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1016, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1016, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1016, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1016, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1016, __pyx_L3_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {
          __pyx_v_td = __pyx_t_3;
          __pyx_t_3 = 0;

          /* "mujoco_py/generated/wrappers.pxi":1017
 *     def get_mjb(self):
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')             # <<<<<<<<<<<<<<
 *             with wrap_mujoco_warning():
 *                 mj_saveModel(self.ptr, filename.encode(), NULL, 0)
 */
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1017, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1017, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_join); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1017, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __pyx_t_2 = NULL;
          __pyx_t_9 = 0;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_2)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_2);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
              __pyx_t_9 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_1)) {
            PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_td, __pyx_kp_u_model_mjb};
            __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1017, __pyx_L7_error)
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_GOTREF(__pyx_t_3);
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
            PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_td, __pyx_kp_u_model_mjb};
            __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1017, __pyx_L7_error)
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_GOTREF(__pyx_t_3);
          } else
          #endif
          {
            __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1017, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_2) {
              __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
            }
            __Pyx_INCREF(__pyx_v_td);
            __Pyx_GIVEREF(__pyx_v_td);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_v_td);
            __Pyx_INCREF(__pyx_kp_u_model_mjb);
            __Pyx_GIVEREF(__pyx_kp_u_model_mjb);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_kp_u_model_mjb);
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1017, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_v_filename = __pyx_t_3;
          __pyx_t_3 = 0;

          /* "mujoco_py/generated/wrappers.pxi":1018
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 *             with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *                 mj_saveModel(self.ptr, filename.encode(), NULL, 0)
 *             return open(filename, 'rb').read()
 */
          /*with:*/ {
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_wrap_mujoco_warning); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1018, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = NULL;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
              }
            }
            if (__pyx_t_5) {
              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1018, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            } else {
              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1018, __pyx_L7_error)
            }
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_10 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 1018, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1018, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_2 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_2)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_2);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
              }
            }
            if (__pyx_t_2) {
              __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1018, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            } else {
              __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1018, __pyx_L13_error)
            }
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            /*try:*/ {
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_12);
                __Pyx_XGOTREF(__pyx_t_13);
                /*try:*/ {

                  /* "mujoco_py/generated/wrappers.pxi":1019
 *             filename = os.path.join(td, 'model.mjb')
 *             with wrap_mujoco_warning():
 *                 mj_saveModel(self.ptr, filename.encode(), NULL, 0)             # <<<<<<<<<<<<<<
 *             return open(filename, 'rb').read()
 * 
 */
                  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1019, __pyx_L17_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __pyx_t_5 = NULL;
                  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
                    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
                    if (likely(__pyx_t_5)) {
                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                      __Pyx_INCREF(__pyx_t_5);
                      __Pyx_INCREF(function);
                      __Pyx_DECREF_SET(__pyx_t_1, function);
                    }
                  }
                  if (__pyx_t_5) {
                    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1019, __pyx_L17_error)
                    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  } else {
                    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1019, __pyx_L17_error)
                  }
                  __Pyx_GOTREF(__pyx_t_3);
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(3, 1019, __pyx_L17_error)
                  mj_saveModel(__pyx_v_self->ptr, __pyx_t_14, NULL, 0);
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

                  /* "mujoco_py/generated/wrappers.pxi":1018
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 *             with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *                 mj_saveModel(self.ptr, filename.encode(), NULL, 0)
 *             return open(filename, 'rb').read()
 */
                }
                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
                goto __pyx_L22_try_end;
                __pyx_L17_error:;
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                /*except:*/ {
                  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.get_mjb", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_5) < 0) __PYX_ERR(3, 1018, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_GOTREF(__pyx_t_5);
                  __pyx_t_2 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1018, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL);
                  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                  if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 1018, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_15);
                  __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_15);
                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                  if (__pyx_t_16 < 0) __PYX_ERR(3, 1018, __pyx_L19_except_error)
                  __pyx_t_17 = ((!(__pyx_t_16 != 0)) != 0);
                  if (__pyx_t_17) {
                    __Pyx_GIVEREF(__pyx_t_3);
                    __Pyx_GIVEREF(__pyx_t_1);
                    __Pyx_XGIVEREF(__pyx_t_5);
                    __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_1, __pyx_t_5);
                    __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_5 = 0; 
                    __PYX_ERR(3, 1018, __pyx_L19_except_error)
                  }
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  goto __pyx_L18_exception_handled;
                }
                __pyx_L19_except_error:;
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_XGIVEREF(__pyx_t_12);
                __Pyx_XGIVEREF(__pyx_t_13);
                __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
                goto __pyx_L7_error;
                __pyx_L18_exception_handled:;
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_XGIVEREF(__pyx_t_12);
                __Pyx_XGIVEREF(__pyx_t_13);
                __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
                __pyx_L22_try_end:;
              }
            }
            /*finally:*/ {
              /*normal exit:*/{
                if (__pyx_t_10) {
                  __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__24, NULL);
                  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                  if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 1018, __pyx_L7_error)
                  __Pyx_GOTREF(__pyx_t_13);
                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
                }
                goto __pyx_L16;
              }
              __pyx_L16:;
            }
            goto __pyx_L26;
            __pyx_L13_error:;
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            goto __pyx_L7_error;
            __pyx_L26:;
          }

          /* "mujoco_py/generated/wrappers.pxi":1020
 *             with wrap_mujoco_warning():
 *                 mj_saveModel(self.ptr, filename.encode(), NULL, 0)
 *             return open(filename, 'rb').read()             # <<<<<<<<<<<<<<
 * 
 *     def set_userdata_names(self, userdata_names):
 */
          __Pyx_XDECREF(__pyx_r);
          __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1020, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_INCREF(__pyx_v_filename);
          __Pyx_GIVEREF(__pyx_v_filename);
          PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_filename);
          __Pyx_INCREF(__pyx_n_u_rb);
          __Pyx_GIVEREF(__pyx_n_u_rb);
          PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_rb);
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1020, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_read); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1020, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_3 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_3)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
            }
          }
          if (__pyx_t_3) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1020, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          } else {
            __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1020, __pyx_L7_error)
          }
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_r = __pyx_t_5;
          __pyx_t_5 = 0;
          goto __pyx_L11_try_return;

          /* "mujoco_py/generated/wrappers.pxi":1016
 * 
 *     def get_mjb(self):
 *         with TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *             filename = os.path.join(td, 'model.mjb')
 *             with wrap_mujoco_warning():
 */
        }
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.get_mjb", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_3) < 0) __PYX_ERR(3, 1016, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_2 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1016, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 1016, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_17 < 0) __PYX_ERR(3, 1016, __pyx_L9_except_error)
          __pyx_t_16 = ((!(__pyx_t_17 != 0)) != 0);
          if (__pyx_t_16) {
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_1, __pyx_t_3);
            __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_3 = 0; 
            __PYX_ERR(3, 1016, __pyx_L9_except_error)
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__25, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 1016, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_8 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_4) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__26, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 1016, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __pyx_r = __pyx_t_8;
        __pyx_t_8 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L30;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L30:;
  }

  /* "mujoco_py/generated/wrappers.pxi":1015
 *             return open(filename).read()
 * 
 *     def get_mjb(self):             # <<<<<<<<<<<<<<
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.get_mjb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_td);
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1022
 *             return open(filename, 'rb').read()
 * 
 *     def set_userdata_names(self, userdata_names):             # <<<<<<<<<<<<<<
 *         assert isinstance(userdata_names, (list, tuple)), 'bad userdata names'
 *         assert len(userdata_names) <= self.nuserdata, 'insufficient userdata'
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_41set_userdata_names(PyObject *__pyx_v_self, PyObject *__pyx_v_userdata_names); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_41set_userdata_names(PyObject *__pyx_v_self, PyObject *__pyx_v_userdata_names) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_userdata_names (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_40set_userdata_names(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_userdata_names));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_40set_userdata_names(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_userdata_names) {
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  __Pyx_RefNannySetupContext("set_userdata_names", 0);

  /* "mujoco_py/generated/wrappers.pxi":1023
 * 
 *     def set_userdata_names(self, userdata_names):
 *         assert isinstance(userdata_names, (list, tuple)), 'bad userdata names'             # <<<<<<<<<<<<<<
 *         assert len(userdata_names) <= self.nuserdata, 'insufficient userdata'
 *         self.userdata_names = tuple(userdata_names)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_2 = PyList_Check(__pyx_v_userdata_names); 
    __pyx_t_3 = (__pyx_t_2 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L3_bool_binop_done;
    }
    __pyx_t_3 = PyTuple_Check(__pyx_v_userdata_names); 
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L3_bool_binop_done:;
    if (unlikely(!(__pyx_t_1 != 0))) {
      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_bad_userdata_names);
      __PYX_ERR(3, 1023, __pyx_L1_error)
    }
  }
  #endif

  /* "mujoco_py/generated/wrappers.pxi":1024
 *     def set_userdata_names(self, userdata_names):
 *         assert isinstance(userdata_names, (list, tuple)), 'bad userdata names'
 *         assert len(userdata_names) <= self.nuserdata, 'insufficient userdata'             # <<<<<<<<<<<<<<
 *         self.userdata_names = tuple(userdata_names)
 *         self._userdata_id2name = dict()
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_4 = PyObject_Length(__pyx_v_userdata_names); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 1024, __pyx_L1_error)
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nuserdata); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 1024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_LE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 1024, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 1024, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) {
      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_insufficient_userdata);
      __PYX_ERR(3, 1024, __pyx_L1_error)
    }
  }
  #endif

  /* "mujoco_py/generated/wrappers.pxi":1025
 *         assert isinstance(userdata_names, (list, tuple)), 'bad userdata names'
 *         assert len(userdata_names) <= self.nuserdata, 'insufficient userdata'
 *         self.userdata_names = tuple(userdata_names)             # <<<<<<<<<<<<<<
 *         self._userdata_id2name = dict()
 *         self._userdata_name2id = dict()
 */
  __pyx_t_7 = __Pyx_PySequence_Tuple(__pyx_v_userdata_names); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 1025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_7);
  __Pyx_GOTREF(__pyx_v_self->userdata_names);
  __Pyx_DECREF(__pyx_v_self->userdata_names);
  __pyx_v_self->userdata_names = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1026
 *         assert len(userdata_names) <= self.nuserdata, 'insufficient userdata'
 *         self.userdata_names = tuple(userdata_names)
 *         self._userdata_id2name = dict()             # <<<<<<<<<<<<<<
 *         self._userdata_name2id = dict()
 *         for i, name in enumerate(userdata_names):
 */
  __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_7);
  __Pyx_GOTREF(__pyx_v_self->_userdata_id2name);
  __Pyx_DECREF(__pyx_v_self->_userdata_id2name);
  __pyx_v_self->_userdata_id2name = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1027
 *         self.userdata_names = tuple(userdata_names)
 *         self._userdata_id2name = dict()
 *         self._userdata_name2id = dict()             # <<<<<<<<<<<<<<
 *         for i, name in enumerate(userdata_names):
 *             assert isinstance(name, str), 'names must all be strings'
 */
  __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_7);
  __Pyx_GOTREF(__pyx_v_self->_userdata_name2id);
  __Pyx_DECREF(__pyx_v_self->_userdata_name2id);
  __pyx_v_self->_userdata_name2id = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1028
 *         self._userdata_id2name = dict()
 *         self._userdata_name2id = dict()
 *         for i, name in enumerate(userdata_names):             # <<<<<<<<<<<<<<
 *             assert isinstance(name, str), 'names must all be strings'
 *             self._userdata_id2name[i] = name
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_7 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_v_userdata_names)) || PyTuple_CheckExact(__pyx_v_userdata_names)) {
    __pyx_t_6 = __pyx_v_userdata_names; __Pyx_INCREF(__pyx_t_6); __pyx_t_4 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_userdata_names); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 1028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 1028, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_6))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_6)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(3, 1028, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1028, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(3, 1028, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1028, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_8(__pyx_t_6);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 1028, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_INCREF(__pyx_t_7);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_7);
    __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_7, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7);
    __pyx_t_7 = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "mujoco_py/generated/wrappers.pxi":1029
 *         self._userdata_name2id = dict()
 *         for i, name in enumerate(userdata_names):
 *             assert isinstance(name, str), 'names must all be strings'             # <<<<<<<<<<<<<<
 *             self._userdata_id2name[i] = name
 *             self._userdata_name2id[name] = i
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      __pyx_t_1 = PyUnicode_Check(__pyx_v_name); 
      if (unlikely(!(__pyx_t_1 != 0))) {
        PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_names_must_all_be_strings);
        __PYX_ERR(3, 1029, __pyx_L1_error)
      }
    }
    #endif

    /* "mujoco_py/generated/wrappers.pxi":1030
 *         for i, name in enumerate(userdata_names):
 *             assert isinstance(name, str), 'names must all be strings'
 *             self._userdata_id2name[i] = name             # <<<<<<<<<<<<<<
 *             self._userdata_name2id[name] = i
 * 
 */
    if (unlikely(__pyx_v_self->_userdata_id2name == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(3, 1030, __pyx_L1_error)
    }
    if (unlikely(PyDict_SetItem(__pyx_v_self->_userdata_id2name, __pyx_v_i, __pyx_v_name) < 0)) __PYX_ERR(3, 1030, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":1031
 *             assert isinstance(name, str), 'names must all be strings'
 *             self._userdata_id2name[i] = name
 *             self._userdata_name2id[name] = i             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    if (unlikely(__pyx_v_self->_userdata_name2id == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(3, 1031, __pyx_L1_error)
    }
    if (unlikely(PyDict_SetItem(__pyx_v_self->_userdata_name2id, __pyx_v_name, __pyx_v_i) < 0)) __PYX_ERR(3, 1031, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":1028
 *         self._userdata_id2name = dict()
 *         self._userdata_name2id = dict()
 *         for i, name in enumerate(userdata_names):             # <<<<<<<<<<<<<<
 *             assert isinstance(name, str), 'names must all be strings'
 *             self._userdata_id2name[i] = name
 */
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1022
 *             return open(filename, 'rb').read()
 * 
 *     def set_userdata_names(self, userdata_names):             # <<<<<<<<<<<<<<
 *         assert isinstance(userdata_names, (list, tuple)), 'bad userdata names'
 *         assert len(userdata_names) <= self.nuserdata, 'insufficient userdata'
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.set_userdata_names", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1033
 *             self._userdata_name2id[name] = i
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         mj_deleteModel(self.ptr)
 * 
 */

/* Python wrapper */
static void __pyx_pw_9mujoco_py_4cymj_9PyMjModel_43__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_9mujoco_py_4cymj_9PyMjModel_43__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_9mujoco_py_4cymj_9PyMjModel_42__dealloc__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_9mujoco_py_4cymj_9PyMjModel_42__dealloc__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "mujoco_py/generated/wrappers.pxi":1034
 * 
 *     def __dealloc__(self):
 *         mj_deleteModel(self.ptr)             # <<<<<<<<<<<<<<
 * 
 *     def get_joint_qpos_addr(self, name):
 */
  mj_deleteModel(__pyx_v_self->ptr);

  /* "mujoco_py/generated/wrappers.pxi":1033
 *             self._userdata_name2id[name] = i
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         mj_deleteModel(self.ptr)
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":1036
 *         mj_deleteModel(self.ptr)
 * 
 *     def get_joint_qpos_addr(self, name):             # <<<<<<<<<<<<<<
 *         '''
 *         Returns the qpos address for given joint.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_45get_joint_qpos_addr(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_9PyMjModel_44get_joint_qpos_addr[] = "\n        Returns the qpos address for given joint.\n\n        Returns:\n        - address (int, tuple): returns int address if 1-dim joint, otherwise\n            returns the a (start, end) tuple for pos[start:end] access.\n        ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_45get_joint_qpos_addr(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_joint_qpos_addr (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_44get_joint_qpos_addr(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_44get_joint_qpos_addr(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_joint_id = NULL;
  PyObject *__pyx_v_joint_type = NULL;
  PyObject *__pyx_v_joint_addr = NULL;
  PyObject *__pyx_v_ndim = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("get_joint_qpos_addr", 0);

  /* "mujoco_py/generated/wrappers.pxi":1044
 *             returns the a (start, end) tuple for pos[start:end] access.
 *         '''
 *         joint_id = self.joint_name2id(name)             # <<<<<<<<<<<<<<
 *         joint_type = self.jnt_type[joint_id]
 *         joint_addr = self.jnt_qposadr[joint_id]
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_joint_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1044, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1044, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_joint_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1045
 *         '''
 *         joint_id = self.joint_name2id(name)
 *         joint_type = self.jnt_type[joint_id]             # <<<<<<<<<<<<<<
 *         joint_addr = self.jnt_qposadr[joint_id]
 *         if joint_type == mjtJoint.mjJNT_FREE:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_jnt_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_joint_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_joint_type = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1046
 *         joint_id = self.joint_name2id(name)
 *         joint_type = self.jnt_type[joint_id]
 *         joint_addr = self.jnt_qposadr[joint_id]             # <<<<<<<<<<<<<<
 *         if joint_type == mjtJoint.mjJNT_FREE:
 *             ndim = 7
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_jnt_qposadr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_v_joint_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_joint_addr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1047
 *         joint_type = self.jnt_type[joint_id]
 *         joint_addr = self.jnt_qposadr[joint_id]
 *         if joint_type == mjtJoint.mjJNT_FREE:             # <<<<<<<<<<<<<<
 *             ndim = 7
 *         elif joint_type == mjtJoint.mjJNT_BALL:
 */
  __pyx_t_1 = __Pyx_PyInt_From_mjtJoint(mjJNT_FREE); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_joint_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1047, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(3, 1047, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {

    /* "mujoco_py/generated/wrappers.pxi":1048
 *         joint_addr = self.jnt_qposadr[joint_id]
 *         if joint_type == mjtJoint.mjJNT_FREE:
 *             ndim = 7             # <<<<<<<<<<<<<<
 *         elif joint_type == mjtJoint.mjJNT_BALL:
 *             ndim = 4
 */
    __Pyx_INCREF(__pyx_int_7);
    __pyx_v_ndim = __pyx_int_7;

    /* "mujoco_py/generated/wrappers.pxi":1047
 *         joint_type = self.jnt_type[joint_id]
 *         joint_addr = self.jnt_qposadr[joint_id]
 *         if joint_type == mjtJoint.mjJNT_FREE:             # <<<<<<<<<<<<<<
 *             ndim = 7
 *         elif joint_type == mjtJoint.mjJNT_BALL:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/generated/wrappers.pxi":1049
 *         if joint_type == mjtJoint.mjJNT_FREE:
 *             ndim = 7
 *         elif joint_type == mjtJoint.mjJNT_BALL:             # <<<<<<<<<<<<<<
 *             ndim = 4
 *         else:
 */
  __pyx_t_2 = __Pyx_PyInt_From_mjtJoint(mjJNT_BALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_joint_type, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1049, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(3, 1049, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "mujoco_py/generated/wrappers.pxi":1050
 *             ndim = 7
 *         elif joint_type == mjtJoint.mjJNT_BALL:
 *             ndim = 4             # <<<<<<<<<<<<<<
 *         else:
 *             assert joint_type in (mjtJoint.mjJNT_HINGE, mjtJoint.mjJNT_SLIDE)
 */
    __Pyx_INCREF(__pyx_int_4);
    __pyx_v_ndim = __pyx_int_4;

    /* "mujoco_py/generated/wrappers.pxi":1049
 *         if joint_type == mjtJoint.mjJNT_FREE:
 *             ndim = 7
 *         elif joint_type == mjtJoint.mjJNT_BALL:             # <<<<<<<<<<<<<<
 *             ndim = 4
 *         else:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/generated/wrappers.pxi":1052
 *             ndim = 4
 *         else:
 *             assert joint_type in (mjtJoint.mjJNT_HINGE, mjtJoint.mjJNT_SLIDE)             # <<<<<<<<<<<<<<
 *             ndim = 1
 * 
 */
  /*else*/ {
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      __Pyx_INCREF(__pyx_v_joint_type);
      __pyx_t_1 = __pyx_v_joint_type;
      __pyx_t_2 = __Pyx_PyInt_From_mjtJoint(mjJNT_HINGE); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1052, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 1052, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (!__pyx_t_6) {
      } else {
        __pyx_t_5 = __pyx_t_6;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_4 = __Pyx_PyInt_From_mjtJoint(mjJNT_SLIDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1052, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 1052, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = __pyx_t_6;
      __pyx_L4_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!(__pyx_t_5 != 0))) {
        PyErr_SetNone(PyExc_AssertionError);
        __PYX_ERR(3, 1052, __pyx_L1_error)
      }
    }
    #endif

    /* "mujoco_py/generated/wrappers.pxi":1053
 *         else:
 *             assert joint_type in (mjtJoint.mjJNT_HINGE, mjtJoint.mjJNT_SLIDE)
 *             ndim = 1             # <<<<<<<<<<<<<<
 * 
 *         if ndim == 1:
 */
    __Pyx_INCREF(__pyx_int_1);
    __pyx_v_ndim = __pyx_int_1;
  }
  __pyx_L3:;

  /* "mujoco_py/generated/wrappers.pxi":1055
 *             ndim = 1
 * 
 *         if ndim == 1:             # <<<<<<<<<<<<<<
 *             return joint_addr
 *         else:
 */
  __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_ndim, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(3, 1055, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "mujoco_py/generated/wrappers.pxi":1056
 * 
 *         if ndim == 1:
 *             return joint_addr             # <<<<<<<<<<<<<<
 *         else:
 *             return (joint_addr, joint_addr + ndim)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_joint_addr);
    __pyx_r = __pyx_v_joint_addr;
    goto __pyx_L0;

    /* "mujoco_py/generated/wrappers.pxi":1055
 *             ndim = 1
 * 
 *         if ndim == 1:             # <<<<<<<<<<<<<<
 *             return joint_addr
 *         else:
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":1058
 *             return joint_addr
 *         else:
 *             return (joint_addr, joint_addr + ndim)             # <<<<<<<<<<<<<<
 * 
 *     def get_joint_qvel_addr(self, name):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyNumber_Add(__pyx_v_joint_addr, __pyx_v_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1058, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1058, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_joint_addr);
    __Pyx_GIVEREF(__pyx_v_joint_addr);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_joint_addr);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":1036
 *         mj_deleteModel(self.ptr)
 * 
 *     def get_joint_qpos_addr(self, name):             # <<<<<<<<<<<<<<
 *         '''
 *         Returns the qpos address for given joint.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.get_joint_qpos_addr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_joint_id);
  __Pyx_XDECREF(__pyx_v_joint_type);
  __Pyx_XDECREF(__pyx_v_joint_addr);
  __Pyx_XDECREF(__pyx_v_ndim);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1060
 *             return (joint_addr, joint_addr + ndim)
 * 
 *     def get_joint_qvel_addr(self, name):             # <<<<<<<<<<<<<<
 *         '''
 *         Returns the qvel address for given joint.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_47get_joint_qvel_addr(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_9PyMjModel_46get_joint_qvel_addr[] = "\n        Returns the qvel address for given joint.\n\n        Returns:\n        - address (int, tuple): returns int address if 1-dim joint, otherwise\n            returns the a (start, end) tuple for vel[start:end] access.\n        ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_47get_joint_qvel_addr(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_joint_qvel_addr (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_46get_joint_qvel_addr(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_46get_joint_qvel_addr(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_joint_id = NULL;
  PyObject *__pyx_v_joint_type = NULL;
  PyObject *__pyx_v_joint_addr = NULL;
  PyObject *__pyx_v_ndim = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("get_joint_qvel_addr", 0);

  /* "mujoco_py/generated/wrappers.pxi":1068
 *             returns the a (start, end) tuple for vel[start:end] access.
 *         '''
 *         joint_id = self.joint_name2id(name)             # <<<<<<<<<<<<<<
 *         joint_type = self.jnt_type[joint_id]
 *         joint_addr = self.jnt_dofadr[joint_id]
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_joint_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1068, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1068, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1068, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1068, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_joint_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1069
 *         '''
 *         joint_id = self.joint_name2id(name)
 *         joint_type = self.jnt_type[joint_id]             # <<<<<<<<<<<<<<
 *         joint_addr = self.jnt_dofadr[joint_id]
 *         if joint_type == mjtJoint.mjJNT_FREE:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_jnt_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_joint_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_joint_type = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1070
 *         joint_id = self.joint_name2id(name)
 *         joint_type = self.jnt_type[joint_id]
 *         joint_addr = self.jnt_dofadr[joint_id]             # <<<<<<<<<<<<<<
 *         if joint_type == mjtJoint.mjJNT_FREE:
 *             ndim = 6
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_jnt_dofadr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_v_joint_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_joint_addr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1071
 *         joint_type = self.jnt_type[joint_id]
 *         joint_addr = self.jnt_dofadr[joint_id]
 *         if joint_type == mjtJoint.mjJNT_FREE:             # <<<<<<<<<<<<<<
 *             ndim = 6
 *         elif joint_type == mjtJoint.mjJNT_BALL:
 */
  __pyx_t_1 = __Pyx_PyInt_From_mjtJoint(mjJNT_FREE); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_joint_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1071, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(3, 1071, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {

    /* "mujoco_py/generated/wrappers.pxi":1072
 *         joint_addr = self.jnt_dofadr[joint_id]
 *         if joint_type == mjtJoint.mjJNT_FREE:
 *             ndim = 6             # <<<<<<<<<<<<<<
 *         elif joint_type == mjtJoint.mjJNT_BALL:
 *             ndim = 3
 */
    __Pyx_INCREF(__pyx_int_6);
    __pyx_v_ndim = __pyx_int_6;

    /* "mujoco_py/generated/wrappers.pxi":1071
 *         joint_type = self.jnt_type[joint_id]
 *         joint_addr = self.jnt_dofadr[joint_id]
 *         if joint_type == mjtJoint.mjJNT_FREE:             # <<<<<<<<<<<<<<
 *             ndim = 6
 *         elif joint_type == mjtJoint.mjJNT_BALL:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/generated/wrappers.pxi":1073
 *         if joint_type == mjtJoint.mjJNT_FREE:
 *             ndim = 6
 *         elif joint_type == mjtJoint.mjJNT_BALL:             # <<<<<<<<<<<<<<
 *             ndim = 3
 *         else:
 */
  __pyx_t_2 = __Pyx_PyInt_From_mjtJoint(mjJNT_BALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_joint_type, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1073, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(3, 1073, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "mujoco_py/generated/wrappers.pxi":1074
 *             ndim = 6
 *         elif joint_type == mjtJoint.mjJNT_BALL:
 *             ndim = 3             # <<<<<<<<<<<<<<
 *         else:
 *             assert joint_type in (mjtJoint.mjJNT_HINGE, mjtJoint.mjJNT_SLIDE)
 */
    __Pyx_INCREF(__pyx_int_3);
    __pyx_v_ndim = __pyx_int_3;

    /* "mujoco_py/generated/wrappers.pxi":1073
 *         if joint_type == mjtJoint.mjJNT_FREE:
 *             ndim = 6
 *         elif joint_type == mjtJoint.mjJNT_BALL:             # <<<<<<<<<<<<<<
 *             ndim = 3
 *         else:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/generated/wrappers.pxi":1076
 *             ndim = 3
 *         else:
 *             assert joint_type in (mjtJoint.mjJNT_HINGE, mjtJoint.mjJNT_SLIDE)             # <<<<<<<<<<<<<<
 *             ndim = 1
 * 
 */
  /*else*/ {
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      __Pyx_INCREF(__pyx_v_joint_type);
      __pyx_t_1 = __pyx_v_joint_type;
      __pyx_t_2 = __Pyx_PyInt_From_mjtJoint(mjJNT_HINGE); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1076, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1076, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 1076, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (!__pyx_t_6) {
      } else {
        __pyx_t_5 = __pyx_t_6;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_4 = __Pyx_PyInt_From_mjtJoint(mjJNT_SLIDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1076, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1076, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 1076, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = __pyx_t_6;
      __pyx_L4_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!(__pyx_t_5 != 0))) {
        PyErr_SetNone(PyExc_AssertionError);
        __PYX_ERR(3, 1076, __pyx_L1_error)
      }
    }
    #endif

    /* "mujoco_py/generated/wrappers.pxi":1077
 *         else:
 *             assert joint_type in (mjtJoint.mjJNT_HINGE, mjtJoint.mjJNT_SLIDE)
 *             ndim = 1             # <<<<<<<<<<<<<<
 * 
 *         if ndim == 1:
 */
    __Pyx_INCREF(__pyx_int_1);
    __pyx_v_ndim = __pyx_int_1;
  }
  __pyx_L3:;

  /* "mujoco_py/generated/wrappers.pxi":1079
 *             ndim = 1
 * 
 *         if ndim == 1:             # <<<<<<<<<<<<<<
 *             return joint_addr
 *         else:
 */
  __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_ndim, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(3, 1079, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "mujoco_py/generated/wrappers.pxi":1080
 * 
 *         if ndim == 1:
 *             return joint_addr             # <<<<<<<<<<<<<<
 *         else:
 *             return (joint_addr, joint_addr + ndim)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_joint_addr);
    __pyx_r = __pyx_v_joint_addr;
    goto __pyx_L0;

    /* "mujoco_py/generated/wrappers.pxi":1079
 *             ndim = 1
 * 
 *         if ndim == 1:             # <<<<<<<<<<<<<<
 *             return joint_addr
 *         else:
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":1082
 *             return joint_addr
 *         else:
 *             return (joint_addr, joint_addr + ndim)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyNumber_Add(__pyx_v_joint_addr, __pyx_v_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1082, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1082, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_joint_addr);
    __Pyx_GIVEREF(__pyx_v_joint_addr);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_joint_addr);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":1060
 *             return (joint_addr, joint_addr + ndim)
 * 
 *     def get_joint_qvel_addr(self, name):             # <<<<<<<<<<<<<<
 *         '''
 *         Returns the qvel address for given joint.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.get_joint_qvel_addr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_joint_id);
  __Pyx_XDECREF(__pyx_v_joint_type);
  __Pyx_XDECREF(__pyx_v_joint_addr);
  __Pyx_XDECREF(__pyx_v_ndim);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1086
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjModel* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1088
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjModel* p):             # <<<<<<<<<<<<<<
 * 
 *         self.body_names, self._body_name2id, self._body_id2name = self._extract_mj_names(p, p.name_bodyadr, p.nbody, mjtObj.mjOBJ_BODY)
 */

static void __pyx_f_9mujoco_py_4cymj_9PyMjModel__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, mjModel *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":1090
 *     cdef void _set(self, mjModel* p):
 * 
 *         self.body_names, self._body_name2id, self._body_id2name = self._extract_mj_names(p, p.name_bodyadr, p.nbody, mjtObj.mjOBJ_BODY)             # <<<<<<<<<<<<<<
 *         self.joint_names, self._joint_name2id, self._joint_id2name = self._extract_mj_names(p, p.name_jntadr, p.njnt, mjtObj.mjOBJ_JOINT)
 *         self.geom_names, self._geom_name2id, self._geom_id2name = self._extract_mj_names(p, p.name_geomadr, p.ngeom, mjtObj.mjOBJ_GEOM)
 */
  __pyx_t_1 = __pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(__pyx_v_self, __pyx_v_p, __pyx_v_p->name_bodyadr, __pyx_v_p->nbody, mjOBJ_BODY); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(__pyx_t_1 != Py_None)) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(3, 1090, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(3, 1090, __pyx_L1_error)
  }
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(3, 1090, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(3, 1090, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(3, 1090, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->body_names);
  __Pyx_DECREF(__pyx_v_self->body_names);
  __pyx_v_self->body_names = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_body_name2id);
  __Pyx_DECREF(__pyx_v_self->_body_name2id);
  __pyx_v_self->_body_name2id = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->_body_id2name);
  __Pyx_DECREF(__pyx_v_self->_body_id2name);
  __pyx_v_self->_body_id2name = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1091
 * 
 *         self.body_names, self._body_name2id, self._body_id2name = self._extract_mj_names(p, p.name_bodyadr, p.nbody, mjtObj.mjOBJ_BODY)
 *         self.joint_names, self._joint_name2id, self._joint_id2name = self._extract_mj_names(p, p.name_jntadr, p.njnt, mjtObj.mjOBJ_JOINT)             # <<<<<<<<<<<<<<
 *         self.geom_names, self._geom_name2id, self._geom_id2name = self._extract_mj_names(p, p.name_geomadr, p.ngeom, mjtObj.mjOBJ_GEOM)
 *         self.site_names, self._site_name2id, self._site_id2name = self._extract_mj_names(p, p.name_siteadr, p.nsite, mjtObj.mjOBJ_SITE)
 */
  __pyx_t_1 = __pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(__pyx_v_self, __pyx_v_p, __pyx_v_p->name_jntadr, __pyx_v_p->njnt, mjOBJ_JOINT); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1091, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(__pyx_t_1 != Py_None)) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(3, 1091, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); 
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(3, 1091, __pyx_L1_error)
  }
  if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(3, 1091, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(3, 1091, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(3, 1091, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->joint_names);
  __Pyx_DECREF(__pyx_v_self->joint_names);
  __pyx_v_self->joint_names = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_joint_name2id);
  __Pyx_DECREF(__pyx_v_self->_joint_name2id);
  __pyx_v_self->_joint_name2id = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_joint_id2name);
  __Pyx_DECREF(__pyx_v_self->_joint_id2name);
  __pyx_v_self->_joint_id2name = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1092
 *         self.body_names, self._body_name2id, self._body_id2name = self._extract_mj_names(p, p.name_bodyadr, p.nbody, mjtObj.mjOBJ_BODY)
 *         self.joint_names, self._joint_name2id, self._joint_id2name = self._extract_mj_names(p, p.name_jntadr, p.njnt, mjtObj.mjOBJ_JOINT)
 *         self.geom_names, self._geom_name2id, self._geom_id2name = self._extract_mj_names(p, p.name_geomadr, p.ngeom, mjtObj.mjOBJ_GEOM)             # <<<<<<<<<<<<<<
 *         self.site_names, self._site_name2id, self._site_id2name = self._extract_mj_names(p, p.name_siteadr, p.nsite, mjtObj.mjOBJ_SITE)
 *         self.light_names, self._light_name2id, self._light_id2name = self._extract_mj_names(p, p.name_lightadr, p.nlight, mjtObj.mjOBJ_LIGHT)
 */
  __pyx_t_1 = __pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(__pyx_v_self, __pyx_v_p, __pyx_v_p->name_geomadr, __pyx_v_p->ngeom, mjOBJ_GEOM); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(__pyx_t_1 != Py_None)) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(3, 1092, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1092, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1092, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1092, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(3, 1092, __pyx_L1_error)
  }
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(3, 1092, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(3, 1092, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(3, 1092, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->geom_names);
  __Pyx_DECREF(__pyx_v_self->geom_names);
  __pyx_v_self->geom_names = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_geom_name2id);
  __Pyx_DECREF(__pyx_v_self->_geom_name2id);
  __pyx_v_self->_geom_name2id = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->_geom_id2name);
  __Pyx_DECREF(__pyx_v_self->_geom_id2name);
  __pyx_v_self->_geom_id2name = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1093
 *         self.joint_names, self._joint_name2id, self._joint_id2name = self._extract_mj_names(p, p.name_jntadr, p.njnt, mjtObj.mjOBJ_JOINT)
 *         self.geom_names, self._geom_name2id, self._geom_id2name = self._extract_mj_names(p, p.name_geomadr, p.ngeom, mjtObj.mjOBJ_GEOM)
 *         self.site_names, self._site_name2id, self._site_id2name = self._extract_mj_names(p, p.name_siteadr, p.nsite, mjtObj.mjOBJ_SITE)             # <<<<<<<<<<<<<<
 *         self.light_names, self._light_name2id, self._light_id2name = self._extract_mj_names(p, p.name_lightadr, p.nlight, mjtObj.mjOBJ_LIGHT)
 *         self.camera_names, self._camera_name2id, self._camera_id2name = self._extract_mj_names(p, p.name_camadr, p.ncam, mjtObj.mjOBJ_CAMERA)
 */
  __pyx_t_1 = __pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(__pyx_v_self, __pyx_v_p, __pyx_v_p->name_siteadr, __pyx_v_p->nsite, mjOBJ_SITE); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(__pyx_t_1 != Py_None)) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(3, 1093, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); 
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(3, 1093, __pyx_L1_error)
  }
  if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(3, 1093, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(3, 1093, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(3, 1093, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->site_names);
  __Pyx_DECREF(__pyx_v_self->site_names);
  __pyx_v_self->site_names = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_site_name2id);
  __Pyx_DECREF(__pyx_v_self->_site_name2id);
  __pyx_v_self->_site_name2id = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_site_id2name);
  __Pyx_DECREF(__pyx_v_self->_site_id2name);
  __pyx_v_self->_site_id2name = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1094
 *         self.geom_names, self._geom_name2id, self._geom_id2name = self._extract_mj_names(p, p.name_geomadr, p.ngeom, mjtObj.mjOBJ_GEOM)
 *         self.site_names, self._site_name2id, self._site_id2name = self._extract_mj_names(p, p.name_siteadr, p.nsite, mjtObj.mjOBJ_SITE)
 *         self.light_names, self._light_name2id, self._light_id2name = self._extract_mj_names(p, p.name_lightadr, p.nlight, mjtObj.mjOBJ_LIGHT)             # <<<<<<<<<<<<<<
 *         self.camera_names, self._camera_name2id, self._camera_id2name = self._extract_mj_names(p, p.name_camadr, p.ncam, mjtObj.mjOBJ_CAMERA)
 *         self.actuator_names, self._actuator_name2id, self._actuator_id2name = self._extract_mj_names(p, p.name_actuatoradr, p.nu, mjtObj.mjOBJ_ACTUATOR)
 */
  __pyx_t_1 = __pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(__pyx_v_self, __pyx_v_p, __pyx_v_p->name_lightadr, __pyx_v_p->nlight, mjOBJ_LIGHT); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(__pyx_t_1 != Py_None)) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(3, 1094, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(3, 1094, __pyx_L1_error)
  }
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(3, 1094, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(3, 1094, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(3, 1094, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->light_names);
  __Pyx_DECREF(__pyx_v_self->light_names);
  __pyx_v_self->light_names = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_light_name2id);
  __Pyx_DECREF(__pyx_v_self->_light_name2id);
  __pyx_v_self->_light_name2id = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->_light_id2name);
  __Pyx_DECREF(__pyx_v_self->_light_id2name);
  __pyx_v_self->_light_id2name = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1095
 *         self.site_names, self._site_name2id, self._site_id2name = self._extract_mj_names(p, p.name_siteadr, p.nsite, mjtObj.mjOBJ_SITE)
 *         self.light_names, self._light_name2id, self._light_id2name = self._extract_mj_names(p, p.name_lightadr, p.nlight, mjtObj.mjOBJ_LIGHT)
 *         self.camera_names, self._camera_name2id, self._camera_id2name = self._extract_mj_names(p, p.name_camadr, p.ncam, mjtObj.mjOBJ_CAMERA)             # <<<<<<<<<<<<<<
 *         self.actuator_names, self._actuator_name2id, self._actuator_id2name = self._extract_mj_names(p, p.name_actuatoradr, p.nu, mjtObj.mjOBJ_ACTUATOR)
 *         self.sensor_names, self._sensor_name2id, self._sensor_id2name = self._extract_mj_names(p, p.name_sensoradr, p.nsensor, mjtObj.mjOBJ_SENSOR)
 */
  __pyx_t_1 = __pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(__pyx_v_self, __pyx_v_p, __pyx_v_p->name_camadr, __pyx_v_p->ncam, mjOBJ_CAMERA); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(__pyx_t_1 != Py_None)) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(3, 1095, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); 
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(3, 1095, __pyx_L1_error)
  }
  if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(3, 1095, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(3, 1095, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(3, 1095, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->camera_names);
  __Pyx_DECREF(__pyx_v_self->camera_names);
  __pyx_v_self->camera_names = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_camera_name2id);
  __Pyx_DECREF(__pyx_v_self->_camera_name2id);
  __pyx_v_self->_camera_name2id = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_camera_id2name);
  __Pyx_DECREF(__pyx_v_self->_camera_id2name);
  __pyx_v_self->_camera_id2name = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1096
 *         self.light_names, self._light_name2id, self._light_id2name = self._extract_mj_names(p, p.name_lightadr, p.nlight, mjtObj.mjOBJ_LIGHT)
 *         self.camera_names, self._camera_name2id, self._camera_id2name = self._extract_mj_names(p, p.name_camadr, p.ncam, mjtObj.mjOBJ_CAMERA)
 *         self.actuator_names, self._actuator_name2id, self._actuator_id2name = self._extract_mj_names(p, p.name_actuatoradr, p.nu, mjtObj.mjOBJ_ACTUATOR)             # <<<<<<<<<<<<<<
 *         self.sensor_names, self._sensor_name2id, self._sensor_id2name = self._extract_mj_names(p, p.name_sensoradr, p.nsensor, mjtObj.mjOBJ_SENSOR)
 *         self.userdata_names = tuple()
 */
  __pyx_t_1 = __pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(__pyx_v_self, __pyx_v_p, __pyx_v_p->name_actuatoradr, __pyx_v_p->nu, mjOBJ_ACTUATOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1096, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(__pyx_t_1 != Py_None)) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(3, 1096, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(3, 1096, __pyx_L1_error)
  }
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(3, 1096, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(3, 1096, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(3, 1096, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->actuator_names);
  __Pyx_DECREF(__pyx_v_self->actuator_names);
  __pyx_v_self->actuator_names = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_actuator_name2id);
  __Pyx_DECREF(__pyx_v_self->_actuator_name2id);
  __pyx_v_self->_actuator_name2id = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->_actuator_id2name);
  __Pyx_DECREF(__pyx_v_self->_actuator_id2name);
  __pyx_v_self->_actuator_id2name = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1097
 *         self.camera_names, self._camera_name2id, self._camera_id2name = self._extract_mj_names(p, p.name_camadr, p.ncam, mjtObj.mjOBJ_CAMERA)
 *         self.actuator_names, self._actuator_name2id, self._actuator_id2name = self._extract_mj_names(p, p.name_actuatoradr, p.nu, mjtObj.mjOBJ_ACTUATOR)
 *         self.sensor_names, self._sensor_name2id, self._sensor_id2name = self._extract_mj_names(p, p.name_sensoradr, p.nsensor, mjtObj.mjOBJ_SENSOR)             # <<<<<<<<<<<<<<
 *         self.userdata_names = tuple()
 *         self._userdata_name2id = dict()
 */
  __pyx_t_1 = __pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names(__pyx_v_self, __pyx_v_p, __pyx_v_p->name_sensoradr, __pyx_v_p->nsensor, mjOBJ_SENSOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(__pyx_t_1 != Py_None)) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(3, 1097, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); 
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1097, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 1097, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1097, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(3, 1097, __pyx_L1_error)
  }
  if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(3, 1097, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(3, 1097, __pyx_L1_error)
  if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(3, 1097, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->sensor_names);
  __Pyx_DECREF(__pyx_v_self->sensor_names);
  __pyx_v_self->sensor_names = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_sensor_name2id);
  __Pyx_DECREF(__pyx_v_self->_sensor_name2id);
  __pyx_v_self->_sensor_name2id = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_sensor_id2name);
  __Pyx_DECREF(__pyx_v_self->_sensor_id2name);
  __pyx_v_self->_sensor_id2name = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1098
 *         self.actuator_names, self._actuator_name2id, self._actuator_id2name = self._extract_mj_names(p, p.name_actuatoradr, p.nu, mjtObj.mjOBJ_ACTUATOR)
 *         self.sensor_names, self._sensor_name2id, self._sensor_id2name = self._extract_mj_names(p, p.name_sensoradr, p.nsensor, mjtObj.mjOBJ_SENSOR)
 *         self.userdata_names = tuple()             # <<<<<<<<<<<<<<
 *         self._userdata_name2id = dict()
 *         self._userdata_id2name = dict()
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1098, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->userdata_names);
  __Pyx_DECREF(__pyx_v_self->userdata_names);
  __pyx_v_self->userdata_names = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1099
 *         self.sensor_names, self._sensor_name2id, self._sensor_id2name = self._extract_mj_names(p, p.name_sensoradr, p.nsensor, mjtObj.mjOBJ_SENSOR)
 *         self.userdata_names = tuple()
 *         self._userdata_name2id = dict()             # <<<<<<<<<<<<<<
 *         self._userdata_id2name = dict()
 * 
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_userdata_name2id);
  __Pyx_DECREF(__pyx_v_self->_userdata_name2id);
  __pyx_v_self->_userdata_name2id = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1100
 *         self.userdata_names = tuple()
 *         self._userdata_name2id = dict()
 *         self._userdata_id2name = dict()             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_userdata_id2name);
  __Pyx_DECREF(__pyx_v_self->_userdata_id2name);
  __pyx_v_self->_userdata_id2name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1102
 *         self._userdata_id2name = dict()
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":1105
 * 
 * 
 *         self._opt = WrapMjOption(&p.opt)             # <<<<<<<<<<<<<<
 *         self._vis = WrapMjVisual(&p.vis)
 *         self._stat = WrapMjStatistic(&p.stat)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjOption((&__pyx_v_p->opt))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_opt);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_opt));
  __pyx_v_self->_opt = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1106
 * 
 *         self._opt = WrapMjOption(&p.opt)
 *         self._vis = WrapMjVisual(&p.vis)             # <<<<<<<<<<<<<<
 *         self._stat = WrapMjStatistic(&p.stat)
 *         self._qpos0 = _wrap_mjtNum_1d(p.qpos0, p.nq)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjVisual((&__pyx_v_p->vis))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_vis);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_vis));
  __pyx_v_self->_vis = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1107
 *         self._opt = WrapMjOption(&p.opt)
 *         self._vis = WrapMjVisual(&p.vis)
 *         self._stat = WrapMjStatistic(&p.stat)             # <<<<<<<<<<<<<<
 *         self._qpos0 = _wrap_mjtNum_1d(p.qpos0, p.nq)
 *         self._qpos_spring = _wrap_mjtNum_1d(p.qpos_spring, p.nq)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjStatistic((&__pyx_v_p->stat))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_stat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_stat));
  __pyx_v_self->_stat = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1108
 *         self._vis = WrapMjVisual(&p.vis)
 *         self._stat = WrapMjStatistic(&p.stat)
 *         self._qpos0 = _wrap_mjtNum_1d(p.qpos0, p.nq)             # <<<<<<<<<<<<<<
 *         self._qpos_spring = _wrap_mjtNum_1d(p.qpos_spring, p.nq)
 *         self._body_parentid = _wrap_int_1d(p.body_parentid, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qpos0, __pyx_v_p->nq)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qpos0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qpos0));
  __pyx_v_self->_qpos0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1109
 *         self._stat = WrapMjStatistic(&p.stat)
 *         self._qpos0 = _wrap_mjtNum_1d(p.qpos0, p.nq)
 *         self._qpos_spring = _wrap_mjtNum_1d(p.qpos_spring, p.nq)             # <<<<<<<<<<<<<<
 *         self._body_parentid = _wrap_int_1d(p.body_parentid, p.nbody)
 *         self._body_rootid = _wrap_int_1d(p.body_rootid, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qpos_spring, __pyx_v_p->nq)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qpos_spring);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qpos_spring));
  __pyx_v_self->_qpos_spring = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1110
 *         self._qpos0 = _wrap_mjtNum_1d(p.qpos0, p.nq)
 *         self._qpos_spring = _wrap_mjtNum_1d(p.qpos_spring, p.nq)
 *         self._body_parentid = _wrap_int_1d(p.body_parentid, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_rootid = _wrap_int_1d(p.body_rootid, p.nbody)
 *         self._body_weldid = _wrap_int_1d(p.body_weldid, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_parentid, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_parentid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_parentid));
  __pyx_v_self->_body_parentid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1111
 *         self._qpos_spring = _wrap_mjtNum_1d(p.qpos_spring, p.nq)
 *         self._body_parentid = _wrap_int_1d(p.body_parentid, p.nbody)
 *         self._body_rootid = _wrap_int_1d(p.body_rootid, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_weldid = _wrap_int_1d(p.body_weldid, p.nbody)
 *         self._body_mocapid = _wrap_int_1d(p.body_mocapid, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_rootid, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_rootid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_rootid));
  __pyx_v_self->_body_rootid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1112
 *         self._body_parentid = _wrap_int_1d(p.body_parentid, p.nbody)
 *         self._body_rootid = _wrap_int_1d(p.body_rootid, p.nbody)
 *         self._body_weldid = _wrap_int_1d(p.body_weldid, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_mocapid = _wrap_int_1d(p.body_mocapid, p.nbody)
 *         self._body_jntnum = _wrap_int_1d(p.body_jntnum, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_weldid, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_weldid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_weldid));
  __pyx_v_self->_body_weldid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1113
 *         self._body_rootid = _wrap_int_1d(p.body_rootid, p.nbody)
 *         self._body_weldid = _wrap_int_1d(p.body_weldid, p.nbody)
 *         self._body_mocapid = _wrap_int_1d(p.body_mocapid, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_jntnum = _wrap_int_1d(p.body_jntnum, p.nbody)
 *         self._body_jntadr = _wrap_int_1d(p.body_jntadr, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_mocapid, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_mocapid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_mocapid));
  __pyx_v_self->_body_mocapid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1114
 *         self._body_weldid = _wrap_int_1d(p.body_weldid, p.nbody)
 *         self._body_mocapid = _wrap_int_1d(p.body_mocapid, p.nbody)
 *         self._body_jntnum = _wrap_int_1d(p.body_jntnum, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_jntadr = _wrap_int_1d(p.body_jntadr, p.nbody)
 *         self._body_dofnum = _wrap_int_1d(p.body_dofnum, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_jntnum, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_jntnum);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_jntnum));
  __pyx_v_self->_body_jntnum = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1115
 *         self._body_mocapid = _wrap_int_1d(p.body_mocapid, p.nbody)
 *         self._body_jntnum = _wrap_int_1d(p.body_jntnum, p.nbody)
 *         self._body_jntadr = _wrap_int_1d(p.body_jntadr, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_dofnum = _wrap_int_1d(p.body_dofnum, p.nbody)
 *         self._body_dofadr = _wrap_int_1d(p.body_dofadr, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_jntadr, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_jntadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_jntadr));
  __pyx_v_self->_body_jntadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1116
 *         self._body_jntnum = _wrap_int_1d(p.body_jntnum, p.nbody)
 *         self._body_jntadr = _wrap_int_1d(p.body_jntadr, p.nbody)
 *         self._body_dofnum = _wrap_int_1d(p.body_dofnum, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_dofadr = _wrap_int_1d(p.body_dofadr, p.nbody)
 *         self._body_geomnum = _wrap_int_1d(p.body_geomnum, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_dofnum, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_dofnum);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_dofnum));
  __pyx_v_self->_body_dofnum = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1117
 *         self._body_jntadr = _wrap_int_1d(p.body_jntadr, p.nbody)
 *         self._body_dofnum = _wrap_int_1d(p.body_dofnum, p.nbody)
 *         self._body_dofadr = _wrap_int_1d(p.body_dofadr, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_geomnum = _wrap_int_1d(p.body_geomnum, p.nbody)
 *         self._body_geomadr = _wrap_int_1d(p.body_geomadr, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_dofadr, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_dofadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_dofadr));
  __pyx_v_self->_body_dofadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1118
 *         self._body_dofnum = _wrap_int_1d(p.body_dofnum, p.nbody)
 *         self._body_dofadr = _wrap_int_1d(p.body_dofadr, p.nbody)
 *         self._body_geomnum = _wrap_int_1d(p.body_geomnum, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_geomadr = _wrap_int_1d(p.body_geomadr, p.nbody)
 *         self._body_pos = _wrap_mjtNum_2d(p.body_pos, p.nbody, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_geomnum, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_geomnum);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_geomnum));
  __pyx_v_self->_body_geomnum = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1119
 *         self._body_dofadr = _wrap_int_1d(p.body_dofadr, p.nbody)
 *         self._body_geomnum = _wrap_int_1d(p.body_geomnum, p.nbody)
 *         self._body_geomadr = _wrap_int_1d(p.body_geomadr, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_pos = _wrap_mjtNum_2d(p.body_pos, p.nbody, 3)
 *         self._body_quat = _wrap_mjtNum_2d(p.body_quat, p.nbody, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->body_geomadr, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_geomadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_geomadr));
  __pyx_v_self->_body_geomadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1120
 *         self._body_geomnum = _wrap_int_1d(p.body_geomnum, p.nbody)
 *         self._body_geomadr = _wrap_int_1d(p.body_geomadr, p.nbody)
 *         self._body_pos = _wrap_mjtNum_2d(p.body_pos, p.nbody, 3)             # <<<<<<<<<<<<<<
 *         self._body_quat = _wrap_mjtNum_2d(p.body_quat, p.nbody, 4)
 *         self._body_ipos = _wrap_mjtNum_2d(p.body_ipos, p.nbody, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->body_pos, __pyx_v_p->nbody, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_pos));
  __pyx_v_self->_body_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1121
 *         self._body_geomadr = _wrap_int_1d(p.body_geomadr, p.nbody)
 *         self._body_pos = _wrap_mjtNum_2d(p.body_pos, p.nbody, 3)
 *         self._body_quat = _wrap_mjtNum_2d(p.body_quat, p.nbody, 4)             # <<<<<<<<<<<<<<
 *         self._body_ipos = _wrap_mjtNum_2d(p.body_ipos, p.nbody, 3)
 *         self._body_iquat = _wrap_mjtNum_2d(p.body_iquat, p.nbody, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->body_quat, __pyx_v_p->nbody, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_quat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_quat));
  __pyx_v_self->_body_quat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1122
 *         self._body_pos = _wrap_mjtNum_2d(p.body_pos, p.nbody, 3)
 *         self._body_quat = _wrap_mjtNum_2d(p.body_quat, p.nbody, 4)
 *         self._body_ipos = _wrap_mjtNum_2d(p.body_ipos, p.nbody, 3)             # <<<<<<<<<<<<<<
 *         self._body_iquat = _wrap_mjtNum_2d(p.body_iquat, p.nbody, 4)
 *         self._body_mass = _wrap_mjtNum_1d(p.body_mass, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->body_ipos, __pyx_v_p->nbody, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_ipos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_ipos));
  __pyx_v_self->_body_ipos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1123
 *         self._body_quat = _wrap_mjtNum_2d(p.body_quat, p.nbody, 4)
 *         self._body_ipos = _wrap_mjtNum_2d(p.body_ipos, p.nbody, 3)
 *         self._body_iquat = _wrap_mjtNum_2d(p.body_iquat, p.nbody, 4)             # <<<<<<<<<<<<<<
 *         self._body_mass = _wrap_mjtNum_1d(p.body_mass, p.nbody)
 *         self._body_subtreemass = _wrap_mjtNum_1d(p.body_subtreemass, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->body_iquat, __pyx_v_p->nbody, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_iquat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_iquat));
  __pyx_v_self->_body_iquat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1124
 *         self._body_ipos = _wrap_mjtNum_2d(p.body_ipos, p.nbody, 3)
 *         self._body_iquat = _wrap_mjtNum_2d(p.body_iquat, p.nbody, 4)
 *         self._body_mass = _wrap_mjtNum_1d(p.body_mass, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_subtreemass = _wrap_mjtNum_1d(p.body_subtreemass, p.nbody)
 *         self._body_inertia = _wrap_mjtNum_2d(p.body_inertia, p.nbody, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->body_mass, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_mass);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_mass));
  __pyx_v_self->_body_mass = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1125
 *         self._body_iquat = _wrap_mjtNum_2d(p.body_iquat, p.nbody, 4)
 *         self._body_mass = _wrap_mjtNum_1d(p.body_mass, p.nbody)
 *         self._body_subtreemass = _wrap_mjtNum_1d(p.body_subtreemass, p.nbody)             # <<<<<<<<<<<<<<
 *         self._body_inertia = _wrap_mjtNum_2d(p.body_inertia, p.nbody, 3)
 *         self._body_invweight0 = _wrap_mjtNum_2d(p.body_invweight0, p.nbody, 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->body_subtreemass, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_subtreemass);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_subtreemass));
  __pyx_v_self->_body_subtreemass = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1126
 *         self._body_mass = _wrap_mjtNum_1d(p.body_mass, p.nbody)
 *         self._body_subtreemass = _wrap_mjtNum_1d(p.body_subtreemass, p.nbody)
 *         self._body_inertia = _wrap_mjtNum_2d(p.body_inertia, p.nbody, 3)             # <<<<<<<<<<<<<<
 *         self._body_invweight0 = _wrap_mjtNum_2d(p.body_invweight0, p.nbody, 2)
 *         self._body_user = _wrap_mjtNum_2d(p.body_user, p.nbody, p.nuser_body)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->body_inertia, __pyx_v_p->nbody, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_inertia);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_inertia));
  __pyx_v_self->_body_inertia = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1127
 *         self._body_subtreemass = _wrap_mjtNum_1d(p.body_subtreemass, p.nbody)
 *         self._body_inertia = _wrap_mjtNum_2d(p.body_inertia, p.nbody, 3)
 *         self._body_invweight0 = _wrap_mjtNum_2d(p.body_invweight0, p.nbody, 2)             # <<<<<<<<<<<<<<
 *         self._body_user = _wrap_mjtNum_2d(p.body_user, p.nbody, p.nuser_body)
 *         self._jnt_type = _wrap_int_1d(p.jnt_type, p.njnt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->body_invweight0, __pyx_v_p->nbody, 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_invweight0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_invweight0));
  __pyx_v_self->_body_invweight0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1128
 *         self._body_inertia = _wrap_mjtNum_2d(p.body_inertia, p.nbody, 3)
 *         self._body_invweight0 = _wrap_mjtNum_2d(p.body_invweight0, p.nbody, 2)
 *         self._body_user = _wrap_mjtNum_2d(p.body_user, p.nbody, p.nuser_body)             # <<<<<<<<<<<<<<
 *         self._jnt_type = _wrap_int_1d(p.jnt_type, p.njnt)
 *         self._jnt_qposadr = _wrap_int_1d(p.jnt_qposadr, p.njnt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->body_user, __pyx_v_p->nbody, __pyx_v_p->nuser_body)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_body_user);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_body_user));
  __pyx_v_self->_body_user = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1129
 *         self._body_invweight0 = _wrap_mjtNum_2d(p.body_invweight0, p.nbody, 2)
 *         self._body_user = _wrap_mjtNum_2d(p.body_user, p.nbody, p.nuser_body)
 *         self._jnt_type = _wrap_int_1d(p.jnt_type, p.njnt)             # <<<<<<<<<<<<<<
 *         self._jnt_qposadr = _wrap_int_1d(p.jnt_qposadr, p.njnt)
 *         self._jnt_dofadr = _wrap_int_1d(p.jnt_dofadr, p.njnt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->jnt_type, __pyx_v_p->njnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_type);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_type));
  __pyx_v_self->_jnt_type = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1130
 *         self._body_user = _wrap_mjtNum_2d(p.body_user, p.nbody, p.nuser_body)
 *         self._jnt_type = _wrap_int_1d(p.jnt_type, p.njnt)
 *         self._jnt_qposadr = _wrap_int_1d(p.jnt_qposadr, p.njnt)             # <<<<<<<<<<<<<<
 *         self._jnt_dofadr = _wrap_int_1d(p.jnt_dofadr, p.njnt)
 *         self._jnt_bodyid = _wrap_int_1d(p.jnt_bodyid, p.njnt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->jnt_qposadr, __pyx_v_p->njnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_qposadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_qposadr));
  __pyx_v_self->_jnt_qposadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1131
 *         self._jnt_type = _wrap_int_1d(p.jnt_type, p.njnt)
 *         self._jnt_qposadr = _wrap_int_1d(p.jnt_qposadr, p.njnt)
 *         self._jnt_dofadr = _wrap_int_1d(p.jnt_dofadr, p.njnt)             # <<<<<<<<<<<<<<
 *         self._jnt_bodyid = _wrap_int_1d(p.jnt_bodyid, p.njnt)
 *         self._jnt_limited = _wrap_mjtByte_1d(p.jnt_limited, p.njnt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->jnt_dofadr, __pyx_v_p->njnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_dofadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_dofadr));
  __pyx_v_self->_jnt_dofadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1132
 *         self._jnt_qposadr = _wrap_int_1d(p.jnt_qposadr, p.njnt)
 *         self._jnt_dofadr = _wrap_int_1d(p.jnt_dofadr, p.njnt)
 *         self._jnt_bodyid = _wrap_int_1d(p.jnt_bodyid, p.njnt)             # <<<<<<<<<<<<<<
 *         self._jnt_limited = _wrap_mjtByte_1d(p.jnt_limited, p.njnt)
 *         self._jnt_solref = _wrap_mjtNum_2d(p.jnt_solref, p.njnt, mjNREF)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->jnt_bodyid, __pyx_v_p->njnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_bodyid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_bodyid));
  __pyx_v_self->_jnt_bodyid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1133
 *         self._jnt_dofadr = _wrap_int_1d(p.jnt_dofadr, p.njnt)
 *         self._jnt_bodyid = _wrap_int_1d(p.jnt_bodyid, p.njnt)
 *         self._jnt_limited = _wrap_mjtByte_1d(p.jnt_limited, p.njnt)             # <<<<<<<<<<<<<<
 *         self._jnt_solref = _wrap_mjtNum_2d(p.jnt_solref, p.njnt, mjNREF)
 *         self._jnt_solimp = _wrap_mjtNum_2d(p.jnt_solimp, p.njnt, mjNIMP)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->jnt_limited, __pyx_v_p->njnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_limited);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_limited));
  __pyx_v_self->_jnt_limited = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1134
 *         self._jnt_bodyid = _wrap_int_1d(p.jnt_bodyid, p.njnt)
 *         self._jnt_limited = _wrap_mjtByte_1d(p.jnt_limited, p.njnt)
 *         self._jnt_solref = _wrap_mjtNum_2d(p.jnt_solref, p.njnt, mjNREF)             # <<<<<<<<<<<<<<
 *         self._jnt_solimp = _wrap_mjtNum_2d(p.jnt_solimp, p.njnt, mjNIMP)
 *         self._jnt_pos = _wrap_mjtNum_2d(p.jnt_pos, p.njnt, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->jnt_solref, __pyx_v_p->njnt, mjNREF)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_solref);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_solref));
  __pyx_v_self->_jnt_solref = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1135
 *         self._jnt_limited = _wrap_mjtByte_1d(p.jnt_limited, p.njnt)
 *         self._jnt_solref = _wrap_mjtNum_2d(p.jnt_solref, p.njnt, mjNREF)
 *         self._jnt_solimp = _wrap_mjtNum_2d(p.jnt_solimp, p.njnt, mjNIMP)             # <<<<<<<<<<<<<<
 *         self._jnt_pos = _wrap_mjtNum_2d(p.jnt_pos, p.njnt, 3)
 *         self._jnt_axis = _wrap_mjtNum_2d(p.jnt_axis, p.njnt, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->jnt_solimp, __pyx_v_p->njnt, mjNIMP)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_solimp);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_solimp));
  __pyx_v_self->_jnt_solimp = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1136
 *         self._jnt_solref = _wrap_mjtNum_2d(p.jnt_solref, p.njnt, mjNREF)
 *         self._jnt_solimp = _wrap_mjtNum_2d(p.jnt_solimp, p.njnt, mjNIMP)
 *         self._jnt_pos = _wrap_mjtNum_2d(p.jnt_pos, p.njnt, 3)             # <<<<<<<<<<<<<<
 *         self._jnt_axis = _wrap_mjtNum_2d(p.jnt_axis, p.njnt, 3)
 *         self._jnt_stiffness = _wrap_mjtNum_1d(p.jnt_stiffness, p.njnt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->jnt_pos, __pyx_v_p->njnt, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_pos));
  __pyx_v_self->_jnt_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1137
 *         self._jnt_solimp = _wrap_mjtNum_2d(p.jnt_solimp, p.njnt, mjNIMP)
 *         self._jnt_pos = _wrap_mjtNum_2d(p.jnt_pos, p.njnt, 3)
 *         self._jnt_axis = _wrap_mjtNum_2d(p.jnt_axis, p.njnt, 3)             # <<<<<<<<<<<<<<
 *         self._jnt_stiffness = _wrap_mjtNum_1d(p.jnt_stiffness, p.njnt)
 *         self._jnt_range = _wrap_mjtNum_2d(p.jnt_range, p.njnt, 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->jnt_axis, __pyx_v_p->njnt, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_axis);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_axis));
  __pyx_v_self->_jnt_axis = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1138
 *         self._jnt_pos = _wrap_mjtNum_2d(p.jnt_pos, p.njnt, 3)
 *         self._jnt_axis = _wrap_mjtNum_2d(p.jnt_axis, p.njnt, 3)
 *         self._jnt_stiffness = _wrap_mjtNum_1d(p.jnt_stiffness, p.njnt)             # <<<<<<<<<<<<<<
 *         self._jnt_range = _wrap_mjtNum_2d(p.jnt_range, p.njnt, 2)
 *         self._jnt_margin = _wrap_mjtNum_1d(p.jnt_margin, p.njnt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->jnt_stiffness, __pyx_v_p->njnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_stiffness);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_stiffness));
  __pyx_v_self->_jnt_stiffness = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1139
 *         self._jnt_axis = _wrap_mjtNum_2d(p.jnt_axis, p.njnt, 3)
 *         self._jnt_stiffness = _wrap_mjtNum_1d(p.jnt_stiffness, p.njnt)
 *         self._jnt_range = _wrap_mjtNum_2d(p.jnt_range, p.njnt, 2)             # <<<<<<<<<<<<<<
 *         self._jnt_margin = _wrap_mjtNum_1d(p.jnt_margin, p.njnt)
 *         self._jnt_user = _wrap_mjtNum_2d(p.jnt_user, p.njnt, p.nuser_jnt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->jnt_range, __pyx_v_p->njnt, 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_range);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_range));
  __pyx_v_self->_jnt_range = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1140
 *         self._jnt_stiffness = _wrap_mjtNum_1d(p.jnt_stiffness, p.njnt)
 *         self._jnt_range = _wrap_mjtNum_2d(p.jnt_range, p.njnt, 2)
 *         self._jnt_margin = _wrap_mjtNum_1d(p.jnt_margin, p.njnt)             # <<<<<<<<<<<<<<
 *         self._jnt_user = _wrap_mjtNum_2d(p.jnt_user, p.njnt, p.nuser_jnt)
 *         self._dof_bodyid = _wrap_int_1d(p.dof_bodyid, p.nv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->jnt_margin, __pyx_v_p->njnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_margin);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_margin));
  __pyx_v_self->_jnt_margin = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1141
 *         self._jnt_range = _wrap_mjtNum_2d(p.jnt_range, p.njnt, 2)
 *         self._jnt_margin = _wrap_mjtNum_1d(p.jnt_margin, p.njnt)
 *         self._jnt_user = _wrap_mjtNum_2d(p.jnt_user, p.njnt, p.nuser_jnt)             # <<<<<<<<<<<<<<
 *         self._dof_bodyid = _wrap_int_1d(p.dof_bodyid, p.nv)
 *         self._dof_jntid = _wrap_int_1d(p.dof_jntid, p.nv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->jnt_user, __pyx_v_p->njnt, __pyx_v_p->nuser_jnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_jnt_user);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_jnt_user));
  __pyx_v_self->_jnt_user = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1142
 *         self._jnt_margin = _wrap_mjtNum_1d(p.jnt_margin, p.njnt)
 *         self._jnt_user = _wrap_mjtNum_2d(p.jnt_user, p.njnt, p.nuser_jnt)
 *         self._dof_bodyid = _wrap_int_1d(p.dof_bodyid, p.nv)             # <<<<<<<<<<<<<<
 *         self._dof_jntid = _wrap_int_1d(p.dof_jntid, p.nv)
 *         self._dof_parentid = _wrap_int_1d(p.dof_parentid, p.nv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->dof_bodyid, __pyx_v_p->nv)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_bodyid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_bodyid));
  __pyx_v_self->_dof_bodyid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1143
 *         self._jnt_user = _wrap_mjtNum_2d(p.jnt_user, p.njnt, p.nuser_jnt)
 *         self._dof_bodyid = _wrap_int_1d(p.dof_bodyid, p.nv)
 *         self._dof_jntid = _wrap_int_1d(p.dof_jntid, p.nv)             # <<<<<<<<<<<<<<
 *         self._dof_parentid = _wrap_int_1d(p.dof_parentid, p.nv)
 *         self._dof_Madr = _wrap_int_1d(p.dof_Madr, p.nv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->dof_jntid, __pyx_v_p->nv)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_jntid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_jntid));
  __pyx_v_self->_dof_jntid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1144
 *         self._dof_bodyid = _wrap_int_1d(p.dof_bodyid, p.nv)
 *         self._dof_jntid = _wrap_int_1d(p.dof_jntid, p.nv)
 *         self._dof_parentid = _wrap_int_1d(p.dof_parentid, p.nv)             # <<<<<<<<<<<<<<
 *         self._dof_Madr = _wrap_int_1d(p.dof_Madr, p.nv)
 *         self._dof_solref = _wrap_mjtNum_2d(p.dof_solref, p.nv, mjNREF)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->dof_parentid, __pyx_v_p->nv)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_parentid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_parentid));
  __pyx_v_self->_dof_parentid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1145
 *         self._dof_jntid = _wrap_int_1d(p.dof_jntid, p.nv)
 *         self._dof_parentid = _wrap_int_1d(p.dof_parentid, p.nv)
 *         self._dof_Madr = _wrap_int_1d(p.dof_Madr, p.nv)             # <<<<<<<<<<<<<<
 *         self._dof_solref = _wrap_mjtNum_2d(p.dof_solref, p.nv, mjNREF)
 *         self._dof_solimp = _wrap_mjtNum_2d(p.dof_solimp, p.nv, mjNIMP)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->dof_Madr, __pyx_v_p->nv)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_Madr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_Madr));
  __pyx_v_self->_dof_Madr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1146
 *         self._dof_parentid = _wrap_int_1d(p.dof_parentid, p.nv)
 *         self._dof_Madr = _wrap_int_1d(p.dof_Madr, p.nv)
 *         self._dof_solref = _wrap_mjtNum_2d(p.dof_solref, p.nv, mjNREF)             # <<<<<<<<<<<<<<
 *         self._dof_solimp = _wrap_mjtNum_2d(p.dof_solimp, p.nv, mjNIMP)
 *         self._dof_frictionloss = _wrap_mjtNum_1d(p.dof_frictionloss, p.nv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->dof_solref, __pyx_v_p->nv, mjNREF)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_solref);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_solref));
  __pyx_v_self->_dof_solref = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1147
 *         self._dof_Madr = _wrap_int_1d(p.dof_Madr, p.nv)
 *         self._dof_solref = _wrap_mjtNum_2d(p.dof_solref, p.nv, mjNREF)
 *         self._dof_solimp = _wrap_mjtNum_2d(p.dof_solimp, p.nv, mjNIMP)             # <<<<<<<<<<<<<<
 *         self._dof_frictionloss = _wrap_mjtNum_1d(p.dof_frictionloss, p.nv)
 *         self._dof_armature = _wrap_mjtNum_1d(p.dof_armature, p.nv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->dof_solimp, __pyx_v_p->nv, mjNIMP)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_solimp);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_solimp));
  __pyx_v_self->_dof_solimp = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1148
 *         self._dof_solref = _wrap_mjtNum_2d(p.dof_solref, p.nv, mjNREF)
 *         self._dof_solimp = _wrap_mjtNum_2d(p.dof_solimp, p.nv, mjNIMP)
 *         self._dof_frictionloss = _wrap_mjtNum_1d(p.dof_frictionloss, p.nv)             # <<<<<<<<<<<<<<
 *         self._dof_armature = _wrap_mjtNum_1d(p.dof_armature, p.nv)
 *         self._dof_damping = _wrap_mjtNum_1d(p.dof_damping, p.nv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->dof_frictionloss, __pyx_v_p->nv)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_frictionloss);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_frictionloss));
  __pyx_v_self->_dof_frictionloss = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1149
 *         self._dof_solimp = _wrap_mjtNum_2d(p.dof_solimp, p.nv, mjNIMP)
 *         self._dof_frictionloss = _wrap_mjtNum_1d(p.dof_frictionloss, p.nv)
 *         self._dof_armature = _wrap_mjtNum_1d(p.dof_armature, p.nv)             # <<<<<<<<<<<<<<
 *         self._dof_damping = _wrap_mjtNum_1d(p.dof_damping, p.nv)
 *         self._dof_invweight0 = _wrap_mjtNum_1d(p.dof_invweight0, p.nv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->dof_armature, __pyx_v_p->nv)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_armature);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_armature));
  __pyx_v_self->_dof_armature = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1150
 *         self._dof_frictionloss = _wrap_mjtNum_1d(p.dof_frictionloss, p.nv)
 *         self._dof_armature = _wrap_mjtNum_1d(p.dof_armature, p.nv)
 *         self._dof_damping = _wrap_mjtNum_1d(p.dof_damping, p.nv)             # <<<<<<<<<<<<<<
 *         self._dof_invweight0 = _wrap_mjtNum_1d(p.dof_invweight0, p.nv)
 *         self._geom_type = _wrap_int_1d(p.geom_type, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->dof_damping, __pyx_v_p->nv)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_damping);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_damping));
  __pyx_v_self->_dof_damping = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1151
 *         self._dof_armature = _wrap_mjtNum_1d(p.dof_armature, p.nv)
 *         self._dof_damping = _wrap_mjtNum_1d(p.dof_damping, p.nv)
 *         self._dof_invweight0 = _wrap_mjtNum_1d(p.dof_invweight0, p.nv)             # <<<<<<<<<<<<<<
 *         self._geom_type = _wrap_int_1d(p.geom_type, p.ngeom)
 *         self._geom_contype = _wrap_int_1d(p.geom_contype, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->dof_invweight0, __pyx_v_p->nv)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dof_invweight0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dof_invweight0));
  __pyx_v_self->_dof_invweight0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1152
 *         self._dof_damping = _wrap_mjtNum_1d(p.dof_damping, p.nv)
 *         self._dof_invweight0 = _wrap_mjtNum_1d(p.dof_invweight0, p.nv)
 *         self._geom_type = _wrap_int_1d(p.geom_type, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_contype = _wrap_int_1d(p.geom_contype, p.ngeom)
 *         self._geom_conaffinity = _wrap_int_1d(p.geom_conaffinity, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->geom_type, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_type);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_type));
  __pyx_v_self->_geom_type = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1153
 *         self._dof_invweight0 = _wrap_mjtNum_1d(p.dof_invweight0, p.nv)
 *         self._geom_type = _wrap_int_1d(p.geom_type, p.ngeom)
 *         self._geom_contype = _wrap_int_1d(p.geom_contype, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_conaffinity = _wrap_int_1d(p.geom_conaffinity, p.ngeom)
 *         self._geom_condim = _wrap_int_1d(p.geom_condim, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->geom_contype, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_contype);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_contype));
  __pyx_v_self->_geom_contype = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1154
 *         self._geom_type = _wrap_int_1d(p.geom_type, p.ngeom)
 *         self._geom_contype = _wrap_int_1d(p.geom_contype, p.ngeom)
 *         self._geom_conaffinity = _wrap_int_1d(p.geom_conaffinity, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_condim = _wrap_int_1d(p.geom_condim, p.ngeom)
 *         self._geom_bodyid = _wrap_int_1d(p.geom_bodyid, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->geom_conaffinity, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_conaffinity);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_conaffinity));
  __pyx_v_self->_geom_conaffinity = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1155
 *         self._geom_contype = _wrap_int_1d(p.geom_contype, p.ngeom)
 *         self._geom_conaffinity = _wrap_int_1d(p.geom_conaffinity, p.ngeom)
 *         self._geom_condim = _wrap_int_1d(p.geom_condim, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_bodyid = _wrap_int_1d(p.geom_bodyid, p.ngeom)
 *         self._geom_dataid = _wrap_int_1d(p.geom_dataid, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->geom_condim, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_condim);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_condim));
  __pyx_v_self->_geom_condim = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1156
 *         self._geom_conaffinity = _wrap_int_1d(p.geom_conaffinity, p.ngeom)
 *         self._geom_condim = _wrap_int_1d(p.geom_condim, p.ngeom)
 *         self._geom_bodyid = _wrap_int_1d(p.geom_bodyid, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_dataid = _wrap_int_1d(p.geom_dataid, p.ngeom)
 *         self._geom_matid = _wrap_int_1d(p.geom_matid, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->geom_bodyid, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_bodyid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_bodyid));
  __pyx_v_self->_geom_bodyid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1157
 *         self._geom_condim = _wrap_int_1d(p.geom_condim, p.ngeom)
 *         self._geom_bodyid = _wrap_int_1d(p.geom_bodyid, p.ngeom)
 *         self._geom_dataid = _wrap_int_1d(p.geom_dataid, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_matid = _wrap_int_1d(p.geom_matid, p.ngeom)
 *         self._geom_group = _wrap_int_1d(p.geom_group, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->geom_dataid, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_dataid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_dataid));
  __pyx_v_self->_geom_dataid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1158
 *         self._geom_bodyid = _wrap_int_1d(p.geom_bodyid, p.ngeom)
 *         self._geom_dataid = _wrap_int_1d(p.geom_dataid, p.ngeom)
 *         self._geom_matid = _wrap_int_1d(p.geom_matid, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_group = _wrap_int_1d(p.geom_group, p.ngeom)
 *         self._geom_solmix = _wrap_mjtNum_1d(p.geom_solmix, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->geom_matid, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_matid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_matid));
  __pyx_v_self->_geom_matid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1159
 *         self._geom_dataid = _wrap_int_1d(p.geom_dataid, p.ngeom)
 *         self._geom_matid = _wrap_int_1d(p.geom_matid, p.ngeom)
 *         self._geom_group = _wrap_int_1d(p.geom_group, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_solmix = _wrap_mjtNum_1d(p.geom_solmix, p.ngeom)
 *         self._geom_solref = _wrap_mjtNum_2d(p.geom_solref, p.ngeom, mjNREF)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->geom_group, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_group);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_group));
  __pyx_v_self->_geom_group = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1160
 *         self._geom_matid = _wrap_int_1d(p.geom_matid, p.ngeom)
 *         self._geom_group = _wrap_int_1d(p.geom_group, p.ngeom)
 *         self._geom_solmix = _wrap_mjtNum_1d(p.geom_solmix, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_solref = _wrap_mjtNum_2d(p.geom_solref, p.ngeom, mjNREF)
 *         self._geom_solimp = _wrap_mjtNum_2d(p.geom_solimp, p.ngeom, mjNIMP)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->geom_solmix, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_solmix);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_solmix));
  __pyx_v_self->_geom_solmix = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1161
 *         self._geom_group = _wrap_int_1d(p.geom_group, p.ngeom)
 *         self._geom_solmix = _wrap_mjtNum_1d(p.geom_solmix, p.ngeom)
 *         self._geom_solref = _wrap_mjtNum_2d(p.geom_solref, p.ngeom, mjNREF)             # <<<<<<<<<<<<<<
 *         self._geom_solimp = _wrap_mjtNum_2d(p.geom_solimp, p.ngeom, mjNIMP)
 *         self._geom_size = _wrap_mjtNum_2d(p.geom_size, p.ngeom, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->geom_solref, __pyx_v_p->ngeom, mjNREF)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_solref);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_solref));
  __pyx_v_self->_geom_solref = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1162
 *         self._geom_solmix = _wrap_mjtNum_1d(p.geom_solmix, p.ngeom)
 *         self._geom_solref = _wrap_mjtNum_2d(p.geom_solref, p.ngeom, mjNREF)
 *         self._geom_solimp = _wrap_mjtNum_2d(p.geom_solimp, p.ngeom, mjNIMP)             # <<<<<<<<<<<<<<
 *         self._geom_size = _wrap_mjtNum_2d(p.geom_size, p.ngeom, 3)
 *         self._geom_rbound = _wrap_mjtNum_1d(p.geom_rbound, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->geom_solimp, __pyx_v_p->ngeom, mjNIMP)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_solimp);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_solimp));
  __pyx_v_self->_geom_solimp = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1163
 *         self._geom_solref = _wrap_mjtNum_2d(p.geom_solref, p.ngeom, mjNREF)
 *         self._geom_solimp = _wrap_mjtNum_2d(p.geom_solimp, p.ngeom, mjNIMP)
 *         self._geom_size = _wrap_mjtNum_2d(p.geom_size, p.ngeom, 3)             # <<<<<<<<<<<<<<
 *         self._geom_rbound = _wrap_mjtNum_1d(p.geom_rbound, p.ngeom)
 *         self._geom_pos = _wrap_mjtNum_2d(p.geom_pos, p.ngeom, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->geom_size, __pyx_v_p->ngeom, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_size);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_size));
  __pyx_v_self->_geom_size = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1164
 *         self._geom_solimp = _wrap_mjtNum_2d(p.geom_solimp, p.ngeom, mjNIMP)
 *         self._geom_size = _wrap_mjtNum_2d(p.geom_size, p.ngeom, 3)
 *         self._geom_rbound = _wrap_mjtNum_1d(p.geom_rbound, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_pos = _wrap_mjtNum_2d(p.geom_pos, p.ngeom, 3)
 *         self._geom_quat = _wrap_mjtNum_2d(p.geom_quat, p.ngeom, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->geom_rbound, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_rbound);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_rbound));
  __pyx_v_self->_geom_rbound = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1165
 *         self._geom_size = _wrap_mjtNum_2d(p.geom_size, p.ngeom, 3)
 *         self._geom_rbound = _wrap_mjtNum_1d(p.geom_rbound, p.ngeom)
 *         self._geom_pos = _wrap_mjtNum_2d(p.geom_pos, p.ngeom, 3)             # <<<<<<<<<<<<<<
 *         self._geom_quat = _wrap_mjtNum_2d(p.geom_quat, p.ngeom, 4)
 *         self._geom_friction = _wrap_mjtNum_2d(p.geom_friction, p.ngeom, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->geom_pos, __pyx_v_p->ngeom, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_pos));
  __pyx_v_self->_geom_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1166
 *         self._geom_rbound = _wrap_mjtNum_1d(p.geom_rbound, p.ngeom)
 *         self._geom_pos = _wrap_mjtNum_2d(p.geom_pos, p.ngeom, 3)
 *         self._geom_quat = _wrap_mjtNum_2d(p.geom_quat, p.ngeom, 4)             # <<<<<<<<<<<<<<
 *         self._geom_friction = _wrap_mjtNum_2d(p.geom_friction, p.ngeom, 3)
 *         self._geom_margin = _wrap_mjtNum_1d(p.geom_margin, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->geom_quat, __pyx_v_p->ngeom, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_quat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_quat));
  __pyx_v_self->_geom_quat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1167
 *         self._geom_pos = _wrap_mjtNum_2d(p.geom_pos, p.ngeom, 3)
 *         self._geom_quat = _wrap_mjtNum_2d(p.geom_quat, p.ngeom, 4)
 *         self._geom_friction = _wrap_mjtNum_2d(p.geom_friction, p.ngeom, 3)             # <<<<<<<<<<<<<<
 *         self._geom_margin = _wrap_mjtNum_1d(p.geom_margin, p.ngeom)
 *         self._geom_gap = _wrap_mjtNum_1d(p.geom_gap, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->geom_friction, __pyx_v_p->ngeom, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_friction);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_friction));
  __pyx_v_self->_geom_friction = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1168
 *         self._geom_quat = _wrap_mjtNum_2d(p.geom_quat, p.ngeom, 4)
 *         self._geom_friction = _wrap_mjtNum_2d(p.geom_friction, p.ngeom, 3)
 *         self._geom_margin = _wrap_mjtNum_1d(p.geom_margin, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_gap = _wrap_mjtNum_1d(p.geom_gap, p.ngeom)
 *         self._geom_user = _wrap_mjtNum_2d(p.geom_user, p.ngeom, p.nuser_geom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->geom_margin, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_margin);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_margin));
  __pyx_v_self->_geom_margin = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1169
 *         self._geom_friction = _wrap_mjtNum_2d(p.geom_friction, p.ngeom, 3)
 *         self._geom_margin = _wrap_mjtNum_1d(p.geom_margin, p.ngeom)
 *         self._geom_gap = _wrap_mjtNum_1d(p.geom_gap, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._geom_user = _wrap_mjtNum_2d(p.geom_user, p.ngeom, p.nuser_geom)
 *         self._geom_rgba = _wrap_float_2d(p.geom_rgba, p.ngeom, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->geom_gap, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_gap);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_gap));
  __pyx_v_self->_geom_gap = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1170
 *         self._geom_margin = _wrap_mjtNum_1d(p.geom_margin, p.ngeom)
 *         self._geom_gap = _wrap_mjtNum_1d(p.geom_gap, p.ngeom)
 *         self._geom_user = _wrap_mjtNum_2d(p.geom_user, p.ngeom, p.nuser_geom)             # <<<<<<<<<<<<<<
 *         self._geom_rgba = _wrap_float_2d(p.geom_rgba, p.ngeom, 4)
 *         self._site_type = _wrap_int_1d(p.site_type, p.nsite)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->geom_user, __pyx_v_p->ngeom, __pyx_v_p->nuser_geom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_user);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_user));
  __pyx_v_self->_geom_user = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1171
 *         self._geom_gap = _wrap_mjtNum_1d(p.geom_gap, p.ngeom)
 *         self._geom_user = _wrap_mjtNum_2d(p.geom_user, p.ngeom, p.nuser_geom)
 *         self._geom_rgba = _wrap_float_2d(p.geom_rgba, p.ngeom, 4)             # <<<<<<<<<<<<<<
 *         self._site_type = _wrap_int_1d(p.site_type, p.nsite)
 *         self._site_bodyid = _wrap_int_1d(p.site_bodyid, p.nsite)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->geom_rgba, __pyx_v_p->ngeom, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_rgba);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_rgba));
  __pyx_v_self->_geom_rgba = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1172
 *         self._geom_user = _wrap_mjtNum_2d(p.geom_user, p.ngeom, p.nuser_geom)
 *         self._geom_rgba = _wrap_float_2d(p.geom_rgba, p.ngeom, 4)
 *         self._site_type = _wrap_int_1d(p.site_type, p.nsite)             # <<<<<<<<<<<<<<
 *         self._site_bodyid = _wrap_int_1d(p.site_bodyid, p.nsite)
 *         self._site_matid = _wrap_int_1d(p.site_matid, p.nsite)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->site_type, __pyx_v_p->nsite)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_type);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_type));
  __pyx_v_self->_site_type = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1173
 *         self._geom_rgba = _wrap_float_2d(p.geom_rgba, p.ngeom, 4)
 *         self._site_type = _wrap_int_1d(p.site_type, p.nsite)
 *         self._site_bodyid = _wrap_int_1d(p.site_bodyid, p.nsite)             # <<<<<<<<<<<<<<
 *         self._site_matid = _wrap_int_1d(p.site_matid, p.nsite)
 *         self._site_group = _wrap_int_1d(p.site_group, p.nsite)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->site_bodyid, __pyx_v_p->nsite)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_bodyid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_bodyid));
  __pyx_v_self->_site_bodyid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1174
 *         self._site_type = _wrap_int_1d(p.site_type, p.nsite)
 *         self._site_bodyid = _wrap_int_1d(p.site_bodyid, p.nsite)
 *         self._site_matid = _wrap_int_1d(p.site_matid, p.nsite)             # <<<<<<<<<<<<<<
 *         self._site_group = _wrap_int_1d(p.site_group, p.nsite)
 *         self._site_size = _wrap_mjtNum_2d(p.site_size, p.nsite, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->site_matid, __pyx_v_p->nsite)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_matid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_matid));
  __pyx_v_self->_site_matid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1175
 *         self._site_bodyid = _wrap_int_1d(p.site_bodyid, p.nsite)
 *         self._site_matid = _wrap_int_1d(p.site_matid, p.nsite)
 *         self._site_group = _wrap_int_1d(p.site_group, p.nsite)             # <<<<<<<<<<<<<<
 *         self._site_size = _wrap_mjtNum_2d(p.site_size, p.nsite, 3)
 *         self._site_pos = _wrap_mjtNum_2d(p.site_pos, p.nsite, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->site_group, __pyx_v_p->nsite)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_group);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_group));
  __pyx_v_self->_site_group = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1176
 *         self._site_matid = _wrap_int_1d(p.site_matid, p.nsite)
 *         self._site_group = _wrap_int_1d(p.site_group, p.nsite)
 *         self._site_size = _wrap_mjtNum_2d(p.site_size, p.nsite, 3)             # <<<<<<<<<<<<<<
 *         self._site_pos = _wrap_mjtNum_2d(p.site_pos, p.nsite, 3)
 *         self._site_quat = _wrap_mjtNum_2d(p.site_quat, p.nsite, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->site_size, __pyx_v_p->nsite, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_size);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_size));
  __pyx_v_self->_site_size = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1177
 *         self._site_group = _wrap_int_1d(p.site_group, p.nsite)
 *         self._site_size = _wrap_mjtNum_2d(p.site_size, p.nsite, 3)
 *         self._site_pos = _wrap_mjtNum_2d(p.site_pos, p.nsite, 3)             # <<<<<<<<<<<<<<
 *         self._site_quat = _wrap_mjtNum_2d(p.site_quat, p.nsite, 4)
 *         self._site_user = _wrap_mjtNum_2d(p.site_user, p.nsite, p.nuser_site)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->site_pos, __pyx_v_p->nsite, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_pos));
  __pyx_v_self->_site_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1178
 *         self._site_size = _wrap_mjtNum_2d(p.site_size, p.nsite, 3)
 *         self._site_pos = _wrap_mjtNum_2d(p.site_pos, p.nsite, 3)
 *         self._site_quat = _wrap_mjtNum_2d(p.site_quat, p.nsite, 4)             # <<<<<<<<<<<<<<
 *         self._site_user = _wrap_mjtNum_2d(p.site_user, p.nsite, p.nuser_site)
 *         self._site_rgba = _wrap_float_2d(p.site_rgba, p.nsite, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->site_quat, __pyx_v_p->nsite, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_quat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_quat));
  __pyx_v_self->_site_quat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1179
 *         self._site_pos = _wrap_mjtNum_2d(p.site_pos, p.nsite, 3)
 *         self._site_quat = _wrap_mjtNum_2d(p.site_quat, p.nsite, 4)
 *         self._site_user = _wrap_mjtNum_2d(p.site_user, p.nsite, p.nuser_site)             # <<<<<<<<<<<<<<
 *         self._site_rgba = _wrap_float_2d(p.site_rgba, p.nsite, 4)
 *         self._cam_mode = _wrap_int_1d(p.cam_mode, p.ncam)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->site_user, __pyx_v_p->nsite, __pyx_v_p->nuser_site)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_user);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_user));
  __pyx_v_self->_site_user = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1180
 *         self._site_quat = _wrap_mjtNum_2d(p.site_quat, p.nsite, 4)
 *         self._site_user = _wrap_mjtNum_2d(p.site_user, p.nsite, p.nuser_site)
 *         self._site_rgba = _wrap_float_2d(p.site_rgba, p.nsite, 4)             # <<<<<<<<<<<<<<
 *         self._cam_mode = _wrap_int_1d(p.cam_mode, p.ncam)
 *         self._cam_bodyid = _wrap_int_1d(p.cam_bodyid, p.ncam)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->site_rgba, __pyx_v_p->nsite, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_rgba);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_rgba));
  __pyx_v_self->_site_rgba = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1181
 *         self._site_user = _wrap_mjtNum_2d(p.site_user, p.nsite, p.nuser_site)
 *         self._site_rgba = _wrap_float_2d(p.site_rgba, p.nsite, 4)
 *         self._cam_mode = _wrap_int_1d(p.cam_mode, p.ncam)             # <<<<<<<<<<<<<<
 *         self._cam_bodyid = _wrap_int_1d(p.cam_bodyid, p.ncam)
 *         self._cam_targetbodyid = _wrap_int_1d(p.cam_targetbodyid, p.ncam)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->cam_mode, __pyx_v_p->ncam)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_mode);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_mode));
  __pyx_v_self->_cam_mode = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1182
 *         self._site_rgba = _wrap_float_2d(p.site_rgba, p.nsite, 4)
 *         self._cam_mode = _wrap_int_1d(p.cam_mode, p.ncam)
 *         self._cam_bodyid = _wrap_int_1d(p.cam_bodyid, p.ncam)             # <<<<<<<<<<<<<<
 *         self._cam_targetbodyid = _wrap_int_1d(p.cam_targetbodyid, p.ncam)
 *         self._cam_pos = _wrap_mjtNum_2d(p.cam_pos, p.ncam, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->cam_bodyid, __pyx_v_p->ncam)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_bodyid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_bodyid));
  __pyx_v_self->_cam_bodyid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1183
 *         self._cam_mode = _wrap_int_1d(p.cam_mode, p.ncam)
 *         self._cam_bodyid = _wrap_int_1d(p.cam_bodyid, p.ncam)
 *         self._cam_targetbodyid = _wrap_int_1d(p.cam_targetbodyid, p.ncam)             # <<<<<<<<<<<<<<
 *         self._cam_pos = _wrap_mjtNum_2d(p.cam_pos, p.ncam, 3)
 *         self._cam_quat = _wrap_mjtNum_2d(p.cam_quat, p.ncam, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->cam_targetbodyid, __pyx_v_p->ncam)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_targetbodyid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_targetbodyid));
  __pyx_v_self->_cam_targetbodyid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1184
 *         self._cam_bodyid = _wrap_int_1d(p.cam_bodyid, p.ncam)
 *         self._cam_targetbodyid = _wrap_int_1d(p.cam_targetbodyid, p.ncam)
 *         self._cam_pos = _wrap_mjtNum_2d(p.cam_pos, p.ncam, 3)             # <<<<<<<<<<<<<<
 *         self._cam_quat = _wrap_mjtNum_2d(p.cam_quat, p.ncam, 4)
 *         self._cam_poscom0 = _wrap_mjtNum_2d(p.cam_poscom0, p.ncam, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cam_pos, __pyx_v_p->ncam, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_pos));
  __pyx_v_self->_cam_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1185
 *         self._cam_targetbodyid = _wrap_int_1d(p.cam_targetbodyid, p.ncam)
 *         self._cam_pos = _wrap_mjtNum_2d(p.cam_pos, p.ncam, 3)
 *         self._cam_quat = _wrap_mjtNum_2d(p.cam_quat, p.ncam, 4)             # <<<<<<<<<<<<<<
 *         self._cam_poscom0 = _wrap_mjtNum_2d(p.cam_poscom0, p.ncam, 3)
 *         self._cam_pos0 = _wrap_mjtNum_2d(p.cam_pos0, p.ncam, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cam_quat, __pyx_v_p->ncam, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_quat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_quat));
  __pyx_v_self->_cam_quat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1186
 *         self._cam_pos = _wrap_mjtNum_2d(p.cam_pos, p.ncam, 3)
 *         self._cam_quat = _wrap_mjtNum_2d(p.cam_quat, p.ncam, 4)
 *         self._cam_poscom0 = _wrap_mjtNum_2d(p.cam_poscom0, p.ncam, 3)             # <<<<<<<<<<<<<<
 *         self._cam_pos0 = _wrap_mjtNum_2d(p.cam_pos0, p.ncam, 3)
 *         self._cam_mat0 = _wrap_mjtNum_2d(p.cam_mat0, p.ncam, 9)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cam_poscom0, __pyx_v_p->ncam, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_poscom0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_poscom0));
  __pyx_v_self->_cam_poscom0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1187
 *         self._cam_quat = _wrap_mjtNum_2d(p.cam_quat, p.ncam, 4)
 *         self._cam_poscom0 = _wrap_mjtNum_2d(p.cam_poscom0, p.ncam, 3)
 *         self._cam_pos0 = _wrap_mjtNum_2d(p.cam_pos0, p.ncam, 3)             # <<<<<<<<<<<<<<
 *         self._cam_mat0 = _wrap_mjtNum_2d(p.cam_mat0, p.ncam, 9)
 *         self._cam_fovy = _wrap_mjtNum_1d(p.cam_fovy, p.ncam)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cam_pos0, __pyx_v_p->ncam, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_pos0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_pos0));
  __pyx_v_self->_cam_pos0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1188
 *         self._cam_poscom0 = _wrap_mjtNum_2d(p.cam_poscom0, p.ncam, 3)
 *         self._cam_pos0 = _wrap_mjtNum_2d(p.cam_pos0, p.ncam, 3)
 *         self._cam_mat0 = _wrap_mjtNum_2d(p.cam_mat0, p.ncam, 9)             # <<<<<<<<<<<<<<
 *         self._cam_fovy = _wrap_mjtNum_1d(p.cam_fovy, p.ncam)
 *         self._cam_ipd = _wrap_mjtNum_1d(p.cam_ipd, p.ncam)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cam_mat0, __pyx_v_p->ncam, 9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_mat0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_mat0));
  __pyx_v_self->_cam_mat0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1189
 *         self._cam_pos0 = _wrap_mjtNum_2d(p.cam_pos0, p.ncam, 3)
 *         self._cam_mat0 = _wrap_mjtNum_2d(p.cam_mat0, p.ncam, 9)
 *         self._cam_fovy = _wrap_mjtNum_1d(p.cam_fovy, p.ncam)             # <<<<<<<<<<<<<<
 *         self._cam_ipd = _wrap_mjtNum_1d(p.cam_ipd, p.ncam)
 *         self._cam_user = _wrap_mjtNum_2d(p.cam_user, p.ncam, p.nuser_cam)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->cam_fovy, __pyx_v_p->ncam)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_fovy);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_fovy));
  __pyx_v_self->_cam_fovy = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1190
 *         self._cam_mat0 = _wrap_mjtNum_2d(p.cam_mat0, p.ncam, 9)
 *         self._cam_fovy = _wrap_mjtNum_1d(p.cam_fovy, p.ncam)
 *         self._cam_ipd = _wrap_mjtNum_1d(p.cam_ipd, p.ncam)             # <<<<<<<<<<<<<<
 *         self._cam_user = _wrap_mjtNum_2d(p.cam_user, p.ncam, p.nuser_cam)
 *         self._light_mode = _wrap_int_1d(p.light_mode, p.nlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->cam_ipd, __pyx_v_p->ncam)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_ipd);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_ipd));
  __pyx_v_self->_cam_ipd = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1191
 *         self._cam_fovy = _wrap_mjtNum_1d(p.cam_fovy, p.ncam)
 *         self._cam_ipd = _wrap_mjtNum_1d(p.cam_ipd, p.ncam)
 *         self._cam_user = _wrap_mjtNum_2d(p.cam_user, p.ncam, p.nuser_cam)             # <<<<<<<<<<<<<<
 *         self._light_mode = _wrap_int_1d(p.light_mode, p.nlight)
 *         self._light_bodyid = _wrap_int_1d(p.light_bodyid, p.nlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cam_user, __pyx_v_p->ncam, __pyx_v_p->nuser_cam)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_user);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_user));
  __pyx_v_self->_cam_user = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1192
 *         self._cam_ipd = _wrap_mjtNum_1d(p.cam_ipd, p.ncam)
 *         self._cam_user = _wrap_mjtNum_2d(p.cam_user, p.ncam, p.nuser_cam)
 *         self._light_mode = _wrap_int_1d(p.light_mode, p.nlight)             # <<<<<<<<<<<<<<
 *         self._light_bodyid = _wrap_int_1d(p.light_bodyid, p.nlight)
 *         self._light_targetbodyid = _wrap_int_1d(p.light_targetbodyid, p.nlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->light_mode, __pyx_v_p->nlight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_mode);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_mode));
  __pyx_v_self->_light_mode = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1193
 *         self._cam_user = _wrap_mjtNum_2d(p.cam_user, p.ncam, p.nuser_cam)
 *         self._light_mode = _wrap_int_1d(p.light_mode, p.nlight)
 *         self._light_bodyid = _wrap_int_1d(p.light_bodyid, p.nlight)             # <<<<<<<<<<<<<<
 *         self._light_targetbodyid = _wrap_int_1d(p.light_targetbodyid, p.nlight)
 *         self._light_directional = _wrap_mjtByte_1d(p.light_directional, p.nlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->light_bodyid, __pyx_v_p->nlight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_bodyid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_bodyid));
  __pyx_v_self->_light_bodyid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1194
 *         self._light_mode = _wrap_int_1d(p.light_mode, p.nlight)
 *         self._light_bodyid = _wrap_int_1d(p.light_bodyid, p.nlight)
 *         self._light_targetbodyid = _wrap_int_1d(p.light_targetbodyid, p.nlight)             # <<<<<<<<<<<<<<
 *         self._light_directional = _wrap_mjtByte_1d(p.light_directional, p.nlight)
 *         self._light_castshadow = _wrap_mjtByte_1d(p.light_castshadow, p.nlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->light_targetbodyid, __pyx_v_p->nlight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_targetbodyid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_targetbodyid));
  __pyx_v_self->_light_targetbodyid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1195
 *         self._light_bodyid = _wrap_int_1d(p.light_bodyid, p.nlight)
 *         self._light_targetbodyid = _wrap_int_1d(p.light_targetbodyid, p.nlight)
 *         self._light_directional = _wrap_mjtByte_1d(p.light_directional, p.nlight)             # <<<<<<<<<<<<<<
 *         self._light_castshadow = _wrap_mjtByte_1d(p.light_castshadow, p.nlight)
 *         self._light_active = _wrap_mjtByte_1d(p.light_active, p.nlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->light_directional, __pyx_v_p->nlight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_directional);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_directional));
  __pyx_v_self->_light_directional = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1196
 *         self._light_targetbodyid = _wrap_int_1d(p.light_targetbodyid, p.nlight)
 *         self._light_directional = _wrap_mjtByte_1d(p.light_directional, p.nlight)
 *         self._light_castshadow = _wrap_mjtByte_1d(p.light_castshadow, p.nlight)             # <<<<<<<<<<<<<<
 *         self._light_active = _wrap_mjtByte_1d(p.light_active, p.nlight)
 *         self._light_pos = _wrap_mjtNum_2d(p.light_pos, p.nlight, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->light_castshadow, __pyx_v_p->nlight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_castshadow);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_castshadow));
  __pyx_v_self->_light_castshadow = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1197
 *         self._light_directional = _wrap_mjtByte_1d(p.light_directional, p.nlight)
 *         self._light_castshadow = _wrap_mjtByte_1d(p.light_castshadow, p.nlight)
 *         self._light_active = _wrap_mjtByte_1d(p.light_active, p.nlight)             # <<<<<<<<<<<<<<
 *         self._light_pos = _wrap_mjtNum_2d(p.light_pos, p.nlight, 3)
 *         self._light_dir = _wrap_mjtNum_2d(p.light_dir, p.nlight, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->light_active, __pyx_v_p->nlight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_active);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_active));
  __pyx_v_self->_light_active = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1198
 *         self._light_castshadow = _wrap_mjtByte_1d(p.light_castshadow, p.nlight)
 *         self._light_active = _wrap_mjtByte_1d(p.light_active, p.nlight)
 *         self._light_pos = _wrap_mjtNum_2d(p.light_pos, p.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._light_dir = _wrap_mjtNum_2d(p.light_dir, p.nlight, 3)
 *         self._light_poscom0 = _wrap_mjtNum_2d(p.light_poscom0, p.nlight, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->light_pos, __pyx_v_p->nlight, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_pos));
  __pyx_v_self->_light_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1199
 *         self._light_active = _wrap_mjtByte_1d(p.light_active, p.nlight)
 *         self._light_pos = _wrap_mjtNum_2d(p.light_pos, p.nlight, 3)
 *         self._light_dir = _wrap_mjtNum_2d(p.light_dir, p.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._light_poscom0 = _wrap_mjtNum_2d(p.light_poscom0, p.nlight, 3)
 *         self._light_pos0 = _wrap_mjtNum_2d(p.light_pos0, p.nlight, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->light_dir, __pyx_v_p->nlight, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_dir);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_dir));
  __pyx_v_self->_light_dir = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1200
 *         self._light_pos = _wrap_mjtNum_2d(p.light_pos, p.nlight, 3)
 *         self._light_dir = _wrap_mjtNum_2d(p.light_dir, p.nlight, 3)
 *         self._light_poscom0 = _wrap_mjtNum_2d(p.light_poscom0, p.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._light_pos0 = _wrap_mjtNum_2d(p.light_pos0, p.nlight, 3)
 *         self._light_dir0 = _wrap_mjtNum_2d(p.light_dir0, p.nlight, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->light_poscom0, __pyx_v_p->nlight, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_poscom0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_poscom0));
  __pyx_v_self->_light_poscom0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1201
 *         self._light_dir = _wrap_mjtNum_2d(p.light_dir, p.nlight, 3)
 *         self._light_poscom0 = _wrap_mjtNum_2d(p.light_poscom0, p.nlight, 3)
 *         self._light_pos0 = _wrap_mjtNum_2d(p.light_pos0, p.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._light_dir0 = _wrap_mjtNum_2d(p.light_dir0, p.nlight, 3)
 *         self._light_attenuation = _wrap_float_2d(p.light_attenuation, p.nlight, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->light_pos0, __pyx_v_p->nlight, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_pos0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_pos0));
  __pyx_v_self->_light_pos0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1202
 *         self._light_poscom0 = _wrap_mjtNum_2d(p.light_poscom0, p.nlight, 3)
 *         self._light_pos0 = _wrap_mjtNum_2d(p.light_pos0, p.nlight, 3)
 *         self._light_dir0 = _wrap_mjtNum_2d(p.light_dir0, p.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._light_attenuation = _wrap_float_2d(p.light_attenuation, p.nlight, 3)
 *         self._light_cutoff = _wrap_float_1d(p.light_cutoff, p.nlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->light_dir0, __pyx_v_p->nlight, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_dir0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_dir0));
  __pyx_v_self->_light_dir0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1203
 *         self._light_pos0 = _wrap_mjtNum_2d(p.light_pos0, p.nlight, 3)
 *         self._light_dir0 = _wrap_mjtNum_2d(p.light_dir0, p.nlight, 3)
 *         self._light_attenuation = _wrap_float_2d(p.light_attenuation, p.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._light_cutoff = _wrap_float_1d(p.light_cutoff, p.nlight)
 *         self._light_exponent = _wrap_float_1d(p.light_exponent, p.nlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->light_attenuation, __pyx_v_p->nlight, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_attenuation);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_attenuation));
  __pyx_v_self->_light_attenuation = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1204
 *         self._light_dir0 = _wrap_mjtNum_2d(p.light_dir0, p.nlight, 3)
 *         self._light_attenuation = _wrap_float_2d(p.light_attenuation, p.nlight, 3)
 *         self._light_cutoff = _wrap_float_1d(p.light_cutoff, p.nlight)             # <<<<<<<<<<<<<<
 *         self._light_exponent = _wrap_float_1d(p.light_exponent, p.nlight)
 *         self._light_ambient = _wrap_float_2d(p.light_ambient, p.nlight, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d(__pyx_v_p->light_cutoff, __pyx_v_p->nlight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_cutoff);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_cutoff));
  __pyx_v_self->_light_cutoff = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1205
 *         self._light_attenuation = _wrap_float_2d(p.light_attenuation, p.nlight, 3)
 *         self._light_cutoff = _wrap_float_1d(p.light_cutoff, p.nlight)
 *         self._light_exponent = _wrap_float_1d(p.light_exponent, p.nlight)             # <<<<<<<<<<<<<<
 *         self._light_ambient = _wrap_float_2d(p.light_ambient, p.nlight, 3)
 *         self._light_diffuse = _wrap_float_2d(p.light_diffuse, p.nlight, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d(__pyx_v_p->light_exponent, __pyx_v_p->nlight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_exponent);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_exponent));
  __pyx_v_self->_light_exponent = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1206
 *         self._light_cutoff = _wrap_float_1d(p.light_cutoff, p.nlight)
 *         self._light_exponent = _wrap_float_1d(p.light_exponent, p.nlight)
 *         self._light_ambient = _wrap_float_2d(p.light_ambient, p.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._light_diffuse = _wrap_float_2d(p.light_diffuse, p.nlight, 3)
 *         self._light_specular = _wrap_float_2d(p.light_specular, p.nlight, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->light_ambient, __pyx_v_p->nlight, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_ambient);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_ambient));
  __pyx_v_self->_light_ambient = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1207
 *         self._light_exponent = _wrap_float_1d(p.light_exponent, p.nlight)
 *         self._light_ambient = _wrap_float_2d(p.light_ambient, p.nlight, 3)
 *         self._light_diffuse = _wrap_float_2d(p.light_diffuse, p.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._light_specular = _wrap_float_2d(p.light_specular, p.nlight, 3)
 *         self._mesh_faceadr = _wrap_int_1d(p.mesh_faceadr, p.nmesh)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->light_diffuse, __pyx_v_p->nlight, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_diffuse);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_diffuse));
  __pyx_v_self->_light_diffuse = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1208
 *         self._light_ambient = _wrap_float_2d(p.light_ambient, p.nlight, 3)
 *         self._light_diffuse = _wrap_float_2d(p.light_diffuse, p.nlight, 3)
 *         self._light_specular = _wrap_float_2d(p.light_specular, p.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._mesh_faceadr = _wrap_int_1d(p.mesh_faceadr, p.nmesh)
 *         self._mesh_facenum = _wrap_int_1d(p.mesh_facenum, p.nmesh)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->light_specular, __pyx_v_p->nlight, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_specular);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_specular));
  __pyx_v_self->_light_specular = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1209
 *         self._light_diffuse = _wrap_float_2d(p.light_diffuse, p.nlight, 3)
 *         self._light_specular = _wrap_float_2d(p.light_specular, p.nlight, 3)
 *         self._mesh_faceadr = _wrap_int_1d(p.mesh_faceadr, p.nmesh)             # <<<<<<<<<<<<<<
 *         self._mesh_facenum = _wrap_int_1d(p.mesh_facenum, p.nmesh)
 *         self._mesh_vertadr = _wrap_int_1d(p.mesh_vertadr, p.nmesh)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->mesh_faceadr, __pyx_v_p->nmesh)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mesh_faceadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mesh_faceadr));
  __pyx_v_self->_mesh_faceadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1210
 *         self._light_specular = _wrap_float_2d(p.light_specular, p.nlight, 3)
 *         self._mesh_faceadr = _wrap_int_1d(p.mesh_faceadr, p.nmesh)
 *         self._mesh_facenum = _wrap_int_1d(p.mesh_facenum, p.nmesh)             # <<<<<<<<<<<<<<
 *         self._mesh_vertadr = _wrap_int_1d(p.mesh_vertadr, p.nmesh)
 *         self._mesh_vertnum = _wrap_int_1d(p.mesh_vertnum, p.nmesh)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->mesh_facenum, __pyx_v_p->nmesh)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mesh_facenum);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mesh_facenum));
  __pyx_v_self->_mesh_facenum = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1211
 *         self._mesh_faceadr = _wrap_int_1d(p.mesh_faceadr, p.nmesh)
 *         self._mesh_facenum = _wrap_int_1d(p.mesh_facenum, p.nmesh)
 *         self._mesh_vertadr = _wrap_int_1d(p.mesh_vertadr, p.nmesh)             # <<<<<<<<<<<<<<
 *         self._mesh_vertnum = _wrap_int_1d(p.mesh_vertnum, p.nmesh)
 *         self._mesh_graphadr = _wrap_int_1d(p.mesh_graphadr, p.nmesh)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->mesh_vertadr, __pyx_v_p->nmesh)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mesh_vertadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mesh_vertadr));
  __pyx_v_self->_mesh_vertadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1212
 *         self._mesh_facenum = _wrap_int_1d(p.mesh_facenum, p.nmesh)
 *         self._mesh_vertadr = _wrap_int_1d(p.mesh_vertadr, p.nmesh)
 *         self._mesh_vertnum = _wrap_int_1d(p.mesh_vertnum, p.nmesh)             # <<<<<<<<<<<<<<
 *         self._mesh_graphadr = _wrap_int_1d(p.mesh_graphadr, p.nmesh)
 *         self._mesh_vert = _wrap_float_2d(p.mesh_vert, p.nmeshvert, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->mesh_vertnum, __pyx_v_p->nmesh)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mesh_vertnum);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mesh_vertnum));
  __pyx_v_self->_mesh_vertnum = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1213
 *         self._mesh_vertadr = _wrap_int_1d(p.mesh_vertadr, p.nmesh)
 *         self._mesh_vertnum = _wrap_int_1d(p.mesh_vertnum, p.nmesh)
 *         self._mesh_graphadr = _wrap_int_1d(p.mesh_graphadr, p.nmesh)             # <<<<<<<<<<<<<<
 *         self._mesh_vert = _wrap_float_2d(p.mesh_vert, p.nmeshvert, 3)
 *         self._mesh_normal = _wrap_float_2d(p.mesh_normal, p.nmeshvert, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->mesh_graphadr, __pyx_v_p->nmesh)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mesh_graphadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mesh_graphadr));
  __pyx_v_self->_mesh_graphadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1214
 *         self._mesh_vertnum = _wrap_int_1d(p.mesh_vertnum, p.nmesh)
 *         self._mesh_graphadr = _wrap_int_1d(p.mesh_graphadr, p.nmesh)
 *         self._mesh_vert = _wrap_float_2d(p.mesh_vert, p.nmeshvert, 3)             # <<<<<<<<<<<<<<
 *         self._mesh_normal = _wrap_float_2d(p.mesh_normal, p.nmeshvert, 3)
 *         self._mesh_face = _wrap_int_2d(p.mesh_face, p.nmeshface, 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->mesh_vert, __pyx_v_p->nmeshvert, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mesh_vert);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mesh_vert));
  __pyx_v_self->_mesh_vert = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1215
 *         self._mesh_graphadr = _wrap_int_1d(p.mesh_graphadr, p.nmesh)
 *         self._mesh_vert = _wrap_float_2d(p.mesh_vert, p.nmeshvert, 3)
 *         self._mesh_normal = _wrap_float_2d(p.mesh_normal, p.nmeshvert, 3)             # <<<<<<<<<<<<<<
 *         self._mesh_face = _wrap_int_2d(p.mesh_face, p.nmeshface, 3)
 *         self._mesh_graph = _wrap_int_1d(p.mesh_graph, p.nmeshgraph)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->mesh_normal, __pyx_v_p->nmeshvert, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mesh_normal);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mesh_normal));
  __pyx_v_self->_mesh_normal = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1216
 *         self._mesh_vert = _wrap_float_2d(p.mesh_vert, p.nmeshvert, 3)
 *         self._mesh_normal = _wrap_float_2d(p.mesh_normal, p.nmeshvert, 3)
 *         self._mesh_face = _wrap_int_2d(p.mesh_face, p.nmeshface, 3)             # <<<<<<<<<<<<<<
 *         self._mesh_graph = _wrap_int_1d(p.mesh_graph, p.nmeshgraph)
 *         self._hfield_size = _wrap_mjtNum_2d(p.hfield_size, p.nhfield, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_2d(__pyx_v_p->mesh_face, __pyx_v_p->nmeshface, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mesh_face);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mesh_face));
  __pyx_v_self->_mesh_face = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1217
 *         self._mesh_normal = _wrap_float_2d(p.mesh_normal, p.nmeshvert, 3)
 *         self._mesh_face = _wrap_int_2d(p.mesh_face, p.nmeshface, 3)
 *         self._mesh_graph = _wrap_int_1d(p.mesh_graph, p.nmeshgraph)             # <<<<<<<<<<<<<<
 *         self._hfield_size = _wrap_mjtNum_2d(p.hfield_size, p.nhfield, 4)
 *         self._hfield_nrow = _wrap_int_1d(p.hfield_nrow, p.nhfield)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->mesh_graph, __pyx_v_p->nmeshgraph)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mesh_graph);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mesh_graph));
  __pyx_v_self->_mesh_graph = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1218
 *         self._mesh_face = _wrap_int_2d(p.mesh_face, p.nmeshface, 3)
 *         self._mesh_graph = _wrap_int_1d(p.mesh_graph, p.nmeshgraph)
 *         self._hfield_size = _wrap_mjtNum_2d(p.hfield_size, p.nhfield, 4)             # <<<<<<<<<<<<<<
 *         self._hfield_nrow = _wrap_int_1d(p.hfield_nrow, p.nhfield)
 *         self._hfield_ncol = _wrap_int_1d(p.hfield_ncol, p.nhfield)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->hfield_size, __pyx_v_p->nhfield, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_hfield_size);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_hfield_size));
  __pyx_v_self->_hfield_size = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1219
 *         self._mesh_graph = _wrap_int_1d(p.mesh_graph, p.nmeshgraph)
 *         self._hfield_size = _wrap_mjtNum_2d(p.hfield_size, p.nhfield, 4)
 *         self._hfield_nrow = _wrap_int_1d(p.hfield_nrow, p.nhfield)             # <<<<<<<<<<<<<<
 *         self._hfield_ncol = _wrap_int_1d(p.hfield_ncol, p.nhfield)
 *         self._hfield_adr = _wrap_int_1d(p.hfield_adr, p.nhfield)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->hfield_nrow, __pyx_v_p->nhfield)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_hfield_nrow);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_hfield_nrow));
  __pyx_v_self->_hfield_nrow = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1220
 *         self._hfield_size = _wrap_mjtNum_2d(p.hfield_size, p.nhfield, 4)
 *         self._hfield_nrow = _wrap_int_1d(p.hfield_nrow, p.nhfield)
 *         self._hfield_ncol = _wrap_int_1d(p.hfield_ncol, p.nhfield)             # <<<<<<<<<<<<<<
 *         self._hfield_adr = _wrap_int_1d(p.hfield_adr, p.nhfield)
 *         self._hfield_data = _wrap_float_1d(p.hfield_data, p.nhfielddata)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->hfield_ncol, __pyx_v_p->nhfield)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_hfield_ncol);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_hfield_ncol));
  __pyx_v_self->_hfield_ncol = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1221
 *         self._hfield_nrow = _wrap_int_1d(p.hfield_nrow, p.nhfield)
 *         self._hfield_ncol = _wrap_int_1d(p.hfield_ncol, p.nhfield)
 *         self._hfield_adr = _wrap_int_1d(p.hfield_adr, p.nhfield)             # <<<<<<<<<<<<<<
 *         self._hfield_data = _wrap_float_1d(p.hfield_data, p.nhfielddata)
 *         self._tex_type = _wrap_int_1d(p.tex_type, p.ntex)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->hfield_adr, __pyx_v_p->nhfield)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_hfield_adr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_hfield_adr));
  __pyx_v_self->_hfield_adr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1222
 *         self._hfield_ncol = _wrap_int_1d(p.hfield_ncol, p.nhfield)
 *         self._hfield_adr = _wrap_int_1d(p.hfield_adr, p.nhfield)
 *         self._hfield_data = _wrap_float_1d(p.hfield_data, p.nhfielddata)             # <<<<<<<<<<<<<<
 *         self._tex_type = _wrap_int_1d(p.tex_type, p.ntex)
 *         self._tex_height = _wrap_int_1d(p.tex_height, p.ntex)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d(__pyx_v_p->hfield_data, __pyx_v_p->nhfielddata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_hfield_data);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_hfield_data));
  __pyx_v_self->_hfield_data = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1223
 *         self._hfield_adr = _wrap_int_1d(p.hfield_adr, p.nhfield)
 *         self._hfield_data = _wrap_float_1d(p.hfield_data, p.nhfielddata)
 *         self._tex_type = _wrap_int_1d(p.tex_type, p.ntex)             # <<<<<<<<<<<<<<
 *         self._tex_height = _wrap_int_1d(p.tex_height, p.ntex)
 *         self._tex_width = _wrap_int_1d(p.tex_width, p.ntex)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tex_type, __pyx_v_p->ntex)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tex_type);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tex_type));
  __pyx_v_self->_tex_type = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1224
 *         self._hfield_data = _wrap_float_1d(p.hfield_data, p.nhfielddata)
 *         self._tex_type = _wrap_int_1d(p.tex_type, p.ntex)
 *         self._tex_height = _wrap_int_1d(p.tex_height, p.ntex)             # <<<<<<<<<<<<<<
 *         self._tex_width = _wrap_int_1d(p.tex_width, p.ntex)
 *         self._tex_adr = _wrap_int_1d(p.tex_adr, p.ntex)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tex_height, __pyx_v_p->ntex)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tex_height);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tex_height));
  __pyx_v_self->_tex_height = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1225
 *         self._tex_type = _wrap_int_1d(p.tex_type, p.ntex)
 *         self._tex_height = _wrap_int_1d(p.tex_height, p.ntex)
 *         self._tex_width = _wrap_int_1d(p.tex_width, p.ntex)             # <<<<<<<<<<<<<<
 *         self._tex_adr = _wrap_int_1d(p.tex_adr, p.ntex)
 *         self._tex_rgb = _wrap_mjtByte_1d(p.tex_rgb, p.ntexdata)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tex_width, __pyx_v_p->ntex)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tex_width);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tex_width));
  __pyx_v_self->_tex_width = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1226
 *         self._tex_height = _wrap_int_1d(p.tex_height, p.ntex)
 *         self._tex_width = _wrap_int_1d(p.tex_width, p.ntex)
 *         self._tex_adr = _wrap_int_1d(p.tex_adr, p.ntex)             # <<<<<<<<<<<<<<
 *         self._tex_rgb = _wrap_mjtByte_1d(p.tex_rgb, p.ntexdata)
 *         self._mat_texid = _wrap_int_1d(p.mat_texid, p.nmat)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tex_adr, __pyx_v_p->ntex)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tex_adr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tex_adr));
  __pyx_v_self->_tex_adr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1227
 *         self._tex_width = _wrap_int_1d(p.tex_width, p.ntex)
 *         self._tex_adr = _wrap_int_1d(p.tex_adr, p.ntex)
 *         self._tex_rgb = _wrap_mjtByte_1d(p.tex_rgb, p.ntexdata)             # <<<<<<<<<<<<<<
 *         self._mat_texid = _wrap_int_1d(p.mat_texid, p.nmat)
 *         self._mat_texuniform = _wrap_mjtByte_1d(p.mat_texuniform, p.nmat)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->tex_rgb, __pyx_v_p->ntexdata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tex_rgb);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tex_rgb));
  __pyx_v_self->_tex_rgb = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1228
 *         self._tex_adr = _wrap_int_1d(p.tex_adr, p.ntex)
 *         self._tex_rgb = _wrap_mjtByte_1d(p.tex_rgb, p.ntexdata)
 *         self._mat_texid = _wrap_int_1d(p.mat_texid, p.nmat)             # <<<<<<<<<<<<<<
 *         self._mat_texuniform = _wrap_mjtByte_1d(p.mat_texuniform, p.nmat)
 *         self._mat_texrepeat = _wrap_float_2d(p.mat_texrepeat, p.nmat, 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->mat_texid, __pyx_v_p->nmat)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mat_texid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mat_texid));
  __pyx_v_self->_mat_texid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1229
 *         self._tex_rgb = _wrap_mjtByte_1d(p.tex_rgb, p.ntexdata)
 *         self._mat_texid = _wrap_int_1d(p.mat_texid, p.nmat)
 *         self._mat_texuniform = _wrap_mjtByte_1d(p.mat_texuniform, p.nmat)             # <<<<<<<<<<<<<<
 *         self._mat_texrepeat = _wrap_float_2d(p.mat_texrepeat, p.nmat, 2)
 *         self._mat_emission = _wrap_float_1d(p.mat_emission, p.nmat)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->mat_texuniform, __pyx_v_p->nmat)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mat_texuniform);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mat_texuniform));
  __pyx_v_self->_mat_texuniform = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1230
 *         self._mat_texid = _wrap_int_1d(p.mat_texid, p.nmat)
 *         self._mat_texuniform = _wrap_mjtByte_1d(p.mat_texuniform, p.nmat)
 *         self._mat_texrepeat = _wrap_float_2d(p.mat_texrepeat, p.nmat, 2)             # <<<<<<<<<<<<<<
 *         self._mat_emission = _wrap_float_1d(p.mat_emission, p.nmat)
 *         self._mat_specular = _wrap_float_1d(p.mat_specular, p.nmat)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->mat_texrepeat, __pyx_v_p->nmat, 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mat_texrepeat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mat_texrepeat));
  __pyx_v_self->_mat_texrepeat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1231
 *         self._mat_texuniform = _wrap_mjtByte_1d(p.mat_texuniform, p.nmat)
 *         self._mat_texrepeat = _wrap_float_2d(p.mat_texrepeat, p.nmat, 2)
 *         self._mat_emission = _wrap_float_1d(p.mat_emission, p.nmat)             # <<<<<<<<<<<<<<
 *         self._mat_specular = _wrap_float_1d(p.mat_specular, p.nmat)
 *         self._mat_shininess = _wrap_float_1d(p.mat_shininess, p.nmat)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d(__pyx_v_p->mat_emission, __pyx_v_p->nmat)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mat_emission);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mat_emission));
  __pyx_v_self->_mat_emission = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1232
 *         self._mat_texrepeat = _wrap_float_2d(p.mat_texrepeat, p.nmat, 2)
 *         self._mat_emission = _wrap_float_1d(p.mat_emission, p.nmat)
 *         self._mat_specular = _wrap_float_1d(p.mat_specular, p.nmat)             # <<<<<<<<<<<<<<
 *         self._mat_shininess = _wrap_float_1d(p.mat_shininess, p.nmat)
 *         self._mat_reflectance = _wrap_float_1d(p.mat_reflectance, p.nmat)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d(__pyx_v_p->mat_specular, __pyx_v_p->nmat)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mat_specular);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mat_specular));
  __pyx_v_self->_mat_specular = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1233
 *         self._mat_emission = _wrap_float_1d(p.mat_emission, p.nmat)
 *         self._mat_specular = _wrap_float_1d(p.mat_specular, p.nmat)
 *         self._mat_shininess = _wrap_float_1d(p.mat_shininess, p.nmat)             # <<<<<<<<<<<<<<
 *         self._mat_reflectance = _wrap_float_1d(p.mat_reflectance, p.nmat)
 *         self._mat_rgba = _wrap_float_2d(p.mat_rgba, p.nmat, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d(__pyx_v_p->mat_shininess, __pyx_v_p->nmat)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mat_shininess);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mat_shininess));
  __pyx_v_self->_mat_shininess = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1234
 *         self._mat_specular = _wrap_float_1d(p.mat_specular, p.nmat)
 *         self._mat_shininess = _wrap_float_1d(p.mat_shininess, p.nmat)
 *         self._mat_reflectance = _wrap_float_1d(p.mat_reflectance, p.nmat)             # <<<<<<<<<<<<<<
 *         self._mat_rgba = _wrap_float_2d(p.mat_rgba, p.nmat, 4)
 *         self._pair_dim = _wrap_int_1d(p.pair_dim, p.npair)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d(__pyx_v_p->mat_reflectance, __pyx_v_p->nmat)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mat_reflectance);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mat_reflectance));
  __pyx_v_self->_mat_reflectance = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1235
 *         self._mat_shininess = _wrap_float_1d(p.mat_shininess, p.nmat)
 *         self._mat_reflectance = _wrap_float_1d(p.mat_reflectance, p.nmat)
 *         self._mat_rgba = _wrap_float_2d(p.mat_rgba, p.nmat, 4)             # <<<<<<<<<<<<<<
 *         self._pair_dim = _wrap_int_1d(p.pair_dim, p.npair)
 *         self._pair_geom1 = _wrap_int_1d(p.pair_geom1, p.npair)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->mat_rgba, __pyx_v_p->nmat, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mat_rgba);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mat_rgba));
  __pyx_v_self->_mat_rgba = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1236
 *         self._mat_reflectance = _wrap_float_1d(p.mat_reflectance, p.nmat)
 *         self._mat_rgba = _wrap_float_2d(p.mat_rgba, p.nmat, 4)
 *         self._pair_dim = _wrap_int_1d(p.pair_dim, p.npair)             # <<<<<<<<<<<<<<
 *         self._pair_geom1 = _wrap_int_1d(p.pair_geom1, p.npair)
 *         self._pair_geom2 = _wrap_int_1d(p.pair_geom2, p.npair)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->pair_dim, __pyx_v_p->npair)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pair_dim);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pair_dim));
  __pyx_v_self->_pair_dim = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1237
 *         self._mat_rgba = _wrap_float_2d(p.mat_rgba, p.nmat, 4)
 *         self._pair_dim = _wrap_int_1d(p.pair_dim, p.npair)
 *         self._pair_geom1 = _wrap_int_1d(p.pair_geom1, p.npair)             # <<<<<<<<<<<<<<
 *         self._pair_geom2 = _wrap_int_1d(p.pair_geom2, p.npair)
 *         self._pair_signature = _wrap_int_1d(p.pair_signature, p.npair)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->pair_geom1, __pyx_v_p->npair)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pair_geom1);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pair_geom1));
  __pyx_v_self->_pair_geom1 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1238
 *         self._pair_dim = _wrap_int_1d(p.pair_dim, p.npair)
 *         self._pair_geom1 = _wrap_int_1d(p.pair_geom1, p.npair)
 *         self._pair_geom2 = _wrap_int_1d(p.pair_geom2, p.npair)             # <<<<<<<<<<<<<<
 *         self._pair_signature = _wrap_int_1d(p.pair_signature, p.npair)
 *         self._pair_solref = _wrap_mjtNum_2d(p.pair_solref, p.npair, mjNREF)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->pair_geom2, __pyx_v_p->npair)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pair_geom2);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pair_geom2));
  __pyx_v_self->_pair_geom2 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1239
 *         self._pair_geom1 = _wrap_int_1d(p.pair_geom1, p.npair)
 *         self._pair_geom2 = _wrap_int_1d(p.pair_geom2, p.npair)
 *         self._pair_signature = _wrap_int_1d(p.pair_signature, p.npair)             # <<<<<<<<<<<<<<
 *         self._pair_solref = _wrap_mjtNum_2d(p.pair_solref, p.npair, mjNREF)
 *         self._pair_solimp = _wrap_mjtNum_2d(p.pair_solimp, p.npair, mjNIMP)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->pair_signature, __pyx_v_p->npair)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pair_signature);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pair_signature));
  __pyx_v_self->_pair_signature = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1240
 *         self._pair_geom2 = _wrap_int_1d(p.pair_geom2, p.npair)
 *         self._pair_signature = _wrap_int_1d(p.pair_signature, p.npair)
 *         self._pair_solref = _wrap_mjtNum_2d(p.pair_solref, p.npair, mjNREF)             # <<<<<<<<<<<<<<
 *         self._pair_solimp = _wrap_mjtNum_2d(p.pair_solimp, p.npair, mjNIMP)
 *         self._pair_margin = _wrap_mjtNum_1d(p.pair_margin, p.npair)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->pair_solref, __pyx_v_p->npair, mjNREF)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pair_solref);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pair_solref));
  __pyx_v_self->_pair_solref = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1241
 *         self._pair_signature = _wrap_int_1d(p.pair_signature, p.npair)
 *         self._pair_solref = _wrap_mjtNum_2d(p.pair_solref, p.npair, mjNREF)
 *         self._pair_solimp = _wrap_mjtNum_2d(p.pair_solimp, p.npair, mjNIMP)             # <<<<<<<<<<<<<<
 *         self._pair_margin = _wrap_mjtNum_1d(p.pair_margin, p.npair)
 *         self._pair_gap = _wrap_mjtNum_1d(p.pair_gap, p.npair)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->pair_solimp, __pyx_v_p->npair, mjNIMP)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pair_solimp);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pair_solimp));
  __pyx_v_self->_pair_solimp = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1242
 *         self._pair_solref = _wrap_mjtNum_2d(p.pair_solref, p.npair, mjNREF)
 *         self._pair_solimp = _wrap_mjtNum_2d(p.pair_solimp, p.npair, mjNIMP)
 *         self._pair_margin = _wrap_mjtNum_1d(p.pair_margin, p.npair)             # <<<<<<<<<<<<<<
 *         self._pair_gap = _wrap_mjtNum_1d(p.pair_gap, p.npair)
 *         self._pair_friction = _wrap_mjtNum_2d(p.pair_friction, p.npair, 5)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->pair_margin, __pyx_v_p->npair)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pair_margin);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pair_margin));
  __pyx_v_self->_pair_margin = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1243
 *         self._pair_solimp = _wrap_mjtNum_2d(p.pair_solimp, p.npair, mjNIMP)
 *         self._pair_margin = _wrap_mjtNum_1d(p.pair_margin, p.npair)
 *         self._pair_gap = _wrap_mjtNum_1d(p.pair_gap, p.npair)             # <<<<<<<<<<<<<<
 *         self._pair_friction = _wrap_mjtNum_2d(p.pair_friction, p.npair, 5)
 *         self._exclude_signature = _wrap_int_1d(p.exclude_signature, p.nexclude)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->pair_gap, __pyx_v_p->npair)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pair_gap);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pair_gap));
  __pyx_v_self->_pair_gap = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1244
 *         self._pair_margin = _wrap_mjtNum_1d(p.pair_margin, p.npair)
 *         self._pair_gap = _wrap_mjtNum_1d(p.pair_gap, p.npair)
 *         self._pair_friction = _wrap_mjtNum_2d(p.pair_friction, p.npair, 5)             # <<<<<<<<<<<<<<
 *         self._exclude_signature = _wrap_int_1d(p.exclude_signature, p.nexclude)
 *         self._eq_type = _wrap_int_1d(p.eq_type, p.neq)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->pair_friction, __pyx_v_p->npair, 5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pair_friction);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pair_friction));
  __pyx_v_self->_pair_friction = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1245
 *         self._pair_gap = _wrap_mjtNum_1d(p.pair_gap, p.npair)
 *         self._pair_friction = _wrap_mjtNum_2d(p.pair_friction, p.npair, 5)
 *         self._exclude_signature = _wrap_int_1d(p.exclude_signature, p.nexclude)             # <<<<<<<<<<<<<<
 *         self._eq_type = _wrap_int_1d(p.eq_type, p.neq)
 *         self._eq_obj1id = _wrap_int_1d(p.eq_obj1id, p.neq)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->exclude_signature, __pyx_v_p->nexclude)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_exclude_signature);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_exclude_signature));
  __pyx_v_self->_exclude_signature = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1246
 *         self._pair_friction = _wrap_mjtNum_2d(p.pair_friction, p.npair, 5)
 *         self._exclude_signature = _wrap_int_1d(p.exclude_signature, p.nexclude)
 *         self._eq_type = _wrap_int_1d(p.eq_type, p.neq)             # <<<<<<<<<<<<<<
 *         self._eq_obj1id = _wrap_int_1d(p.eq_obj1id, p.neq)
 *         self._eq_obj2id = _wrap_int_1d(p.eq_obj2id, p.neq)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->eq_type, __pyx_v_p->neq)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_eq_type);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_eq_type));
  __pyx_v_self->_eq_type = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1247
 *         self._exclude_signature = _wrap_int_1d(p.exclude_signature, p.nexclude)
 *         self._eq_type = _wrap_int_1d(p.eq_type, p.neq)
 *         self._eq_obj1id = _wrap_int_1d(p.eq_obj1id, p.neq)             # <<<<<<<<<<<<<<
 *         self._eq_obj2id = _wrap_int_1d(p.eq_obj2id, p.neq)
 *         self._eq_active = _wrap_mjtByte_1d(p.eq_active, p.neq)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->eq_obj1id, __pyx_v_p->neq)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_eq_obj1id);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_eq_obj1id));
  __pyx_v_self->_eq_obj1id = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1248
 *         self._eq_type = _wrap_int_1d(p.eq_type, p.neq)
 *         self._eq_obj1id = _wrap_int_1d(p.eq_obj1id, p.neq)
 *         self._eq_obj2id = _wrap_int_1d(p.eq_obj2id, p.neq)             # <<<<<<<<<<<<<<
 *         self._eq_active = _wrap_mjtByte_1d(p.eq_active, p.neq)
 *         self._eq_solref = _wrap_mjtNum_2d(p.eq_solref, p.neq, mjNREF)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->eq_obj2id, __pyx_v_p->neq)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_eq_obj2id);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_eq_obj2id));
  __pyx_v_self->_eq_obj2id = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1249
 *         self._eq_obj1id = _wrap_int_1d(p.eq_obj1id, p.neq)
 *         self._eq_obj2id = _wrap_int_1d(p.eq_obj2id, p.neq)
 *         self._eq_active = _wrap_mjtByte_1d(p.eq_active, p.neq)             # <<<<<<<<<<<<<<
 *         self._eq_solref = _wrap_mjtNum_2d(p.eq_solref, p.neq, mjNREF)
 *         self._eq_solimp = _wrap_mjtNum_2d(p.eq_solimp, p.neq, mjNIMP)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->eq_active, __pyx_v_p->neq)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_eq_active);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_eq_active));
  __pyx_v_self->_eq_active = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1250
 *         self._eq_obj2id = _wrap_int_1d(p.eq_obj2id, p.neq)
 *         self._eq_active = _wrap_mjtByte_1d(p.eq_active, p.neq)
 *         self._eq_solref = _wrap_mjtNum_2d(p.eq_solref, p.neq, mjNREF)             # <<<<<<<<<<<<<<
 *         self._eq_solimp = _wrap_mjtNum_2d(p.eq_solimp, p.neq, mjNIMP)
 *         self._eq_data = _wrap_mjtNum_2d(p.eq_data, p.neq, mjNEQDATA)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->eq_solref, __pyx_v_p->neq, mjNREF)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_eq_solref);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_eq_solref));
  __pyx_v_self->_eq_solref = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1251
 *         self._eq_active = _wrap_mjtByte_1d(p.eq_active, p.neq)
 *         self._eq_solref = _wrap_mjtNum_2d(p.eq_solref, p.neq, mjNREF)
 *         self._eq_solimp = _wrap_mjtNum_2d(p.eq_solimp, p.neq, mjNIMP)             # <<<<<<<<<<<<<<
 *         self._eq_data = _wrap_mjtNum_2d(p.eq_data, p.neq, mjNEQDATA)
 *         self._tendon_adr = _wrap_int_1d(p.tendon_adr, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->eq_solimp, __pyx_v_p->neq, mjNIMP)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_eq_solimp);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_eq_solimp));
  __pyx_v_self->_eq_solimp = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1252
 *         self._eq_solref = _wrap_mjtNum_2d(p.eq_solref, p.neq, mjNREF)
 *         self._eq_solimp = _wrap_mjtNum_2d(p.eq_solimp, p.neq, mjNIMP)
 *         self._eq_data = _wrap_mjtNum_2d(p.eq_data, p.neq, mjNEQDATA)             # <<<<<<<<<<<<<<
 *         self._tendon_adr = _wrap_int_1d(p.tendon_adr, p.ntendon)
 *         self._tendon_num = _wrap_int_1d(p.tendon_num, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->eq_data, __pyx_v_p->neq, mjNEQDATA)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_eq_data);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_eq_data));
  __pyx_v_self->_eq_data = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1253
 *         self._eq_solimp = _wrap_mjtNum_2d(p.eq_solimp, p.neq, mjNIMP)
 *         self._eq_data = _wrap_mjtNum_2d(p.eq_data, p.neq, mjNEQDATA)
 *         self._tendon_adr = _wrap_int_1d(p.tendon_adr, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_num = _wrap_int_1d(p.tendon_num, p.ntendon)
 *         self._tendon_matid = _wrap_int_1d(p.tendon_matid, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tendon_adr, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_adr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_adr));
  __pyx_v_self->_tendon_adr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1254
 *         self._eq_data = _wrap_mjtNum_2d(p.eq_data, p.neq, mjNEQDATA)
 *         self._tendon_adr = _wrap_int_1d(p.tendon_adr, p.ntendon)
 *         self._tendon_num = _wrap_int_1d(p.tendon_num, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_matid = _wrap_int_1d(p.tendon_matid, p.ntendon)
 *         self._tendon_limited = _wrap_mjtByte_1d(p.tendon_limited, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tendon_num, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_num);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_num));
  __pyx_v_self->_tendon_num = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1255
 *         self._tendon_adr = _wrap_int_1d(p.tendon_adr, p.ntendon)
 *         self._tendon_num = _wrap_int_1d(p.tendon_num, p.ntendon)
 *         self._tendon_matid = _wrap_int_1d(p.tendon_matid, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_limited = _wrap_mjtByte_1d(p.tendon_limited, p.ntendon)
 *         self._tendon_width = _wrap_mjtNum_1d(p.tendon_width, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tendon_matid, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_matid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_matid));
  __pyx_v_self->_tendon_matid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1256
 *         self._tendon_num = _wrap_int_1d(p.tendon_num, p.ntendon)
 *         self._tendon_matid = _wrap_int_1d(p.tendon_matid, p.ntendon)
 *         self._tendon_limited = _wrap_mjtByte_1d(p.tendon_limited, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_width = _wrap_mjtNum_1d(p.tendon_width, p.ntendon)
 *         self._tendon_solref_lim = _wrap_mjtNum_2d(p.tendon_solref_lim, p.ntendon, mjNREF)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->tendon_limited, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_limited);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_limited));
  __pyx_v_self->_tendon_limited = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1257
 *         self._tendon_matid = _wrap_int_1d(p.tendon_matid, p.ntendon)
 *         self._tendon_limited = _wrap_mjtByte_1d(p.tendon_limited, p.ntendon)
 *         self._tendon_width = _wrap_mjtNum_1d(p.tendon_width, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_solref_lim = _wrap_mjtNum_2d(p.tendon_solref_lim, p.ntendon, mjNREF)
 *         self._tendon_solimp_lim = _wrap_mjtNum_2d(p.tendon_solimp_lim, p.ntendon, mjNIMP)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->tendon_width, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_width);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_width));
  __pyx_v_self->_tendon_width = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1258
 *         self._tendon_limited = _wrap_mjtByte_1d(p.tendon_limited, p.ntendon)
 *         self._tendon_width = _wrap_mjtNum_1d(p.tendon_width, p.ntendon)
 *         self._tendon_solref_lim = _wrap_mjtNum_2d(p.tendon_solref_lim, p.ntendon, mjNREF)             # <<<<<<<<<<<<<<
 *         self._tendon_solimp_lim = _wrap_mjtNum_2d(p.tendon_solimp_lim, p.ntendon, mjNIMP)
 *         self._tendon_solref_fri = _wrap_mjtNum_2d(p.tendon_solref_fri, p.ntendon, mjNREF)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->tendon_solref_lim, __pyx_v_p->ntendon, mjNREF)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_solref_lim);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_solref_lim));
  __pyx_v_self->_tendon_solref_lim = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1259
 *         self._tendon_width = _wrap_mjtNum_1d(p.tendon_width, p.ntendon)
 *         self._tendon_solref_lim = _wrap_mjtNum_2d(p.tendon_solref_lim, p.ntendon, mjNREF)
 *         self._tendon_solimp_lim = _wrap_mjtNum_2d(p.tendon_solimp_lim, p.ntendon, mjNIMP)             # <<<<<<<<<<<<<<
 *         self._tendon_solref_fri = _wrap_mjtNum_2d(p.tendon_solref_fri, p.ntendon, mjNREF)
 *         self._tendon_solimp_fri = _wrap_mjtNum_2d(p.tendon_solimp_fri, p.ntendon, mjNIMP)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->tendon_solimp_lim, __pyx_v_p->ntendon, mjNIMP)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_solimp_lim);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_solimp_lim));
  __pyx_v_self->_tendon_solimp_lim = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1260
 *         self._tendon_solref_lim = _wrap_mjtNum_2d(p.tendon_solref_lim, p.ntendon, mjNREF)
 *         self._tendon_solimp_lim = _wrap_mjtNum_2d(p.tendon_solimp_lim, p.ntendon, mjNIMP)
 *         self._tendon_solref_fri = _wrap_mjtNum_2d(p.tendon_solref_fri, p.ntendon, mjNREF)             # <<<<<<<<<<<<<<
 *         self._tendon_solimp_fri = _wrap_mjtNum_2d(p.tendon_solimp_fri, p.ntendon, mjNIMP)
 *         self._tendon_range = _wrap_mjtNum_2d(p.tendon_range, p.ntendon, 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->tendon_solref_fri, __pyx_v_p->ntendon, mjNREF)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_solref_fri);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_solref_fri));
  __pyx_v_self->_tendon_solref_fri = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1261
 *         self._tendon_solimp_lim = _wrap_mjtNum_2d(p.tendon_solimp_lim, p.ntendon, mjNIMP)
 *         self._tendon_solref_fri = _wrap_mjtNum_2d(p.tendon_solref_fri, p.ntendon, mjNREF)
 *         self._tendon_solimp_fri = _wrap_mjtNum_2d(p.tendon_solimp_fri, p.ntendon, mjNIMP)             # <<<<<<<<<<<<<<
 *         self._tendon_range = _wrap_mjtNum_2d(p.tendon_range, p.ntendon, 2)
 *         self._tendon_margin = _wrap_mjtNum_1d(p.tendon_margin, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->tendon_solimp_fri, __pyx_v_p->ntendon, mjNIMP)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_solimp_fri);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_solimp_fri));
  __pyx_v_self->_tendon_solimp_fri = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1262
 *         self._tendon_solref_fri = _wrap_mjtNum_2d(p.tendon_solref_fri, p.ntendon, mjNREF)
 *         self._tendon_solimp_fri = _wrap_mjtNum_2d(p.tendon_solimp_fri, p.ntendon, mjNIMP)
 *         self._tendon_range = _wrap_mjtNum_2d(p.tendon_range, p.ntendon, 2)             # <<<<<<<<<<<<<<
 *         self._tendon_margin = _wrap_mjtNum_1d(p.tendon_margin, p.ntendon)
 *         self._tendon_stiffness = _wrap_mjtNum_1d(p.tendon_stiffness, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->tendon_range, __pyx_v_p->ntendon, 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_range);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_range));
  __pyx_v_self->_tendon_range = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1263
 *         self._tendon_solimp_fri = _wrap_mjtNum_2d(p.tendon_solimp_fri, p.ntendon, mjNIMP)
 *         self._tendon_range = _wrap_mjtNum_2d(p.tendon_range, p.ntendon, 2)
 *         self._tendon_margin = _wrap_mjtNum_1d(p.tendon_margin, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_stiffness = _wrap_mjtNum_1d(p.tendon_stiffness, p.ntendon)
 *         self._tendon_damping = _wrap_mjtNum_1d(p.tendon_damping, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->tendon_margin, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_margin);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_margin));
  __pyx_v_self->_tendon_margin = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1264
 *         self._tendon_range = _wrap_mjtNum_2d(p.tendon_range, p.ntendon, 2)
 *         self._tendon_margin = _wrap_mjtNum_1d(p.tendon_margin, p.ntendon)
 *         self._tendon_stiffness = _wrap_mjtNum_1d(p.tendon_stiffness, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_damping = _wrap_mjtNum_1d(p.tendon_damping, p.ntendon)
 *         self._tendon_frictionloss = _wrap_mjtNum_1d(p.tendon_frictionloss, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->tendon_stiffness, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_stiffness);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_stiffness));
  __pyx_v_self->_tendon_stiffness = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1265
 *         self._tendon_margin = _wrap_mjtNum_1d(p.tendon_margin, p.ntendon)
 *         self._tendon_stiffness = _wrap_mjtNum_1d(p.tendon_stiffness, p.ntendon)
 *         self._tendon_damping = _wrap_mjtNum_1d(p.tendon_damping, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_frictionloss = _wrap_mjtNum_1d(p.tendon_frictionloss, p.ntendon)
 *         self._tendon_lengthspring = _wrap_mjtNum_1d(p.tendon_lengthspring, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->tendon_damping, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_damping);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_damping));
  __pyx_v_self->_tendon_damping = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1266
 *         self._tendon_stiffness = _wrap_mjtNum_1d(p.tendon_stiffness, p.ntendon)
 *         self._tendon_damping = _wrap_mjtNum_1d(p.tendon_damping, p.ntendon)
 *         self._tendon_frictionloss = _wrap_mjtNum_1d(p.tendon_frictionloss, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_lengthspring = _wrap_mjtNum_1d(p.tendon_lengthspring, p.ntendon)
 *         self._tendon_length0 = _wrap_mjtNum_1d(p.tendon_length0, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->tendon_frictionloss, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_frictionloss);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_frictionloss));
  __pyx_v_self->_tendon_frictionloss = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1267
 *         self._tendon_damping = _wrap_mjtNum_1d(p.tendon_damping, p.ntendon)
 *         self._tendon_frictionloss = _wrap_mjtNum_1d(p.tendon_frictionloss, p.ntendon)
 *         self._tendon_lengthspring = _wrap_mjtNum_1d(p.tendon_lengthspring, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_length0 = _wrap_mjtNum_1d(p.tendon_length0, p.ntendon)
 *         self._tendon_invweight0 = _wrap_mjtNum_1d(p.tendon_invweight0, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->tendon_lengthspring, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_lengthspring);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_lengthspring));
  __pyx_v_self->_tendon_lengthspring = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1268
 *         self._tendon_frictionloss = _wrap_mjtNum_1d(p.tendon_frictionloss, p.ntendon)
 *         self._tendon_lengthspring = _wrap_mjtNum_1d(p.tendon_lengthspring, p.ntendon)
 *         self._tendon_length0 = _wrap_mjtNum_1d(p.tendon_length0, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_invweight0 = _wrap_mjtNum_1d(p.tendon_invweight0, p.ntendon)
 *         self._tendon_user = _wrap_mjtNum_2d(p.tendon_user, p.ntendon, p.nuser_tendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->tendon_length0, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_length0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_length0));
  __pyx_v_self->_tendon_length0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1269
 *         self._tendon_lengthspring = _wrap_mjtNum_1d(p.tendon_lengthspring, p.ntendon)
 *         self._tendon_length0 = _wrap_mjtNum_1d(p.tendon_length0, p.ntendon)
 *         self._tendon_invweight0 = _wrap_mjtNum_1d(p.tendon_invweight0, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._tendon_user = _wrap_mjtNum_2d(p.tendon_user, p.ntendon, p.nuser_tendon)
 *         self._tendon_rgba = _wrap_float_2d(p.tendon_rgba, p.ntendon, 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->tendon_invweight0, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_invweight0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_invweight0));
  __pyx_v_self->_tendon_invweight0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1270
 *         self._tendon_length0 = _wrap_mjtNum_1d(p.tendon_length0, p.ntendon)
 *         self._tendon_invweight0 = _wrap_mjtNum_1d(p.tendon_invweight0, p.ntendon)
 *         self._tendon_user = _wrap_mjtNum_2d(p.tendon_user, p.ntendon, p.nuser_tendon)             # <<<<<<<<<<<<<<
 *         self._tendon_rgba = _wrap_float_2d(p.tendon_rgba, p.ntendon, 4)
 *         self._wrap_type = _wrap_int_1d(p.wrap_type, p.nwrap)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->tendon_user, __pyx_v_p->ntendon, __pyx_v_p->nuser_tendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_user);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_user));
  __pyx_v_self->_tendon_user = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1271
 *         self._tendon_invweight0 = _wrap_mjtNum_1d(p.tendon_invweight0, p.ntendon)
 *         self._tendon_user = _wrap_mjtNum_2d(p.tendon_user, p.ntendon, p.nuser_tendon)
 *         self._tendon_rgba = _wrap_float_2d(p.tendon_rgba, p.ntendon, 4)             # <<<<<<<<<<<<<<
 *         self._wrap_type = _wrap_int_1d(p.wrap_type, p.nwrap)
 *         self._wrap_objid = _wrap_int_1d(p.wrap_objid, p.nwrap)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_2d(__pyx_v_p->tendon_rgba, __pyx_v_p->ntendon, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tendon_rgba);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tendon_rgba));
  __pyx_v_self->_tendon_rgba = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1272
 *         self._tendon_user = _wrap_mjtNum_2d(p.tendon_user, p.ntendon, p.nuser_tendon)
 *         self._tendon_rgba = _wrap_float_2d(p.tendon_rgba, p.ntendon, 4)
 *         self._wrap_type = _wrap_int_1d(p.wrap_type, p.nwrap)             # <<<<<<<<<<<<<<
 *         self._wrap_objid = _wrap_int_1d(p.wrap_objid, p.nwrap)
 *         self._wrap_prm = _wrap_mjtNum_1d(p.wrap_prm, p.nwrap)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->wrap_type, __pyx_v_p->nwrap)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_wrap_type);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_wrap_type));
  __pyx_v_self->_wrap_type = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1273
 *         self._tendon_rgba = _wrap_float_2d(p.tendon_rgba, p.ntendon, 4)
 *         self._wrap_type = _wrap_int_1d(p.wrap_type, p.nwrap)
 *         self._wrap_objid = _wrap_int_1d(p.wrap_objid, p.nwrap)             # <<<<<<<<<<<<<<
 *         self._wrap_prm = _wrap_mjtNum_1d(p.wrap_prm, p.nwrap)
 *         self._actuator_trntype = _wrap_int_1d(p.actuator_trntype, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->wrap_objid, __pyx_v_p->nwrap)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_wrap_objid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_wrap_objid));
  __pyx_v_self->_wrap_objid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1274
 *         self._wrap_type = _wrap_int_1d(p.wrap_type, p.nwrap)
 *         self._wrap_objid = _wrap_int_1d(p.wrap_objid, p.nwrap)
 *         self._wrap_prm = _wrap_mjtNum_1d(p.wrap_prm, p.nwrap)             # <<<<<<<<<<<<<<
 *         self._actuator_trntype = _wrap_int_1d(p.actuator_trntype, p.nu)
 *         self._actuator_dyntype = _wrap_int_1d(p.actuator_dyntype, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->wrap_prm, __pyx_v_p->nwrap)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_wrap_prm);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_wrap_prm));
  __pyx_v_self->_wrap_prm = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1275
 *         self._wrap_objid = _wrap_int_1d(p.wrap_objid, p.nwrap)
 *         self._wrap_prm = _wrap_mjtNum_1d(p.wrap_prm, p.nwrap)
 *         self._actuator_trntype = _wrap_int_1d(p.actuator_trntype, p.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_dyntype = _wrap_int_1d(p.actuator_dyntype, p.nu)
 *         self._actuator_gaintype = _wrap_int_1d(p.actuator_gaintype, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->actuator_trntype, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_trntype);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_trntype));
  __pyx_v_self->_actuator_trntype = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1276
 *         self._wrap_prm = _wrap_mjtNum_1d(p.wrap_prm, p.nwrap)
 *         self._actuator_trntype = _wrap_int_1d(p.actuator_trntype, p.nu)
 *         self._actuator_dyntype = _wrap_int_1d(p.actuator_dyntype, p.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_gaintype = _wrap_int_1d(p.actuator_gaintype, p.nu)
 *         self._actuator_biastype = _wrap_int_1d(p.actuator_biastype, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->actuator_dyntype, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_dyntype);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_dyntype));
  __pyx_v_self->_actuator_dyntype = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1277
 *         self._actuator_trntype = _wrap_int_1d(p.actuator_trntype, p.nu)
 *         self._actuator_dyntype = _wrap_int_1d(p.actuator_dyntype, p.nu)
 *         self._actuator_gaintype = _wrap_int_1d(p.actuator_gaintype, p.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_biastype = _wrap_int_1d(p.actuator_biastype, p.nu)
 *         self._actuator_trnid = _wrap_int_2d(p.actuator_trnid, p.nu, 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->actuator_gaintype, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_gaintype);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_gaintype));
  __pyx_v_self->_actuator_gaintype = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1278
 *         self._actuator_dyntype = _wrap_int_1d(p.actuator_dyntype, p.nu)
 *         self._actuator_gaintype = _wrap_int_1d(p.actuator_gaintype, p.nu)
 *         self._actuator_biastype = _wrap_int_1d(p.actuator_biastype, p.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_trnid = _wrap_int_2d(p.actuator_trnid, p.nu, 2)
 *         self._actuator_ctrllimited = _wrap_mjtByte_1d(p.actuator_ctrllimited, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->actuator_biastype, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_biastype);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_biastype));
  __pyx_v_self->_actuator_biastype = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1279
 *         self._actuator_gaintype = _wrap_int_1d(p.actuator_gaintype, p.nu)
 *         self._actuator_biastype = _wrap_int_1d(p.actuator_biastype, p.nu)
 *         self._actuator_trnid = _wrap_int_2d(p.actuator_trnid, p.nu, 2)             # <<<<<<<<<<<<<<
 *         self._actuator_ctrllimited = _wrap_mjtByte_1d(p.actuator_ctrllimited, p.nu)
 *         self._actuator_forcelimited = _wrap_mjtByte_1d(p.actuator_forcelimited, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_2d(__pyx_v_p->actuator_trnid, __pyx_v_p->nu, 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_trnid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_trnid));
  __pyx_v_self->_actuator_trnid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1280
 *         self._actuator_biastype = _wrap_int_1d(p.actuator_biastype, p.nu)
 *         self._actuator_trnid = _wrap_int_2d(p.actuator_trnid, p.nu, 2)
 *         self._actuator_ctrllimited = _wrap_mjtByte_1d(p.actuator_ctrllimited, p.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_forcelimited = _wrap_mjtByte_1d(p.actuator_forcelimited, p.nu)
 *         self._actuator_dynprm = _wrap_mjtNum_2d(p.actuator_dynprm, p.nu, mjNDYN)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->actuator_ctrllimited, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_ctrllimited);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_ctrllimited));
  __pyx_v_self->_actuator_ctrllimited = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1281
 *         self._actuator_trnid = _wrap_int_2d(p.actuator_trnid, p.nu, 2)
 *         self._actuator_ctrllimited = _wrap_mjtByte_1d(p.actuator_ctrllimited, p.nu)
 *         self._actuator_forcelimited = _wrap_mjtByte_1d(p.actuator_forcelimited, p.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_dynprm = _wrap_mjtNum_2d(p.actuator_dynprm, p.nu, mjNDYN)
 *         self._actuator_gainprm = _wrap_mjtNum_2d(p.actuator_gainprm, p.nu, mjNGAIN)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(__pyx_v_p->actuator_forcelimited, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_forcelimited);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_forcelimited));
  __pyx_v_self->_actuator_forcelimited = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1282
 *         self._actuator_ctrllimited = _wrap_mjtByte_1d(p.actuator_ctrllimited, p.nu)
 *         self._actuator_forcelimited = _wrap_mjtByte_1d(p.actuator_forcelimited, p.nu)
 *         self._actuator_dynprm = _wrap_mjtNum_2d(p.actuator_dynprm, p.nu, mjNDYN)             # <<<<<<<<<<<<<<
 *         self._actuator_gainprm = _wrap_mjtNum_2d(p.actuator_gainprm, p.nu, mjNGAIN)
 *         self._actuator_biasprm = _wrap_mjtNum_2d(p.actuator_biasprm, p.nu, mjNBIAS)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->actuator_dynprm, __pyx_v_p->nu, mjNDYN)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_dynprm);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_dynprm));
  __pyx_v_self->_actuator_dynprm = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1283
 *         self._actuator_forcelimited = _wrap_mjtByte_1d(p.actuator_forcelimited, p.nu)
 *         self._actuator_dynprm = _wrap_mjtNum_2d(p.actuator_dynprm, p.nu, mjNDYN)
 *         self._actuator_gainprm = _wrap_mjtNum_2d(p.actuator_gainprm, p.nu, mjNGAIN)             # <<<<<<<<<<<<<<
 *         self._actuator_biasprm = _wrap_mjtNum_2d(p.actuator_biasprm, p.nu, mjNBIAS)
 *         self._actuator_ctrlrange = _wrap_mjtNum_2d(p.actuator_ctrlrange, p.nu, 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->actuator_gainprm, __pyx_v_p->nu, mjNGAIN)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_gainprm);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_gainprm));
  __pyx_v_self->_actuator_gainprm = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1284
 *         self._actuator_dynprm = _wrap_mjtNum_2d(p.actuator_dynprm, p.nu, mjNDYN)
 *         self._actuator_gainprm = _wrap_mjtNum_2d(p.actuator_gainprm, p.nu, mjNGAIN)
 *         self._actuator_biasprm = _wrap_mjtNum_2d(p.actuator_biasprm, p.nu, mjNBIAS)             # <<<<<<<<<<<<<<
 *         self._actuator_ctrlrange = _wrap_mjtNum_2d(p.actuator_ctrlrange, p.nu, 2)
 *         self._actuator_forcerange = _wrap_mjtNum_2d(p.actuator_forcerange, p.nu, 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->actuator_biasprm, __pyx_v_p->nu, mjNBIAS)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_biasprm);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_biasprm));
  __pyx_v_self->_actuator_biasprm = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1285
 *         self._actuator_gainprm = _wrap_mjtNum_2d(p.actuator_gainprm, p.nu, mjNGAIN)
 *         self._actuator_biasprm = _wrap_mjtNum_2d(p.actuator_biasprm, p.nu, mjNBIAS)
 *         self._actuator_ctrlrange = _wrap_mjtNum_2d(p.actuator_ctrlrange, p.nu, 2)             # <<<<<<<<<<<<<<
 *         self._actuator_forcerange = _wrap_mjtNum_2d(p.actuator_forcerange, p.nu, 2)
 *         self._actuator_gear = _wrap_mjtNum_2d(p.actuator_gear, p.nu, 6)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->actuator_ctrlrange, __pyx_v_p->nu, 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_ctrlrange);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_ctrlrange));
  __pyx_v_self->_actuator_ctrlrange = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1286
 *         self._actuator_biasprm = _wrap_mjtNum_2d(p.actuator_biasprm, p.nu, mjNBIAS)
 *         self._actuator_ctrlrange = _wrap_mjtNum_2d(p.actuator_ctrlrange, p.nu, 2)
 *         self._actuator_forcerange = _wrap_mjtNum_2d(p.actuator_forcerange, p.nu, 2)             # <<<<<<<<<<<<<<
 *         self._actuator_gear = _wrap_mjtNum_2d(p.actuator_gear, p.nu, 6)
 *         self._actuator_cranklength = _wrap_mjtNum_1d(p.actuator_cranklength, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->actuator_forcerange, __pyx_v_p->nu, 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_forcerange);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_forcerange));
  __pyx_v_self->_actuator_forcerange = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1287
 *         self._actuator_ctrlrange = _wrap_mjtNum_2d(p.actuator_ctrlrange, p.nu, 2)
 *         self._actuator_forcerange = _wrap_mjtNum_2d(p.actuator_forcerange, p.nu, 2)
 *         self._actuator_gear = _wrap_mjtNum_2d(p.actuator_gear, p.nu, 6)             # <<<<<<<<<<<<<<
 *         self._actuator_cranklength = _wrap_mjtNum_1d(p.actuator_cranklength, p.nu)
 *         self._actuator_invweight0 = _wrap_mjtNum_1d(p.actuator_invweight0, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->actuator_gear, __pyx_v_p->nu, 6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_gear);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_gear));
  __pyx_v_self->_actuator_gear = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1288
 *         self._actuator_forcerange = _wrap_mjtNum_2d(p.actuator_forcerange, p.nu, 2)
 *         self._actuator_gear = _wrap_mjtNum_2d(p.actuator_gear, p.nu, 6)
 *         self._actuator_cranklength = _wrap_mjtNum_1d(p.actuator_cranklength, p.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_invweight0 = _wrap_mjtNum_1d(p.actuator_invweight0, p.nu)
 *         self._actuator_length0 = _wrap_mjtNum_1d(p.actuator_length0, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->actuator_cranklength, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_cranklength);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_cranklength));
  __pyx_v_self->_actuator_cranklength = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1289
 *         self._actuator_gear = _wrap_mjtNum_2d(p.actuator_gear, p.nu, 6)
 *         self._actuator_cranklength = _wrap_mjtNum_1d(p.actuator_cranklength, p.nu)
 *         self._actuator_invweight0 = _wrap_mjtNum_1d(p.actuator_invweight0, p.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_length0 = _wrap_mjtNum_1d(p.actuator_length0, p.nu)
 *         self._actuator_lengthrange = _wrap_mjtNum_2d(p.actuator_lengthrange, p.nu, 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->actuator_invweight0, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_invweight0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_invweight0));
  __pyx_v_self->_actuator_invweight0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1290
 *         self._actuator_cranklength = _wrap_mjtNum_1d(p.actuator_cranklength, p.nu)
 *         self._actuator_invweight0 = _wrap_mjtNum_1d(p.actuator_invweight0, p.nu)
 *         self._actuator_length0 = _wrap_mjtNum_1d(p.actuator_length0, p.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_lengthrange = _wrap_mjtNum_2d(p.actuator_lengthrange, p.nu, 2)
 *         self._actuator_user = _wrap_mjtNum_2d(p.actuator_user, p.nu, p.nuser_actuator)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->actuator_length0, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_length0);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_length0));
  __pyx_v_self->_actuator_length0 = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1291
 *         self._actuator_invweight0 = _wrap_mjtNum_1d(p.actuator_invweight0, p.nu)
 *         self._actuator_length0 = _wrap_mjtNum_1d(p.actuator_length0, p.nu)
 *         self._actuator_lengthrange = _wrap_mjtNum_2d(p.actuator_lengthrange, p.nu, 2)             # <<<<<<<<<<<<<<
 *         self._actuator_user = _wrap_mjtNum_2d(p.actuator_user, p.nu, p.nuser_actuator)
 *         self._sensor_type = _wrap_int_1d(p.sensor_type, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->actuator_lengthrange, __pyx_v_p->nu, 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_lengthrange);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_lengthrange));
  __pyx_v_self->_actuator_lengthrange = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1292
 *         self._actuator_length0 = _wrap_mjtNum_1d(p.actuator_length0, p.nu)
 *         self._actuator_lengthrange = _wrap_mjtNum_2d(p.actuator_lengthrange, p.nu, 2)
 *         self._actuator_user = _wrap_mjtNum_2d(p.actuator_user, p.nu, p.nuser_actuator)             # <<<<<<<<<<<<<<
 *         self._sensor_type = _wrap_int_1d(p.sensor_type, p.nsensor)
 *         self._sensor_datatype = _wrap_int_1d(p.sensor_datatype, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->actuator_user, __pyx_v_p->nu, __pyx_v_p->nuser_actuator)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_user);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_user));
  __pyx_v_self->_actuator_user = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1293
 *         self._actuator_lengthrange = _wrap_mjtNum_2d(p.actuator_lengthrange, p.nu, 2)
 *         self._actuator_user = _wrap_mjtNum_2d(p.actuator_user, p.nu, p.nuser_actuator)
 *         self._sensor_type = _wrap_int_1d(p.sensor_type, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._sensor_datatype = _wrap_int_1d(p.sensor_datatype, p.nsensor)
 *         self._sensor_needstage = _wrap_int_1d(p.sensor_needstage, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->sensor_type, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_type);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_type));
  __pyx_v_self->_sensor_type = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1294
 *         self._actuator_user = _wrap_mjtNum_2d(p.actuator_user, p.nu, p.nuser_actuator)
 *         self._sensor_type = _wrap_int_1d(p.sensor_type, p.nsensor)
 *         self._sensor_datatype = _wrap_int_1d(p.sensor_datatype, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._sensor_needstage = _wrap_int_1d(p.sensor_needstage, p.nsensor)
 *         self._sensor_objtype = _wrap_int_1d(p.sensor_objtype, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->sensor_datatype, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_datatype);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_datatype));
  __pyx_v_self->_sensor_datatype = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1295
 *         self._sensor_type = _wrap_int_1d(p.sensor_type, p.nsensor)
 *         self._sensor_datatype = _wrap_int_1d(p.sensor_datatype, p.nsensor)
 *         self._sensor_needstage = _wrap_int_1d(p.sensor_needstage, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._sensor_objtype = _wrap_int_1d(p.sensor_objtype, p.nsensor)
 *         self._sensor_objid = _wrap_int_1d(p.sensor_objid, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->sensor_needstage, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_needstage);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_needstage));
  __pyx_v_self->_sensor_needstage = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1296
 *         self._sensor_datatype = _wrap_int_1d(p.sensor_datatype, p.nsensor)
 *         self._sensor_needstage = _wrap_int_1d(p.sensor_needstage, p.nsensor)
 *         self._sensor_objtype = _wrap_int_1d(p.sensor_objtype, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._sensor_objid = _wrap_int_1d(p.sensor_objid, p.nsensor)
 *         self._sensor_dim = _wrap_int_1d(p.sensor_dim, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->sensor_objtype, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_objtype);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_objtype));
  __pyx_v_self->_sensor_objtype = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1297
 *         self._sensor_needstage = _wrap_int_1d(p.sensor_needstage, p.nsensor)
 *         self._sensor_objtype = _wrap_int_1d(p.sensor_objtype, p.nsensor)
 *         self._sensor_objid = _wrap_int_1d(p.sensor_objid, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._sensor_dim = _wrap_int_1d(p.sensor_dim, p.nsensor)
 *         self._sensor_adr = _wrap_int_1d(p.sensor_adr, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->sensor_objid, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_objid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_objid));
  __pyx_v_self->_sensor_objid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1298
 *         self._sensor_objtype = _wrap_int_1d(p.sensor_objtype, p.nsensor)
 *         self._sensor_objid = _wrap_int_1d(p.sensor_objid, p.nsensor)
 *         self._sensor_dim = _wrap_int_1d(p.sensor_dim, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._sensor_adr = _wrap_int_1d(p.sensor_adr, p.nsensor)
 *         self._sensor_cutoff = _wrap_mjtNum_1d(p.sensor_cutoff, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->sensor_dim, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_dim);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_dim));
  __pyx_v_self->_sensor_dim = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1299
 *         self._sensor_objid = _wrap_int_1d(p.sensor_objid, p.nsensor)
 *         self._sensor_dim = _wrap_int_1d(p.sensor_dim, p.nsensor)
 *         self._sensor_adr = _wrap_int_1d(p.sensor_adr, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._sensor_cutoff = _wrap_mjtNum_1d(p.sensor_cutoff, p.nsensor)
 *         self._sensor_noise = _wrap_mjtNum_1d(p.sensor_noise, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->sensor_adr, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_adr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_adr));
  __pyx_v_self->_sensor_adr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1300
 *         self._sensor_dim = _wrap_int_1d(p.sensor_dim, p.nsensor)
 *         self._sensor_adr = _wrap_int_1d(p.sensor_adr, p.nsensor)
 *         self._sensor_cutoff = _wrap_mjtNum_1d(p.sensor_cutoff, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._sensor_noise = _wrap_mjtNum_1d(p.sensor_noise, p.nsensor)
 *         self._sensor_user = _wrap_mjtNum_2d(p.sensor_user, p.nsensor, p.nuser_sensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->sensor_cutoff, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_cutoff);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_cutoff));
  __pyx_v_self->_sensor_cutoff = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1301
 *         self._sensor_adr = _wrap_int_1d(p.sensor_adr, p.nsensor)
 *         self._sensor_cutoff = _wrap_mjtNum_1d(p.sensor_cutoff, p.nsensor)
 *         self._sensor_noise = _wrap_mjtNum_1d(p.sensor_noise, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._sensor_user = _wrap_mjtNum_2d(p.sensor_user, p.nsensor, p.nuser_sensor)
 *         self._numeric_adr = _wrap_int_1d(p.numeric_adr, p.nnumeric)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->sensor_noise, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_noise);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_noise));
  __pyx_v_self->_sensor_noise = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1302
 *         self._sensor_cutoff = _wrap_mjtNum_1d(p.sensor_cutoff, p.nsensor)
 *         self._sensor_noise = _wrap_mjtNum_1d(p.sensor_noise, p.nsensor)
 *         self._sensor_user = _wrap_mjtNum_2d(p.sensor_user, p.nsensor, p.nuser_sensor)             # <<<<<<<<<<<<<<
 *         self._numeric_adr = _wrap_int_1d(p.numeric_adr, p.nnumeric)
 *         self._numeric_size = _wrap_int_1d(p.numeric_size, p.nnumeric)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->sensor_user, __pyx_v_p->nsensor, __pyx_v_p->nuser_sensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensor_user);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensor_user));
  __pyx_v_self->_sensor_user = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1303
 *         self._sensor_noise = _wrap_mjtNum_1d(p.sensor_noise, p.nsensor)
 *         self._sensor_user = _wrap_mjtNum_2d(p.sensor_user, p.nsensor, p.nuser_sensor)
 *         self._numeric_adr = _wrap_int_1d(p.numeric_adr, p.nnumeric)             # <<<<<<<<<<<<<<
 *         self._numeric_size = _wrap_int_1d(p.numeric_size, p.nnumeric)
 *         self._numeric_data = _wrap_mjtNum_1d(p.numeric_data, p.nnumericdata)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->numeric_adr, __pyx_v_p->nnumeric)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_numeric_adr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_numeric_adr));
  __pyx_v_self->_numeric_adr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1304
 *         self._sensor_user = _wrap_mjtNum_2d(p.sensor_user, p.nsensor, p.nuser_sensor)
 *         self._numeric_adr = _wrap_int_1d(p.numeric_adr, p.nnumeric)
 *         self._numeric_size = _wrap_int_1d(p.numeric_size, p.nnumeric)             # <<<<<<<<<<<<<<
 *         self._numeric_data = _wrap_mjtNum_1d(p.numeric_data, p.nnumericdata)
 *         self._text_adr = _wrap_int_1d(p.text_adr, p.ntext)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->numeric_size, __pyx_v_p->nnumeric)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_numeric_size);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_numeric_size));
  __pyx_v_self->_numeric_size = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1305
 *         self._numeric_adr = _wrap_int_1d(p.numeric_adr, p.nnumeric)
 *         self._numeric_size = _wrap_int_1d(p.numeric_size, p.nnumeric)
 *         self._numeric_data = _wrap_mjtNum_1d(p.numeric_data, p.nnumericdata)             # <<<<<<<<<<<<<<
 *         self._text_adr = _wrap_int_1d(p.text_adr, p.ntext)
 *         self._text_size = _wrap_int_1d(p.text_size, p.ntext)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->numeric_data, __pyx_v_p->nnumericdata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_numeric_data);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_numeric_data));
  __pyx_v_self->_numeric_data = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1306
 *         self._numeric_size = _wrap_int_1d(p.numeric_size, p.nnumeric)
 *         self._numeric_data = _wrap_mjtNum_1d(p.numeric_data, p.nnumericdata)
 *         self._text_adr = _wrap_int_1d(p.text_adr, p.ntext)             # <<<<<<<<<<<<<<
 *         self._text_size = _wrap_int_1d(p.text_size, p.ntext)
 *         self._text_data = _wrap_char_1d(p.text_data, p.ntextdata)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->text_adr, __pyx_v_p->ntext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_text_adr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_text_adr));
  __pyx_v_self->_text_adr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1307
 *         self._numeric_data = _wrap_mjtNum_1d(p.numeric_data, p.nnumericdata)
 *         self._text_adr = _wrap_int_1d(p.text_adr, p.ntext)
 *         self._text_size = _wrap_int_1d(p.text_size, p.ntext)             # <<<<<<<<<<<<<<
 *         self._text_data = _wrap_char_1d(p.text_data, p.ntextdata)
 *         self._tuple_adr = _wrap_int_1d(p.tuple_adr, p.ntuple)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->text_size, __pyx_v_p->ntext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_text_size);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_text_size));
  __pyx_v_self->_text_size = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1308
 *         self._text_adr = _wrap_int_1d(p.text_adr, p.ntext)
 *         self._text_size = _wrap_int_1d(p.text_size, p.ntext)
 *         self._text_data = _wrap_char_1d(p.text_data, p.ntextdata)             # <<<<<<<<<<<<<<
 *         self._tuple_adr = _wrap_int_1d(p.tuple_adr, p.ntuple)
 *         self._tuple_size = _wrap_int_1d(p.tuple_size, p.ntuple)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_char_1d(__pyx_v_p->text_data, __pyx_v_p->ntextdata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_text_data);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_text_data));
  __pyx_v_self->_text_data = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1309
 *         self._text_size = _wrap_int_1d(p.text_size, p.ntext)
 *         self._text_data = _wrap_char_1d(p.text_data, p.ntextdata)
 *         self._tuple_adr = _wrap_int_1d(p.tuple_adr, p.ntuple)             # <<<<<<<<<<<<<<
 *         self._tuple_size = _wrap_int_1d(p.tuple_size, p.ntuple)
 *         self._tuple_objtype = _wrap_int_1d(p.tuple_objtype, p.ntupledata)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tuple_adr, __pyx_v_p->ntuple)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tuple_adr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tuple_adr));
  __pyx_v_self->_tuple_adr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1310
 *         self._text_data = _wrap_char_1d(p.text_data, p.ntextdata)
 *         self._tuple_adr = _wrap_int_1d(p.tuple_adr, p.ntuple)
 *         self._tuple_size = _wrap_int_1d(p.tuple_size, p.ntuple)             # <<<<<<<<<<<<<<
 *         self._tuple_objtype = _wrap_int_1d(p.tuple_objtype, p.ntupledata)
 *         self._tuple_objid = _wrap_int_1d(p.tuple_objid, p.ntupledata)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tuple_size, __pyx_v_p->ntuple)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tuple_size);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tuple_size));
  __pyx_v_self->_tuple_size = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1311
 *         self._tuple_adr = _wrap_int_1d(p.tuple_adr, p.ntuple)
 *         self._tuple_size = _wrap_int_1d(p.tuple_size, p.ntuple)
 *         self._tuple_objtype = _wrap_int_1d(p.tuple_objtype, p.ntupledata)             # <<<<<<<<<<<<<<
 *         self._tuple_objid = _wrap_int_1d(p.tuple_objid, p.ntupledata)
 *         self._tuple_objprm = _wrap_mjtNum_1d(p.tuple_objprm, p.ntupledata)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tuple_objtype, __pyx_v_p->ntupledata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tuple_objtype);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tuple_objtype));
  __pyx_v_self->_tuple_objtype = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1312
 *         self._tuple_size = _wrap_int_1d(p.tuple_size, p.ntuple)
 *         self._tuple_objtype = _wrap_int_1d(p.tuple_objtype, p.ntupledata)
 *         self._tuple_objid = _wrap_int_1d(p.tuple_objid, p.ntupledata)             # <<<<<<<<<<<<<<
 *         self._tuple_objprm = _wrap_mjtNum_1d(p.tuple_objprm, p.ntupledata)
 *         self._key_time = _wrap_mjtNum_1d(p.key_time, p.nkey)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->tuple_objid, __pyx_v_p->ntupledata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tuple_objid);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tuple_objid));
  __pyx_v_self->_tuple_objid = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1313
 *         self._tuple_objtype = _wrap_int_1d(p.tuple_objtype, p.ntupledata)
 *         self._tuple_objid = _wrap_int_1d(p.tuple_objid, p.ntupledata)
 *         self._tuple_objprm = _wrap_mjtNum_1d(p.tuple_objprm, p.ntupledata)             # <<<<<<<<<<<<<<
 *         self._key_time = _wrap_mjtNum_1d(p.key_time, p.nkey)
 *         self._key_qpos = _wrap_mjtNum_2d(p.key_qpos, p.nkey, p.nq)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->tuple_objprm, __pyx_v_p->ntupledata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_tuple_objprm);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_tuple_objprm));
  __pyx_v_self->_tuple_objprm = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1314
 *         self._tuple_objid = _wrap_int_1d(p.tuple_objid, p.ntupledata)
 *         self._tuple_objprm = _wrap_mjtNum_1d(p.tuple_objprm, p.ntupledata)
 *         self._key_time = _wrap_mjtNum_1d(p.key_time, p.nkey)             # <<<<<<<<<<<<<<
 *         self._key_qpos = _wrap_mjtNum_2d(p.key_qpos, p.nkey, p.nq)
 *         self._key_qvel = _wrap_mjtNum_2d(p.key_qvel, p.nkey, p.nv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->key_time, __pyx_v_p->nkey)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_key_time);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_key_time));
  __pyx_v_self->_key_time = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1315
 *         self._tuple_objprm = _wrap_mjtNum_1d(p.tuple_objprm, p.ntupledata)
 *         self._key_time = _wrap_mjtNum_1d(p.key_time, p.nkey)
 *         self._key_qpos = _wrap_mjtNum_2d(p.key_qpos, p.nkey, p.nq)             # <<<<<<<<<<<<<<
 *         self._key_qvel = _wrap_mjtNum_2d(p.key_qvel, p.nkey, p.nv)
 *         self._key_act = _wrap_mjtNum_2d(p.key_act, p.nkey, p.na)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->key_qpos, __pyx_v_p->nkey, __pyx_v_p->nq)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_key_qpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_key_qpos));
  __pyx_v_self->_key_qpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1316
 *         self._key_time = _wrap_mjtNum_1d(p.key_time, p.nkey)
 *         self._key_qpos = _wrap_mjtNum_2d(p.key_qpos, p.nkey, p.nq)
 *         self._key_qvel = _wrap_mjtNum_2d(p.key_qvel, p.nkey, p.nv)             # <<<<<<<<<<<<<<
 *         self._key_act = _wrap_mjtNum_2d(p.key_act, p.nkey, p.na)
 *         self._name_bodyadr = _wrap_int_1d(p.name_bodyadr, p.nbody)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->key_qvel, __pyx_v_p->nkey, __pyx_v_p->nv)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_key_qvel);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_key_qvel));
  __pyx_v_self->_key_qvel = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1317
 *         self._key_qpos = _wrap_mjtNum_2d(p.key_qpos, p.nkey, p.nq)
 *         self._key_qvel = _wrap_mjtNum_2d(p.key_qvel, p.nkey, p.nv)
 *         self._key_act = _wrap_mjtNum_2d(p.key_act, p.nkey, p.na)             # <<<<<<<<<<<<<<
 *         self._name_bodyadr = _wrap_int_1d(p.name_bodyadr, p.nbody)
 *         self._name_jntadr = _wrap_int_1d(p.name_jntadr, p.njnt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->key_act, __pyx_v_p->nkey, __pyx_v_p->na)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_key_act);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_key_act));
  __pyx_v_self->_key_act = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1318
 *         self._key_qvel = _wrap_mjtNum_2d(p.key_qvel, p.nkey, p.nv)
 *         self._key_act = _wrap_mjtNum_2d(p.key_act, p.nkey, p.na)
 *         self._name_bodyadr = _wrap_int_1d(p.name_bodyadr, p.nbody)             # <<<<<<<<<<<<<<
 *         self._name_jntadr = _wrap_int_1d(p.name_jntadr, p.njnt)
 *         self._name_geomadr = _wrap_int_1d(p.name_geomadr, p.ngeom)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_bodyadr, __pyx_v_p->nbody)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_bodyadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_bodyadr));
  __pyx_v_self->_name_bodyadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1319
 *         self._key_act = _wrap_mjtNum_2d(p.key_act, p.nkey, p.na)
 *         self._name_bodyadr = _wrap_int_1d(p.name_bodyadr, p.nbody)
 *         self._name_jntadr = _wrap_int_1d(p.name_jntadr, p.njnt)             # <<<<<<<<<<<<<<
 *         self._name_geomadr = _wrap_int_1d(p.name_geomadr, p.ngeom)
 *         self._name_siteadr = _wrap_int_1d(p.name_siteadr, p.nsite)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_jntadr, __pyx_v_p->njnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_jntadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_jntadr));
  __pyx_v_self->_name_jntadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1320
 *         self._name_bodyadr = _wrap_int_1d(p.name_bodyadr, p.nbody)
 *         self._name_jntadr = _wrap_int_1d(p.name_jntadr, p.njnt)
 *         self._name_geomadr = _wrap_int_1d(p.name_geomadr, p.ngeom)             # <<<<<<<<<<<<<<
 *         self._name_siteadr = _wrap_int_1d(p.name_siteadr, p.nsite)
 *         self._name_camadr = _wrap_int_1d(p.name_camadr, p.ncam)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_geomadr, __pyx_v_p->ngeom)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_geomadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_geomadr));
  __pyx_v_self->_name_geomadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1321
 *         self._name_jntadr = _wrap_int_1d(p.name_jntadr, p.njnt)
 *         self._name_geomadr = _wrap_int_1d(p.name_geomadr, p.ngeom)
 *         self._name_siteadr = _wrap_int_1d(p.name_siteadr, p.nsite)             # <<<<<<<<<<<<<<
 *         self._name_camadr = _wrap_int_1d(p.name_camadr, p.ncam)
 *         self._name_lightadr = _wrap_int_1d(p.name_lightadr, p.nlight)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_siteadr, __pyx_v_p->nsite)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_siteadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_siteadr));
  __pyx_v_self->_name_siteadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1322
 *         self._name_geomadr = _wrap_int_1d(p.name_geomadr, p.ngeom)
 *         self._name_siteadr = _wrap_int_1d(p.name_siteadr, p.nsite)
 *         self._name_camadr = _wrap_int_1d(p.name_camadr, p.ncam)             # <<<<<<<<<<<<<<
 *         self._name_lightadr = _wrap_int_1d(p.name_lightadr, p.nlight)
 *         self._name_meshadr = _wrap_int_1d(p.name_meshadr, p.nmesh)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_camadr, __pyx_v_p->ncam)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_camadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_camadr));
  __pyx_v_self->_name_camadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1323
 *         self._name_siteadr = _wrap_int_1d(p.name_siteadr, p.nsite)
 *         self._name_camadr = _wrap_int_1d(p.name_camadr, p.ncam)
 *         self._name_lightadr = _wrap_int_1d(p.name_lightadr, p.nlight)             # <<<<<<<<<<<<<<
 *         self._name_meshadr = _wrap_int_1d(p.name_meshadr, p.nmesh)
 *         self._name_hfieldadr = _wrap_int_1d(p.name_hfieldadr, p.nhfield)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_lightadr, __pyx_v_p->nlight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_lightadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_lightadr));
  __pyx_v_self->_name_lightadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1324
 *         self._name_camadr = _wrap_int_1d(p.name_camadr, p.ncam)
 *         self._name_lightadr = _wrap_int_1d(p.name_lightadr, p.nlight)
 *         self._name_meshadr = _wrap_int_1d(p.name_meshadr, p.nmesh)             # <<<<<<<<<<<<<<
 *         self._name_hfieldadr = _wrap_int_1d(p.name_hfieldadr, p.nhfield)
 *         self._name_texadr = _wrap_int_1d(p.name_texadr, p.ntex)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_meshadr, __pyx_v_p->nmesh)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_meshadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_meshadr));
  __pyx_v_self->_name_meshadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1325
 *         self._name_lightadr = _wrap_int_1d(p.name_lightadr, p.nlight)
 *         self._name_meshadr = _wrap_int_1d(p.name_meshadr, p.nmesh)
 *         self._name_hfieldadr = _wrap_int_1d(p.name_hfieldadr, p.nhfield)             # <<<<<<<<<<<<<<
 *         self._name_texadr = _wrap_int_1d(p.name_texadr, p.ntex)
 *         self._name_matadr = _wrap_int_1d(p.name_matadr, p.nmat)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_hfieldadr, __pyx_v_p->nhfield)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_hfieldadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_hfieldadr));
  __pyx_v_self->_name_hfieldadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1326
 *         self._name_meshadr = _wrap_int_1d(p.name_meshadr, p.nmesh)
 *         self._name_hfieldadr = _wrap_int_1d(p.name_hfieldadr, p.nhfield)
 *         self._name_texadr = _wrap_int_1d(p.name_texadr, p.ntex)             # <<<<<<<<<<<<<<
 *         self._name_matadr = _wrap_int_1d(p.name_matadr, p.nmat)
 *         self._name_eqadr = _wrap_int_1d(p.name_eqadr, p.neq)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_texadr, __pyx_v_p->ntex)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_texadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_texadr));
  __pyx_v_self->_name_texadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1327
 *         self._name_hfieldadr = _wrap_int_1d(p.name_hfieldadr, p.nhfield)
 *         self._name_texadr = _wrap_int_1d(p.name_texadr, p.ntex)
 *         self._name_matadr = _wrap_int_1d(p.name_matadr, p.nmat)             # <<<<<<<<<<<<<<
 *         self._name_eqadr = _wrap_int_1d(p.name_eqadr, p.neq)
 *         self._name_tendonadr = _wrap_int_1d(p.name_tendonadr, p.ntendon)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_matadr, __pyx_v_p->nmat)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_matadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_matadr));
  __pyx_v_self->_name_matadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1328
 *         self._name_texadr = _wrap_int_1d(p.name_texadr, p.ntex)
 *         self._name_matadr = _wrap_int_1d(p.name_matadr, p.nmat)
 *         self._name_eqadr = _wrap_int_1d(p.name_eqadr, p.neq)             # <<<<<<<<<<<<<<
 *         self._name_tendonadr = _wrap_int_1d(p.name_tendonadr, p.ntendon)
 *         self._name_actuatoradr = _wrap_int_1d(p.name_actuatoradr, p.nu)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_eqadr, __pyx_v_p->neq)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_eqadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_eqadr));
  __pyx_v_self->_name_eqadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1329
 *         self._name_matadr = _wrap_int_1d(p.name_matadr, p.nmat)
 *         self._name_eqadr = _wrap_int_1d(p.name_eqadr, p.neq)
 *         self._name_tendonadr = _wrap_int_1d(p.name_tendonadr, p.ntendon)             # <<<<<<<<<<<<<<
 *         self._name_actuatoradr = _wrap_int_1d(p.name_actuatoradr, p.nu)
 *         self._name_sensoradr = _wrap_int_1d(p.name_sensoradr, p.nsensor)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_tendonadr, __pyx_v_p->ntendon)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_tendonadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_tendonadr));
  __pyx_v_self->_name_tendonadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1330
 *         self._name_eqadr = _wrap_int_1d(p.name_eqadr, p.neq)
 *         self._name_tendonadr = _wrap_int_1d(p.name_tendonadr, p.ntendon)
 *         self._name_actuatoradr = _wrap_int_1d(p.name_actuatoradr, p.nu)             # <<<<<<<<<<<<<<
 *         self._name_sensoradr = _wrap_int_1d(p.name_sensoradr, p.nsensor)
 *         self._name_numericadr = _wrap_int_1d(p.name_numericadr, p.nnumeric)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_actuatoradr, __pyx_v_p->nu)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_actuatoradr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_actuatoradr));
  __pyx_v_self->_name_actuatoradr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1331
 *         self._name_tendonadr = _wrap_int_1d(p.name_tendonadr, p.ntendon)
 *         self._name_actuatoradr = _wrap_int_1d(p.name_actuatoradr, p.nu)
 *         self._name_sensoradr = _wrap_int_1d(p.name_sensoradr, p.nsensor)             # <<<<<<<<<<<<<<
 *         self._name_numericadr = _wrap_int_1d(p.name_numericadr, p.nnumeric)
 *         self._name_textadr = _wrap_int_1d(p.name_textadr, p.ntext)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_sensoradr, __pyx_v_p->nsensor)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_sensoradr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_sensoradr));
  __pyx_v_self->_name_sensoradr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1332
 *         self._name_actuatoradr = _wrap_int_1d(p.name_actuatoradr, p.nu)
 *         self._name_sensoradr = _wrap_int_1d(p.name_sensoradr, p.nsensor)
 *         self._name_numericadr = _wrap_int_1d(p.name_numericadr, p.nnumeric)             # <<<<<<<<<<<<<<
 *         self._name_textadr = _wrap_int_1d(p.name_textadr, p.ntext)
 *         self._name_tupleadr = _wrap_int_1d(p.name_tupleadr, p.ntuple)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_numericadr, __pyx_v_p->nnumeric)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_numericadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_numericadr));
  __pyx_v_self->_name_numericadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1333
 *         self._name_sensoradr = _wrap_int_1d(p.name_sensoradr, p.nsensor)
 *         self._name_numericadr = _wrap_int_1d(p.name_numericadr, p.nnumeric)
 *         self._name_textadr = _wrap_int_1d(p.name_textadr, p.ntext)             # <<<<<<<<<<<<<<
 *         self._name_tupleadr = _wrap_int_1d(p.name_tupleadr, p.ntuple)
 *         self._names = _wrap_char_1d(p.names, p.nnames)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_textadr, __pyx_v_p->ntext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_textadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_textadr));
  __pyx_v_self->_name_textadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1334
 *         self._name_numericadr = _wrap_int_1d(p.name_numericadr, p.nnumeric)
 *         self._name_textadr = _wrap_int_1d(p.name_textadr, p.ntext)
 *         self._name_tupleadr = _wrap_int_1d(p.name_tupleadr, p.ntuple)             # <<<<<<<<<<<<<<
 *         self._names = _wrap_char_1d(p.names, p.nnames)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->name_tupleadr, __pyx_v_p->ntuple)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name_tupleadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_name_tupleadr));
  __pyx_v_self->_name_tupleadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1335
 *         self._name_textadr = _wrap_int_1d(p.name_textadr, p.ntext)
 *         self._name_tupleadr = _wrap_int_1d(p.name_tupleadr, p.ntuple)
 *         self._names = _wrap_char_1d(p.names, p.nnames)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_char_1d(__pyx_v_p->names, __pyx_v_p->nnames)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_names);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_names));
  __pyx_v_self->_names = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":1088
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjModel* p):             # <<<<<<<<<<<<<<
 * 
 *         self.body_names, self._body_name2id, self._body_id2name = self._extract_mj_names(p, p.name_bodyadr, p.nbody, mjtObj.mjOBJ_BODY)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjModel._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":1338
 * 
 *     @property
 *     def nq(self): return self.ptr.nq             # <<<<<<<<<<<<<<
 *     @nq.setter
 *     def nq(self, int x): self.ptr.nq = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nq_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nq_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nq___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nq___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nq); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nq.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1340
 *     def nq(self): return self.ptr.nq
 *     @nq.setter
 *     def nq(self, int x): self.ptr.nq = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nv(self): return self.ptr.nv
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nq_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nq_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1340, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nq.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nq_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nq_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nq = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1342
 *     def nq(self, int x): self.ptr.nq = x
 *     @property
 *     def nv(self): return self.ptr.nv             # <<<<<<<<<<<<<<
 *     @nv.setter
 *     def nv(self, int x): self.ptr.nv = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nv_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nv_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nv___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nv___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nv.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1344
 *     def nv(self): return self.ptr.nv
 *     @nv.setter
 *     def nv(self, int x): self.ptr.nv = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nu(self): return self.ptr.nu
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nv_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nv_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1344, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nv.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nv_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nv_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nv = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1346
 *     def nv(self, int x): self.ptr.nv = x
 *     @property
 *     def nu(self): return self.ptr.nu             # <<<<<<<<<<<<<<
 *     @nu.setter
 *     def nu(self, int x): self.ptr.nu = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nu_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nu_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nu___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nu___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nu); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nu.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1348
 *     def nu(self): return self.ptr.nu
 *     @nu.setter
 *     def nu(self, int x): self.ptr.nu = x             # <<<<<<<<<<<<<<
 *     @property
 *     def na(self): return self.ptr.na
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nu_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nu_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1348, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nu.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nu_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nu_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nu = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1350
 *     def nu(self, int x): self.ptr.nu = x
 *     @property
 *     def na(self): return self.ptr.na             # <<<<<<<<<<<<<<
 *     @na.setter
 *     def na(self, int x): self.ptr.na = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2na_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2na_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2na___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2na___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->na); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.na.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1352
 *     def na(self): return self.ptr.na
 *     @na.setter
 *     def na(self, int x): self.ptr.na = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nbody(self): return self.ptr.nbody
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2na_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2na_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1352, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.na.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2na_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2na_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->na = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1354
 *     def na(self, int x): self.ptr.na = x
 *     @property
 *     def nbody(self): return self.ptr.nbody             # <<<<<<<<<<<<<<
 *     @nbody.setter
 *     def nbody(self, int x): self.ptr.nbody = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nbody_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nbody_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nbody___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nbody___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nbody.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1356
 *     def nbody(self): return self.ptr.nbody
 *     @nbody.setter
 *     def nbody(self, int x): self.ptr.nbody = x             # <<<<<<<<<<<<<<
 *     @property
 *     def njnt(self): return self.ptr.njnt
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nbody_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nbody_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1356, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nbody.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nbody_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nbody_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nbody = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1358
 *     def nbody(self, int x): self.ptr.nbody = x
 *     @property
 *     def njnt(self): return self.ptr.njnt             # <<<<<<<<<<<<<<
 *     @njnt.setter
 *     def njnt(self, int x): self.ptr.njnt = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4njnt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4njnt_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4njnt___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4njnt___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->njnt); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.njnt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1360
 *     def njnt(self): return self.ptr.njnt
 *     @njnt.setter
 *     def njnt(self, int x): self.ptr.njnt = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ngeom(self): return self.ptr.ngeom
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4njnt_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4njnt_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1360, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.njnt.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4njnt_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4njnt_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->njnt = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1362
 *     def njnt(self, int x): self.ptr.njnt = x
 *     @property
 *     def ngeom(self): return self.ptr.ngeom             # <<<<<<<<<<<<<<
 *     @ngeom.setter
 *     def ngeom(self, int x): self.ptr.ngeom = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ngeom_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ngeom_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ngeom___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ngeom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ngeom); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ngeom.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1364
 *     def ngeom(self): return self.ptr.ngeom
 *     @ngeom.setter
 *     def ngeom(self, int x): self.ptr.ngeom = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nsite(self): return self.ptr.nsite
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ngeom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ngeom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1364, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ngeom.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ngeom_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ngeom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ngeom = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1366
 *     def ngeom(self, int x): self.ptr.ngeom = x
 *     @property
 *     def nsite(self): return self.ptr.nsite             # <<<<<<<<<<<<<<
 *     @nsite.setter
 *     def nsite(self, int x): self.ptr.nsite = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nsite_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nsite_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nsite___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nsite___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nsite); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nsite.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1368
 *     def nsite(self): return self.ptr.nsite
 *     @nsite.setter
 *     def nsite(self, int x): self.ptr.nsite = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ncam(self): return self.ptr.ncam
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nsite_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nsite_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1368, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nsite.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nsite_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nsite_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nsite = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1370
 *     def nsite(self, int x): self.ptr.nsite = x
 *     @property
 *     def ncam(self): return self.ptr.ncam             # <<<<<<<<<<<<<<
 *     @ncam.setter
 *     def ncam(self, int x): self.ptr.ncam = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ncam_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ncam_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ncam___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ncam___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ncam); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ncam.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1372
 *     def ncam(self): return self.ptr.ncam
 *     @ncam.setter
 *     def ncam(self, int x): self.ptr.ncam = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nlight(self): return self.ptr.nlight
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ncam_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ncam_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1372, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ncam.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ncam_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ncam_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ncam = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1374
 *     def ncam(self, int x): self.ptr.ncam = x
 *     @property
 *     def nlight(self): return self.ptr.nlight             # <<<<<<<<<<<<<<
 *     @nlight.setter
 *     def nlight(self, int x): self.ptr.nlight = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nlight_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nlight_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nlight___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nlight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nlight); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nlight.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1376
 *     def nlight(self): return self.ptr.nlight
 *     @nlight.setter
 *     def nlight(self, int x): self.ptr.nlight = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nmesh(self): return self.ptr.nmesh
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nlight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nlight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1376, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nlight.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nlight_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nlight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nlight = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1378
 *     def nlight(self, int x): self.ptr.nlight = x
 *     @property
 *     def nmesh(self): return self.ptr.nmesh             # <<<<<<<<<<<<<<
 *     @nmesh.setter
 *     def nmesh(self, int x): self.ptr.nmesh = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nmesh_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nmesh_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nmesh___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nmesh___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nmesh); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmesh.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1380
 *     def nmesh(self): return self.ptr.nmesh
 *     @nmesh.setter
 *     def nmesh(self, int x): self.ptr.nmesh = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nmeshvert(self): return self.ptr.nmeshvert
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nmesh_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nmesh_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1380, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmesh.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nmesh_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nmesh_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nmesh = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1382
 *     def nmesh(self, int x): self.ptr.nmesh = x
 *     @property
 *     def nmeshvert(self): return self.ptr.nmeshvert             # <<<<<<<<<<<<<<
 *     @nmeshvert.setter
 *     def nmeshvert(self, int x): self.ptr.nmeshvert = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshvert_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshvert_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshvert___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshvert___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nmeshvert); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmeshvert.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1384
 *     def nmeshvert(self): return self.ptr.nmeshvert
 *     @nmeshvert.setter
 *     def nmeshvert(self, int x): self.ptr.nmeshvert = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nmeshface(self): return self.ptr.nmeshface
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshvert_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshvert_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1384, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmeshvert.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshvert_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshvert_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nmeshvert = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1386
 *     def nmeshvert(self, int x): self.ptr.nmeshvert = x
 *     @property
 *     def nmeshface(self): return self.ptr.nmeshface             # <<<<<<<<<<<<<<
 *     @nmeshface.setter
 *     def nmeshface(self, int x): self.ptr.nmeshface = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshface_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshface_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshface___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshface___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nmeshface); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmeshface.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1388
 *     def nmeshface(self): return self.ptr.nmeshface
 *     @nmeshface.setter
 *     def nmeshface(self, int x): self.ptr.nmeshface = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nmeshgraph(self): return self.ptr.nmeshgraph
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshface_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshface_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1388, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmeshface.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshface_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nmeshface_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nmeshface = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1390
 *     def nmeshface(self, int x): self.ptr.nmeshface = x
 *     @property
 *     def nmeshgraph(self): return self.ptr.nmeshgraph             # <<<<<<<<<<<<<<
 *     @nmeshgraph.setter
 *     def nmeshgraph(self, int x): self.ptr.nmeshgraph = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nmeshgraph); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmeshgraph.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1392
 *     def nmeshgraph(self): return self.ptr.nmeshgraph
 *     @nmeshgraph.setter
 *     def nmeshgraph(self, int x): self.ptr.nmeshgraph = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nhfield(self): return self.ptr.nhfield
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1392, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmeshgraph.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nmeshgraph = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1394
 *     def nmeshgraph(self, int x): self.ptr.nmeshgraph = x
 *     @property
 *     def nhfield(self): return self.ptr.nhfield             # <<<<<<<<<<<<<<
 *     @nhfield.setter
 *     def nhfield(self, int x): self.ptr.nhfield = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nhfield_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nhfield_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nhfield___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nhfield___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nhfield); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nhfield.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1396
 *     def nhfield(self): return self.ptr.nhfield
 *     @nhfield.setter
 *     def nhfield(self, int x): self.ptr.nhfield = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nhfielddata(self): return self.ptr.nhfielddata
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nhfield_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nhfield_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1396, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nhfield.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nhfield_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nhfield_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nhfield = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1398
 *     def nhfield(self, int x): self.ptr.nhfield = x
 *     @property
 *     def nhfielddata(self): return self.ptr.nhfielddata             # <<<<<<<<<<<<<<
 *     @nhfielddata.setter
 *     def nhfielddata(self, int x): self.ptr.nhfielddata = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nhfielddata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nhfielddata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nhfielddata___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nhfielddata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nhfielddata); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nhfielddata.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1400
 *     def nhfielddata(self): return self.ptr.nhfielddata
 *     @nhfielddata.setter
 *     def nhfielddata(self, int x): self.ptr.nhfielddata = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ntex(self): return self.ptr.ntex
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nhfielddata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nhfielddata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1400, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nhfielddata.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nhfielddata_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nhfielddata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nhfielddata = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1402
 *     def nhfielddata(self, int x): self.ptr.nhfielddata = x
 *     @property
 *     def ntex(self): return self.ptr.ntex             # <<<<<<<<<<<<<<
 *     @ntex.setter
 *     def ntex(self, int x): self.ptr.ntex = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ntex_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ntex_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ntex___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ntex___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ntex); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntex.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1404
 *     def ntex(self): return self.ptr.ntex
 *     @ntex.setter
 *     def ntex(self, int x): self.ptr.ntex = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ntexdata(self): return self.ptr.ntexdata
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ntex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ntex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1404, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntex.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ntex_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4ntex_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ntex = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1406
 *     def ntex(self, int x): self.ptr.ntex = x
 *     @property
 *     def ntexdata(self): return self.ptr.ntexdata             # <<<<<<<<<<<<<<
 *     @ntexdata.setter
 *     def ntexdata(self, int x): self.ptr.ntexdata = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8ntexdata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8ntexdata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8ntexdata___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8ntexdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ntexdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntexdata.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1408
 *     def ntexdata(self): return self.ptr.ntexdata
 *     @ntexdata.setter
 *     def ntexdata(self, int x): self.ptr.ntexdata = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nmat(self): return self.ptr.nmat
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8ntexdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8ntexdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1408, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntexdata.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8ntexdata_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8ntexdata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ntexdata = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1410
 *     def ntexdata(self, int x): self.ptr.ntexdata = x
 *     @property
 *     def nmat(self): return self.ptr.nmat             # <<<<<<<<<<<<<<
 *     @nmat.setter
 *     def nmat(self, int x): self.ptr.nmat = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nmat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nmat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nmat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nmat); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmat.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1412
 *     def nmat(self): return self.ptr.nmat
 *     @nmat.setter
 *     def nmat(self, int x): self.ptr.nmat = x             # <<<<<<<<<<<<<<
 *     @property
 *     def npair(self): return self.ptr.npair
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nmat_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nmat_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1412, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmat.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nmat_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nmat_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nmat = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1414
 *     def nmat(self, int x): self.ptr.nmat = x
 *     @property
 *     def npair(self): return self.ptr.npair             # <<<<<<<<<<<<<<
 *     @npair.setter
 *     def npair(self, int x): self.ptr.npair = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5npair_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5npair_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5npair___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5npair___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->npair); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.npair.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1416
 *     def npair(self): return self.ptr.npair
 *     @npair.setter
 *     def npair(self, int x): self.ptr.npair = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nexclude(self): return self.ptr.nexclude
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5npair_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5npair_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1416, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.npair.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5npair_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5npair_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->npair = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1418
 *     def npair(self, int x): self.ptr.npair = x
 *     @property
 *     def nexclude(self): return self.ptr.nexclude             # <<<<<<<<<<<<<<
 *     @nexclude.setter
 *     def nexclude(self, int x): self.ptr.nexclude = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nexclude_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nexclude_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nexclude___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nexclude___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nexclude); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nexclude.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1420
 *     def nexclude(self): return self.ptr.nexclude
 *     @nexclude.setter
 *     def nexclude(self, int x): self.ptr.nexclude = x             # <<<<<<<<<<<<<<
 *     @property
 *     def neq(self): return self.ptr.neq
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nexclude_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nexclude_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1420, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nexclude.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nexclude_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nexclude_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nexclude = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1422
 *     def nexclude(self, int x): self.ptr.nexclude = x
 *     @property
 *     def neq(self): return self.ptr.neq             # <<<<<<<<<<<<<<
 *     @neq.setter
 *     def neq(self, int x): self.ptr.neq = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_3neq_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_3neq_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_3neq___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_3neq___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->neq); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.neq.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1424
 *     def neq(self): return self.ptr.neq
 *     @neq.setter
 *     def neq(self, int x): self.ptr.neq = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ntendon(self): return self.ptr.ntendon
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_3neq_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_3neq_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1424, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.neq.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_3neq_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_3neq_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->neq = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1426
 *     def neq(self, int x): self.ptr.neq = x
 *     @property
 *     def ntendon(self): return self.ptr.ntendon             # <<<<<<<<<<<<<<
 *     @ntendon.setter
 *     def ntendon(self, int x): self.ptr.ntendon = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7ntendon_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7ntendon_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7ntendon___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7ntendon___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ntendon); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntendon.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1428
 *     def ntendon(self): return self.ptr.ntendon
 *     @ntendon.setter
 *     def ntendon(self, int x): self.ptr.ntendon = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nwrap(self): return self.ptr.nwrap
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7ntendon_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7ntendon_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1428, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntendon.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7ntendon_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7ntendon_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ntendon = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1430
 *     def ntendon(self, int x): self.ptr.ntendon = x
 *     @property
 *     def nwrap(self): return self.ptr.nwrap             # <<<<<<<<<<<<<<
 *     @nwrap.setter
 *     def nwrap(self, int x): self.ptr.nwrap = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nwrap_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nwrap_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nwrap___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nwrap___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nwrap); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nwrap.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1432
 *     def nwrap(self): return self.ptr.nwrap
 *     @nwrap.setter
 *     def nwrap(self, int x): self.ptr.nwrap = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nsensor(self): return self.ptr.nsensor
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nwrap_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nwrap_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1432, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nwrap.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nwrap_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nwrap_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nwrap = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1434
 *     def nwrap(self, int x): self.ptr.nwrap = x
 *     @property
 *     def nsensor(self): return self.ptr.nsensor             # <<<<<<<<<<<<<<
 *     @nsensor.setter
 *     def nsensor(self, int x): self.ptr.nsensor = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nsensor_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nsensor_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nsensor___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nsensor___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nsensor); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nsensor.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1436
 *     def nsensor(self): return self.ptr.nsensor
 *     @nsensor.setter
 *     def nsensor(self, int x): self.ptr.nsensor = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nnumeric(self): return self.ptr.nnumeric
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nsensor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nsensor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1436, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nsensor.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nsensor_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nsensor_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nsensor = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1438
 *     def nsensor(self, int x): self.ptr.nsensor = x
 *     @property
 *     def nnumeric(self): return self.ptr.nnumeric             # <<<<<<<<<<<<<<
 *     @nnumeric.setter
 *     def nnumeric(self, int x): self.ptr.nnumeric = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nnumeric_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nnumeric_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nnumeric___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nnumeric___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nnumeric); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nnumeric.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1440
 *     def nnumeric(self): return self.ptr.nnumeric
 *     @nnumeric.setter
 *     def nnumeric(self, int x): self.ptr.nnumeric = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nnumericdata(self): return self.ptr.nnumericdata
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nnumeric_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nnumeric_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1440, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nnumeric.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nnumeric_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8nnumeric_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nnumeric = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1442
 *     def nnumeric(self, int x): self.ptr.nnumeric = x
 *     @property
 *     def nnumericdata(self): return self.ptr.nnumericdata             # <<<<<<<<<<<<<<
 *     @nnumericdata.setter
 *     def nnumericdata(self, int x): self.ptr.nnumericdata = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nnumericdata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nnumericdata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nnumericdata___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nnumericdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nnumericdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nnumericdata.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1444
 *     def nnumericdata(self): return self.ptr.nnumericdata
 *     @nnumericdata.setter
 *     def nnumericdata(self, int x): self.ptr.nnumericdata = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ntext(self): return self.ptr.ntext
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nnumericdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nnumericdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1444, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nnumericdata.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nnumericdata_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nnumericdata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nnumericdata = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1446
 *     def nnumericdata(self, int x): self.ptr.nnumericdata = x
 *     @property
 *     def ntext(self): return self.ptr.ntext             # <<<<<<<<<<<<<<
 *     @ntext.setter
 *     def ntext(self, int x): self.ptr.ntext = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ntext_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ntext_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ntext___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ntext___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ntext); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntext.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1448
 *     def ntext(self): return self.ptr.ntext
 *     @ntext.setter
 *     def ntext(self, int x): self.ptr.ntext = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ntextdata(self): return self.ptr.ntextdata
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ntext_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ntext_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1448, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntext.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ntext_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5ntext_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ntext = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1450
 *     def ntext(self, int x): self.ptr.ntext = x
 *     @property
 *     def ntextdata(self): return self.ptr.ntextdata             # <<<<<<<<<<<<<<
 *     @ntextdata.setter
 *     def ntextdata(self, int x): self.ptr.ntextdata = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9ntextdata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9ntextdata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9ntextdata___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9ntextdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ntextdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntextdata.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1452
 *     def ntextdata(self): return self.ptr.ntextdata
 *     @ntextdata.setter
 *     def ntextdata(self, int x): self.ptr.ntextdata = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ntuple(self): return self.ptr.ntuple
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9ntextdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9ntextdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1452, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntextdata.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9ntextdata_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9ntextdata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ntextdata = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1454
 *     def ntextdata(self, int x): self.ptr.ntextdata = x
 *     @property
 *     def ntuple(self): return self.ptr.ntuple             # <<<<<<<<<<<<<<
 *     @ntuple.setter
 *     def ntuple(self, int x): self.ptr.ntuple = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6ntuple_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6ntuple_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6ntuple___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6ntuple___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ntuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntuple.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1456
 *     def ntuple(self): return self.ptr.ntuple
 *     @ntuple.setter
 *     def ntuple(self, int x): self.ptr.ntuple = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ntupledata(self): return self.ptr.ntupledata
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6ntuple_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6ntuple_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1456, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntuple.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6ntuple_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6ntuple_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ntuple = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1458
 *     def ntuple(self, int x): self.ptr.ntuple = x
 *     @property
 *     def ntupledata(self): return self.ptr.ntupledata             # <<<<<<<<<<<<<<
 *     @ntupledata.setter
 *     def ntupledata(self, int x): self.ptr.ntupledata = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10ntupledata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10ntupledata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10ntupledata___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10ntupledata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ntupledata); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntupledata.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1460
 *     def ntupledata(self): return self.ptr.ntupledata
 *     @ntupledata.setter
 *     def ntupledata(self, int x): self.ptr.ntupledata = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nkey(self): return self.ptr.nkey
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10ntupledata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10ntupledata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1460, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.ntupledata.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10ntupledata_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10ntupledata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ntupledata = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1462
 *     def ntupledata(self, int x): self.ptr.ntupledata = x
 *     @property
 *     def nkey(self): return self.ptr.nkey             # <<<<<<<<<<<<<<
 *     @nkey.setter
 *     def nkey(self, int x): self.ptr.nkey = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nkey_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nkey_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nkey___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nkey___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nkey); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nkey.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1464
 *     def nkey(self): return self.ptr.nkey
 *     @nkey.setter
 *     def nkey(self, int x): self.ptr.nkey = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nuser_body(self): return self.ptr.nuser_body
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nkey_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nkey_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1464, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nkey.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nkey_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4nkey_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nkey = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1466
 *     def nkey(self, int x): self.ptr.nkey = x
 *     @property
 *     def nuser_body(self): return self.ptr.nuser_body             # <<<<<<<<<<<<<<
 *     @nuser_body.setter
 *     def nuser_body(self, int x): self.ptr.nuser_body = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_body_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_body_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_body___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_body___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nuser_body); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_body.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1468
 *     def nuser_body(self): return self.ptr.nuser_body
 *     @nuser_body.setter
 *     def nuser_body(self, int x): self.ptr.nuser_body = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nuser_jnt(self): return self.ptr.nuser_jnt
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_body_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_body_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1468, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_body.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_body_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_body_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nuser_body = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1470
 *     def nuser_body(self, int x): self.ptr.nuser_body = x
 *     @property
 *     def nuser_jnt(self): return self.ptr.nuser_jnt             # <<<<<<<<<<<<<<
 *     @nuser_jnt.setter
 *     def nuser_jnt(self, int x): self.ptr.nuser_jnt = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nuser_jnt); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_jnt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1472
 *     def nuser_jnt(self): return self.ptr.nuser_jnt
 *     @nuser_jnt.setter
 *     def nuser_jnt(self, int x): self.ptr.nuser_jnt = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nuser_geom(self): return self.ptr.nuser_geom
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1472, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_jnt.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nuser_jnt = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1474
 *     def nuser_jnt(self, int x): self.ptr.nuser_jnt = x
 *     @property
 *     def nuser_geom(self): return self.ptr.nuser_geom             # <<<<<<<<<<<<<<
 *     @nuser_geom.setter
 *     def nuser_geom(self, int x): self.ptr.nuser_geom = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_geom_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_geom_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_geom___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_geom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nuser_geom); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_geom.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1476
 *     def nuser_geom(self): return self.ptr.nuser_geom
 *     @nuser_geom.setter
 *     def nuser_geom(self, int x): self.ptr.nuser_geom = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nuser_site(self): return self.ptr.nuser_site
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_geom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_geom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1476, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_geom.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_geom_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_geom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nuser_geom = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1478
 *     def nuser_geom(self, int x): self.ptr.nuser_geom = x
 *     @property
 *     def nuser_site(self): return self.ptr.nuser_site             # <<<<<<<<<<<<<<
 *     @nuser_site.setter
 *     def nuser_site(self, int x): self.ptr.nuser_site = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_site_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_site_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_site___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_site___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nuser_site); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_site.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1480
 *     def nuser_site(self): return self.ptr.nuser_site
 *     @nuser_site.setter
 *     def nuser_site(self, int x): self.ptr.nuser_site = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nuser_cam(self): return self.ptr.nuser_cam
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_site_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_site_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1480, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_site.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_site_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10nuser_site_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nuser_site = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1482
 *     def nuser_site(self, int x): self.ptr.nuser_site = x
 *     @property
 *     def nuser_cam(self): return self.ptr.nuser_cam             # <<<<<<<<<<<<<<
 *     @nuser_cam.setter
 *     def nuser_cam(self, int x): self.ptr.nuser_cam = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_cam_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_cam_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_cam___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_cam___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nuser_cam); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_cam.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1484
 *     def nuser_cam(self): return self.ptr.nuser_cam
 *     @nuser_cam.setter
 *     def nuser_cam(self, int x): self.ptr.nuser_cam = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nuser_tendon(self): return self.ptr.nuser_tendon
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_cam_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_cam_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1484, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_cam.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_cam_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuser_cam_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nuser_cam = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1486
 *     def nuser_cam(self, int x): self.ptr.nuser_cam = x
 *     @property
 *     def nuser_tendon(self): return self.ptr.nuser_tendon             # <<<<<<<<<<<<<<
 *     @nuser_tendon.setter
 *     def nuser_tendon(self, int x): self.ptr.nuser_tendon = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nuser_tendon); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_tendon.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1488
 *     def nuser_tendon(self): return self.ptr.nuser_tendon
 *     @nuser_tendon.setter
 *     def nuser_tendon(self, int x): self.ptr.nuser_tendon = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nuser_actuator(self): return self.ptr.nuser_actuator
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1488, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_tendon.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nuser_tendon = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1490
 *     def nuser_tendon(self, int x): self.ptr.nuser_tendon = x
 *     @property
 *     def nuser_actuator(self): return self.ptr.nuser_actuator             # <<<<<<<<<<<<<<
 *     @nuser_actuator.setter
 *     def nuser_actuator(self, int x): self.ptr.nuser_actuator = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nuser_actuator); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_actuator.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1492
 *     def nuser_actuator(self): return self.ptr.nuser_actuator
 *     @nuser_actuator.setter
 *     def nuser_actuator(self, int x): self.ptr.nuser_actuator = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nuser_sensor(self): return self.ptr.nuser_sensor
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1492, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_actuator.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nuser_actuator = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1494
 *     def nuser_actuator(self, int x): self.ptr.nuser_actuator = x
 *     @property
 *     def nuser_sensor(self): return self.ptr.nuser_sensor             # <<<<<<<<<<<<<<
 *     @nuser_sensor.setter
 *     def nuser_sensor(self, int x): self.ptr.nuser_sensor = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nuser_sensor); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_sensor.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1496
 *     def nuser_sensor(self): return self.ptr.nuser_sensor
 *     @nuser_sensor.setter
 *     def nuser_sensor(self, int x): self.ptr.nuser_sensor = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nnames(self): return self.ptr.nnames
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1496, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuser_sensor.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nuser_sensor = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1498
 *     def nuser_sensor(self, int x): self.ptr.nuser_sensor = x
 *     @property
 *     def nnames(self): return self.ptr.nnames             # <<<<<<<<<<<<<<
 *     @nnames.setter
 *     def nnames(self, int x): self.ptr.nnames = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nnames_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nnames_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nnames___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nnames___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nnames); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nnames.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1500
 *     def nnames(self): return self.ptr.nnames
 *     @nnames.setter
 *     def nnames(self, int x): self.ptr.nnames = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nM(self): return self.ptr.nM
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nnames_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nnames_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1500, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nnames.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nnames_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nnames_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nnames = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1502
 *     def nnames(self, int x): self.ptr.nnames = x
 *     @property
 *     def nM(self): return self.ptr.nM             # <<<<<<<<<<<<<<
 *     @nM.setter
 *     def nM(self, int x): self.ptr.nM = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nM_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nM_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nM___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nM___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nM); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nM.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1504
 *     def nM(self): return self.ptr.nM
 *     @nM.setter
 *     def nM(self, int x): self.ptr.nM = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nemax(self): return self.ptr.nemax
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nM_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nM_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1504, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nM.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nM_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_2nM_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nM = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1506
 *     def nM(self, int x): self.ptr.nM = x
 *     @property
 *     def nemax(self): return self.ptr.nemax             # <<<<<<<<<<<<<<
 *     @nemax.setter
 *     def nemax(self, int x): self.ptr.nemax = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nemax_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nemax_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nemax___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nemax___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nemax); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nemax.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1508
 *     def nemax(self): return self.ptr.nemax
 *     @nemax.setter
 *     def nemax(self, int x): self.ptr.nemax = x             # <<<<<<<<<<<<<<
 *     @property
 *     def njmax(self): return self.ptr.njmax
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nemax_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nemax_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1508, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nemax.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nemax_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5nemax_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nemax = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1510
 *     def nemax(self, int x): self.ptr.nemax = x
 *     @property
 *     def njmax(self): return self.ptr.njmax             # <<<<<<<<<<<<<<
 *     @njmax.setter
 *     def njmax(self, int x): self.ptr.njmax = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5njmax_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5njmax_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5njmax___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5njmax___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->njmax); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.njmax.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1512
 *     def njmax(self): return self.ptr.njmax
 *     @njmax.setter
 *     def njmax(self, int x): self.ptr.njmax = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nconmax(self): return self.ptr.nconmax
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5njmax_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5njmax_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1512, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.njmax.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5njmax_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5njmax_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->njmax = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1514
 *     def njmax(self, int x): self.ptr.njmax = x
 *     @property
 *     def nconmax(self): return self.ptr.nconmax             # <<<<<<<<<<<<<<
 *     @nconmax.setter
 *     def nconmax(self, int x): self.ptr.nconmax = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nconmax_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nconmax_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nconmax___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nconmax___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nconmax); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nconmax.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1516
 *     def nconmax(self): return self.ptr.nconmax
 *     @nconmax.setter
 *     def nconmax(self, int x): self.ptr.nconmax = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nstack(self): return self.ptr.nstack
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nconmax_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nconmax_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1516, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nconmax.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nconmax_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nconmax_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nconmax = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1518
 *     def nconmax(self, int x): self.ptr.nconmax = x
 *     @property
 *     def nstack(self): return self.ptr.nstack             # <<<<<<<<<<<<<<
 *     @nstack.setter
 *     def nstack(self, int x): self.ptr.nstack = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nstack_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nstack_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nstack___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nstack___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nstack); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nstack.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1520
 *     def nstack(self): return self.ptr.nstack
 *     @nstack.setter
 *     def nstack(self, int x): self.ptr.nstack = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nuserdata(self): return self.ptr.nuserdata
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nstack_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nstack_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1520, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nstack.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nstack_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nstack_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nstack = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1522
 *     def nstack(self, int x): self.ptr.nstack = x
 *     @property
 *     def nuserdata(self): return self.ptr.nuserdata             # <<<<<<<<<<<<<<
 *     @nuserdata.setter
 *     def nuserdata(self, int x): self.ptr.nuserdata = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuserdata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuserdata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuserdata___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuserdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nuserdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuserdata.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1524
 *     def nuserdata(self): return self.ptr.nuserdata
 *     @nuserdata.setter
 *     def nuserdata(self, int x): self.ptr.nuserdata = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nmocap(self): return self.ptr.nmocap
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuserdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuserdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1524, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nuserdata.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuserdata_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9nuserdata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nuserdata = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1526
 *     def nuserdata(self, int x): self.ptr.nuserdata = x
 *     @property
 *     def nmocap(self): return self.ptr.nmocap             # <<<<<<<<<<<<<<
 *     @nmocap.setter
 *     def nmocap(self, int x): self.ptr.nmocap = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nmocap_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nmocap_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nmocap___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nmocap___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nmocap); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmocap.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1528
 *     def nmocap(self): return self.ptr.nmocap
 *     @nmocap.setter
 *     def nmocap(self, int x): self.ptr.nmocap = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nsensordata(self): return self.ptr.nsensordata
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nmocap_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nmocap_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1528, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nmocap.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nmocap_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_6nmocap_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nmocap = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1530
 *     def nmocap(self, int x): self.ptr.nmocap = x
 *     @property
 *     def nsensordata(self): return self.ptr.nsensordata             # <<<<<<<<<<<<<<
 *     @nsensordata.setter
 *     def nsensordata(self, int x): self.ptr.nsensordata = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nsensordata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nsensordata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nsensordata___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nsensordata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nsensordata); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nsensordata.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1532
 *     def nsensordata(self): return self.ptr.nsensordata
 *     @nsensordata.setter
 *     def nsensordata(self, int x): self.ptr.nsensordata = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nbuffer(self): return self.ptr.nbuffer
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nsensordata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nsensordata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1532, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nsensordata.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nsensordata_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11nsensordata_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nsensordata = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1534
 *     def nsensordata(self, int x): self.ptr.nsensordata = x
 *     @property
 *     def nbuffer(self): return self.ptr.nbuffer             # <<<<<<<<<<<<<<
 *     @nbuffer.setter
 *     def nbuffer(self, int x): self.ptr.nbuffer = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nbuffer_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nbuffer_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nbuffer___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nbuffer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nbuffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 1534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nbuffer.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1536
 *     def nbuffer(self): return self.ptr.nbuffer
 *     @nbuffer.setter
 *     def nbuffer(self, int x): self.ptr.nbuffer = x             # <<<<<<<<<<<<<<
 *     @property
 *     def opt(self): return self._opt
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nbuffer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nbuffer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 1536, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.nbuffer.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nbuffer_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7nbuffer_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nbuffer = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1538
 *     def nbuffer(self, int x): self.ptr.nbuffer = x
 *     @property
 *     def opt(self): return self._opt             # <<<<<<<<<<<<<<
 *     @property
 *     def vis(self): return self._vis
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_3opt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_3opt_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_3opt___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_3opt___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_opt));
  __pyx_r = ((PyObject *)__pyx_v_self->_opt);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1540
 *     def opt(self): return self._opt
 *     @property
 *     def vis(self): return self._vis             # <<<<<<<<<<<<<<
 *     @property
 *     def stat(self): return self._stat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_3vis_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_3vis_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_3vis___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_3vis___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_vis));
  __pyx_r = ((PyObject *)__pyx_v_self->_vis);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1542
 *     def vis(self): return self._vis
 *     @property
 *     def stat(self): return self._stat             # <<<<<<<<<<<<<<
 *     @property
 *     def qpos0(self): return self._qpos0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4stat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_4stat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_4stat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_4stat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_stat));
  __pyx_r = ((PyObject *)__pyx_v_self->_stat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1544
 *     def stat(self): return self._stat
 *     @property
 *     def qpos0(self): return self._qpos0             # <<<<<<<<<<<<<<
 *     @property
 *     def qpos_spring(self): return self._qpos_spring
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5qpos0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5qpos0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5qpos0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5qpos0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qpos0));
  __pyx_r = ((PyObject *)__pyx_v_self->_qpos0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1546
 *     def qpos0(self): return self._qpos0
 *     @property
 *     def qpos_spring(self): return self._qpos_spring             # <<<<<<<<<<<<<<
 *     @property
 *     def body_parentid(self): return self._body_parentid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11qpos_spring_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11qpos_spring_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11qpos_spring___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11qpos_spring___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qpos_spring));
  __pyx_r = ((PyObject *)__pyx_v_self->_qpos_spring);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1548
 *     def qpos_spring(self): return self._qpos_spring
 *     @property
 *     def body_parentid(self): return self._body_parentid             # <<<<<<<<<<<<<<
 *     @property
 *     def body_rootid(self): return self._body_rootid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13body_parentid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13body_parentid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13body_parentid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13body_parentid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_parentid));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_parentid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1550
 *     def body_parentid(self): return self._body_parentid
 *     @property
 *     def body_rootid(self): return self._body_rootid             # <<<<<<<<<<<<<<
 *     @property
 *     def body_weldid(self): return self._body_weldid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_rootid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_rootid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_rootid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_rootid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_rootid));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_rootid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1552
 *     def body_rootid(self): return self._body_rootid
 *     @property
 *     def body_weldid(self): return self._body_weldid             # <<<<<<<<<<<<<<
 *     @property
 *     def body_mocapid(self): return self._body_mocapid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_weldid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_weldid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_weldid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_weldid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_weldid));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_weldid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1554
 *     def body_weldid(self): return self._body_weldid
 *     @property
 *     def body_mocapid(self): return self._body_mocapid             # <<<<<<<<<<<<<<
 *     @property
 *     def body_jntnum(self): return self._body_jntnum
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_mocapid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_mocapid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_mocapid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_mocapid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_mocapid));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_mocapid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1556
 *     def body_mocapid(self): return self._body_mocapid
 *     @property
 *     def body_jntnum(self): return self._body_jntnum             # <<<<<<<<<<<<<<
 *     @property
 *     def body_jntadr(self): return self._body_jntadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_jntnum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_jntnum_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_jntnum___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_jntnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_jntnum));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_jntnum);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1558
 *     def body_jntnum(self): return self._body_jntnum
 *     @property
 *     def body_jntadr(self): return self._body_jntadr             # <<<<<<<<<<<<<<
 *     @property
 *     def body_dofnum(self): return self._body_dofnum
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_jntadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_jntadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_jntadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_jntadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_jntadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_jntadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1560
 *     def body_jntadr(self): return self._body_jntadr
 *     @property
 *     def body_dofnum(self): return self._body_dofnum             # <<<<<<<<<<<<<<
 *     @property
 *     def body_dofadr(self): return self._body_dofadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_dofnum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_dofnum_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_dofnum___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_dofnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_dofnum));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_dofnum);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1562
 *     def body_dofnum(self): return self._body_dofnum
 *     @property
 *     def body_dofadr(self): return self._body_dofadr             # <<<<<<<<<<<<<<
 *     @property
 *     def body_geomnum(self): return self._body_geomnum
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_dofadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_dofadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_dofadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11body_dofadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_dofadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_dofadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1564
 *     def body_dofadr(self): return self._body_dofadr
 *     @property
 *     def body_geomnum(self): return self._body_geomnum             # <<<<<<<<<<<<<<
 *     @property
 *     def body_geomadr(self): return self._body_geomadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_geomnum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_geomnum_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_geomnum___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_geomnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_geomnum));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_geomnum);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1566
 *     def body_geomnum(self): return self._body_geomnum
 *     @property
 *     def body_geomadr(self): return self._body_geomadr             # <<<<<<<<<<<<<<
 *     @property
 *     def body_pos(self): return self._body_pos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_geomadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_geomadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_geomadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_geomadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_geomadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_geomadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1568
 *     def body_geomadr(self): return self._body_geomadr
 *     @property
 *     def body_pos(self): return self._body_pos             # <<<<<<<<<<<<<<
 *     @property
 *     def body_quat(self): return self._body_quat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8body_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8body_pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8body_pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8body_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1570
 *     def body_pos(self): return self._body_pos
 *     @property
 *     def body_quat(self): return self._body_quat             # <<<<<<<<<<<<<<
 *     @property
 *     def body_ipos(self): return self._body_ipos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_quat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_quat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_quat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_quat));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_quat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1572
 *     def body_quat(self): return self._body_quat
 *     @property
 *     def body_ipos(self): return self._body_ipos             # <<<<<<<<<<<<<<
 *     @property
 *     def body_iquat(self): return self._body_iquat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_ipos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_ipos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_ipos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_ipos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_ipos));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_ipos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1574
 *     def body_ipos(self): return self._body_ipos
 *     @property
 *     def body_iquat(self): return self._body_iquat             # <<<<<<<<<<<<<<
 *     @property
 *     def body_mass(self): return self._body_mass
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10body_iquat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10body_iquat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10body_iquat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10body_iquat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_iquat));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_iquat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1576
 *     def body_iquat(self): return self._body_iquat
 *     @property
 *     def body_mass(self): return self._body_mass             # <<<<<<<<<<<<<<
 *     @property
 *     def body_subtreemass(self): return self._body_subtreemass
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_mass_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_mass_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_mass___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_mass___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_mass));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_mass);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1578
 *     def body_mass(self): return self._body_mass
 *     @property
 *     def body_subtreemass(self): return self._body_subtreemass             # <<<<<<<<<<<<<<
 *     @property
 *     def body_inertia(self): return self._body_inertia
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16body_subtreemass_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16body_subtreemass_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16body_subtreemass___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16body_subtreemass___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_subtreemass));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_subtreemass);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1580
 *     def body_subtreemass(self): return self._body_subtreemass
 *     @property
 *     def body_inertia(self): return self._body_inertia             # <<<<<<<<<<<<<<
 *     @property
 *     def body_invweight0(self): return self._body_invweight0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_inertia_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_inertia_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_inertia___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12body_inertia___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_inertia));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_inertia);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1582
 *     def body_inertia(self): return self._body_inertia
 *     @property
 *     def body_invweight0(self): return self._body_invweight0             # <<<<<<<<<<<<<<
 *     @property
 *     def body_user(self): return self._body_user
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15body_invweight0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15body_invweight0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_15body_invweight0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15body_invweight0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_invweight0));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_invweight0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1584
 *     def body_invweight0(self): return self._body_invweight0
 *     @property
 *     def body_user(self): return self._body_user             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_type(self): return self._jnt_type
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_user_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_user_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_user___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9body_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_body_user));
  __pyx_r = ((PyObject *)__pyx_v_self->_body_user);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1586
 *     def body_user(self): return self._body_user
 *     @property
 *     def jnt_type(self): return self._jnt_type             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_qposadr(self): return self._jnt_qposadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8jnt_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8jnt_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8jnt_type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8jnt_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_type));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_type);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1588
 *     def jnt_type(self): return self._jnt_type
 *     @property
 *     def jnt_qposadr(self): return self._jnt_qposadr             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_dofadr(self): return self._jnt_dofadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11jnt_qposadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11jnt_qposadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11jnt_qposadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11jnt_qposadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_qposadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_qposadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1590
 *     def jnt_qposadr(self): return self._jnt_qposadr
 *     @property
 *     def jnt_dofadr(self): return self._jnt_dofadr             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_bodyid(self): return self._jnt_bodyid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_dofadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_dofadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_dofadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_dofadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_dofadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_dofadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1592
 *     def jnt_dofadr(self): return self._jnt_dofadr
 *     @property
 *     def jnt_bodyid(self): return self._jnt_bodyid             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_limited(self): return self._jnt_limited
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_bodyid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_bodyid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_bodyid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_bodyid));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_bodyid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1594
 *     def jnt_bodyid(self): return self._jnt_bodyid
 *     @property
 *     def jnt_limited(self): return self._jnt_limited             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_solref(self): return self._jnt_solref
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11jnt_limited_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11jnt_limited_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11jnt_limited___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11jnt_limited___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_limited));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_limited);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1596
 *     def jnt_limited(self): return self._jnt_limited
 *     @property
 *     def jnt_solref(self): return self._jnt_solref             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_solimp(self): return self._jnt_solimp
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_solref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_solref_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_solref___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_solref));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_solref);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1598
 *     def jnt_solref(self): return self._jnt_solref
 *     @property
 *     def jnt_solimp(self): return self._jnt_solimp             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_pos(self): return self._jnt_pos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_solimp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_solimp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_solimp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_solimp));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_solimp);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1600
 *     def jnt_solimp(self): return self._jnt_solimp
 *     @property
 *     def jnt_pos(self): return self._jnt_pos             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_axis(self): return self._jnt_axis
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7jnt_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7jnt_pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7jnt_pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7jnt_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1602
 *     def jnt_pos(self): return self._jnt_pos
 *     @property
 *     def jnt_axis(self): return self._jnt_axis             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_stiffness(self): return self._jnt_stiffness
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8jnt_axis_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8jnt_axis_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8jnt_axis___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8jnt_axis___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_axis));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_axis);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1604
 *     def jnt_axis(self): return self._jnt_axis
 *     @property
 *     def jnt_stiffness(self): return self._jnt_stiffness             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_range(self): return self._jnt_range
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13jnt_stiffness_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13jnt_stiffness_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13jnt_stiffness___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13jnt_stiffness___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_stiffness));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_stiffness);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1606
 *     def jnt_stiffness(self): return self._jnt_stiffness
 *     @property
 *     def jnt_range(self): return self._jnt_range             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_margin(self): return self._jnt_margin
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9jnt_range_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9jnt_range_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9jnt_range___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9jnt_range___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_range));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_range);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1608
 *     def jnt_range(self): return self._jnt_range
 *     @property
 *     def jnt_margin(self): return self._jnt_margin             # <<<<<<<<<<<<<<
 *     @property
 *     def jnt_user(self): return self._jnt_user
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_margin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_margin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_margin___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10jnt_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_margin));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_margin);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1610
 *     def jnt_margin(self): return self._jnt_margin
 *     @property
 *     def jnt_user(self): return self._jnt_user             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_bodyid(self): return self._dof_bodyid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8jnt_user_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8jnt_user_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8jnt_user___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8jnt_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_jnt_user));
  __pyx_r = ((PyObject *)__pyx_v_self->_jnt_user);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1612
 *     def jnt_user(self): return self._jnt_user
 *     @property
 *     def dof_bodyid(self): return self._dof_bodyid             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_jntid(self): return self._dof_jntid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10dof_bodyid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10dof_bodyid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10dof_bodyid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10dof_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_bodyid));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_bodyid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1614
 *     def dof_bodyid(self): return self._dof_bodyid
 *     @property
 *     def dof_jntid(self): return self._dof_jntid             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_parentid(self): return self._dof_parentid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9dof_jntid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9dof_jntid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9dof_jntid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9dof_jntid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_jntid));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_jntid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1616
 *     def dof_jntid(self): return self._dof_jntid
 *     @property
 *     def dof_parentid(self): return self._dof_parentid             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_Madr(self): return self._dof_Madr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12dof_parentid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12dof_parentid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12dof_parentid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12dof_parentid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_parentid));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_parentid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1618
 *     def dof_parentid(self): return self._dof_parentid
 *     @property
 *     def dof_Madr(self): return self._dof_Madr             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_solref(self): return self._dof_solref
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8dof_Madr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8dof_Madr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8dof_Madr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8dof_Madr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_Madr));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_Madr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1620
 *     def dof_Madr(self): return self._dof_Madr
 *     @property
 *     def dof_solref(self): return self._dof_solref             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_solimp(self): return self._dof_solimp
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10dof_solref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10dof_solref_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10dof_solref___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10dof_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_solref));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_solref);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1622
 *     def dof_solref(self): return self._dof_solref
 *     @property
 *     def dof_solimp(self): return self._dof_solimp             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_frictionloss(self): return self._dof_frictionloss
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10dof_solimp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10dof_solimp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10dof_solimp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10dof_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_solimp));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_solimp);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1624
 *     def dof_solimp(self): return self._dof_solimp
 *     @property
 *     def dof_frictionloss(self): return self._dof_frictionloss             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_armature(self): return self._dof_armature
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16dof_frictionloss_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16dof_frictionloss_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16dof_frictionloss___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16dof_frictionloss___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_frictionloss));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_frictionloss);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1626
 *     def dof_frictionloss(self): return self._dof_frictionloss
 *     @property
 *     def dof_armature(self): return self._dof_armature             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_damping(self): return self._dof_damping
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12dof_armature_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12dof_armature_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12dof_armature___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12dof_armature___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_armature));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_armature);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1628
 *     def dof_armature(self): return self._dof_armature
 *     @property
 *     def dof_damping(self): return self._dof_damping             # <<<<<<<<<<<<<<
 *     @property
 *     def dof_invweight0(self): return self._dof_invweight0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11dof_damping_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11dof_damping_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11dof_damping___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11dof_damping___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_damping));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_damping);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1630
 *     def dof_damping(self): return self._dof_damping
 *     @property
 *     def dof_invweight0(self): return self._dof_invweight0             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_type(self): return self._geom_type
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14dof_invweight0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14dof_invweight0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14dof_invweight0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14dof_invweight0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dof_invweight0));
  __pyx_r = ((PyObject *)__pyx_v_self->_dof_invweight0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1632
 *     def dof_invweight0(self): return self._dof_invweight0
 *     @property
 *     def geom_type(self): return self._geom_type             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_contype(self): return self._geom_contype
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_type));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_type);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1634
 *     def geom_type(self): return self._geom_type
 *     @property
 *     def geom_contype(self): return self._geom_contype             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_conaffinity(self): return self._geom_conaffinity
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12geom_contype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12geom_contype_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12geom_contype___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12geom_contype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_contype));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_contype);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1636
 *     def geom_contype(self): return self._geom_contype
 *     @property
 *     def geom_conaffinity(self): return self._geom_conaffinity             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_condim(self): return self._geom_condim
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16geom_conaffinity_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16geom_conaffinity_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16geom_conaffinity___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16geom_conaffinity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_conaffinity));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_conaffinity);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1638
 *     def geom_conaffinity(self): return self._geom_conaffinity
 *     @property
 *     def geom_condim(self): return self._geom_condim             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_bodyid(self): return self._geom_bodyid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_condim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_condim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_condim___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_condim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_condim));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_condim);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1640
 *     def geom_condim(self): return self._geom_condim
 *     @property
 *     def geom_bodyid(self): return self._geom_bodyid             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_dataid(self): return self._geom_dataid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_bodyid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_bodyid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_bodyid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_bodyid));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_bodyid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1642
 *     def geom_bodyid(self): return self._geom_bodyid
 *     @property
 *     def geom_dataid(self): return self._geom_dataid             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_matid(self): return self._geom_matid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_dataid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_dataid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_dataid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_dataid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_dataid));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_dataid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1644
 *     def geom_dataid(self): return self._geom_dataid
 *     @property
 *     def geom_matid(self): return self._geom_matid             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_group(self): return self._geom_group
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10geom_matid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10geom_matid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_matid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_matid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_matid));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_matid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1646
 *     def geom_matid(self): return self._geom_matid
 *     @property
 *     def geom_group(self): return self._geom_group             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_solmix(self): return self._geom_solmix
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10geom_group_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10geom_group_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_group___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_group___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_group));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_group);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1648
 *     def geom_group(self): return self._geom_group
 *     @property
 *     def geom_solmix(self): return self._geom_solmix             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_solref(self): return self._geom_solref
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_solmix_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_solmix_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_solmix___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_solmix___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_solmix));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_solmix);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1650
 *     def geom_solmix(self): return self._geom_solmix
 *     @property
 *     def geom_solref(self): return self._geom_solref             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_solimp(self): return self._geom_solimp
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_solref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_solref_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_solref___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_solref));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_solref);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1652
 *     def geom_solref(self): return self._geom_solref
 *     @property
 *     def geom_solimp(self): return self._geom_solimp             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_size(self): return self._geom_size
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_solimp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_solimp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_solimp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_solimp));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_solimp);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1654
 *     def geom_solimp(self): return self._geom_solimp
 *     @property
 *     def geom_size(self): return self._geom_size             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_rbound(self): return self._geom_rbound
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_size___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_size));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_size);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1656
 *     def geom_size(self): return self._geom_size
 *     @property
 *     def geom_rbound(self): return self._geom_rbound             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_pos(self): return self._geom_pos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_rbound_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_rbound_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_rbound___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_rbound___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_rbound));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_rbound);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1658
 *     def geom_rbound(self): return self._geom_rbound
 *     @property
 *     def geom_pos(self): return self._geom_pos             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_quat(self): return self._geom_quat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8geom_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8geom_pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8geom_pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8geom_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1660
 *     def geom_pos(self): return self._geom_pos
 *     @property
 *     def geom_quat(self): return self._geom_quat             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_friction(self): return self._geom_friction
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_quat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_quat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_quat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_quat));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_quat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1662
 *     def geom_quat(self): return self._geom_quat
 *     @property
 *     def geom_friction(self): return self._geom_friction             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_margin(self): return self._geom_margin
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13geom_friction_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13geom_friction_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13geom_friction___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13geom_friction___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_friction));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_friction);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1664
 *     def geom_friction(self): return self._geom_friction
 *     @property
 *     def geom_margin(self): return self._geom_margin             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_gap(self): return self._geom_gap
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_margin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_margin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_margin___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11geom_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_margin));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_margin);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1666
 *     def geom_margin(self): return self._geom_margin
 *     @property
 *     def geom_gap(self): return self._geom_gap             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_user(self): return self._geom_user
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8geom_gap_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8geom_gap_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8geom_gap___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8geom_gap___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_gap));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_gap);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1668
 *     def geom_gap(self): return self._geom_gap
 *     @property
 *     def geom_user(self): return self._geom_user             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_rgba(self): return self._geom_rgba
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_user_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_user_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_user___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_user));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_user);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1670
 *     def geom_user(self): return self._geom_user
 *     @property
 *     def geom_rgba(self): return self._geom_rgba             # <<<<<<<<<<<<<<
 *     @property
 *     def site_type(self): return self._site_type
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_rgba_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_rgba_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_rgba___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9geom_rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_rgba));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_rgba);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1672
 *     def geom_rgba(self): return self._geom_rgba
 *     @property
 *     def site_type(self): return self._site_type             # <<<<<<<<<<<<<<
 *     @property
 *     def site_bodyid(self): return self._site_bodyid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_type));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_type);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1674
 *     def site_type(self): return self._site_type
 *     @property
 *     def site_bodyid(self): return self._site_bodyid             # <<<<<<<<<<<<<<
 *     @property
 *     def site_matid(self): return self._site_matid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11site_bodyid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11site_bodyid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11site_bodyid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11site_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_bodyid));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_bodyid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1676
 *     def site_bodyid(self): return self._site_bodyid
 *     @property
 *     def site_matid(self): return self._site_matid             # <<<<<<<<<<<<<<
 *     @property
 *     def site_group(self): return self._site_group
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10site_matid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10site_matid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10site_matid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10site_matid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_matid));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_matid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1678
 *     def site_matid(self): return self._site_matid
 *     @property
 *     def site_group(self): return self._site_group             # <<<<<<<<<<<<<<
 *     @property
 *     def site_size(self): return self._site_size
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10site_group_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10site_group_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10site_group___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10site_group___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_group));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_group);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1680
 *     def site_group(self): return self._site_group
 *     @property
 *     def site_size(self): return self._site_size             # <<<<<<<<<<<<<<
 *     @property
 *     def site_pos(self): return self._site_pos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_size___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_size));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_size);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1682
 *     def site_size(self): return self._site_size
 *     @property
 *     def site_pos(self): return self._site_pos             # <<<<<<<<<<<<<<
 *     @property
 *     def site_quat(self): return self._site_quat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8site_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8site_pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8site_pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8site_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1684
 *     def site_pos(self): return self._site_pos
 *     @property
 *     def site_quat(self): return self._site_quat             # <<<<<<<<<<<<<<
 *     @property
 *     def site_user(self): return self._site_user
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_quat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_quat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_quat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_quat));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_quat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1686
 *     def site_quat(self): return self._site_quat
 *     @property
 *     def site_user(self): return self._site_user             # <<<<<<<<<<<<<<
 *     @property
 *     def site_rgba(self): return self._site_rgba
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_user_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_user_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_user___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_user));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_user);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1688
 *     def site_user(self): return self._site_user
 *     @property
 *     def site_rgba(self): return self._site_rgba             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_mode(self): return self._cam_mode
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_rgba_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_rgba_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_rgba___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9site_rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_rgba));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_rgba);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1690
 *     def site_rgba(self): return self._site_rgba
 *     @property
 *     def cam_mode(self): return self._cam_mode             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_bodyid(self): return self._cam_bodyid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_mode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_mode_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_mode___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_mode___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_mode));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_mode);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1692
 *     def cam_mode(self): return self._cam_mode
 *     @property
 *     def cam_bodyid(self): return self._cam_bodyid             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_targetbodyid(self): return self._cam_targetbodyid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10cam_bodyid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10cam_bodyid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10cam_bodyid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10cam_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_bodyid));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_bodyid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1694
 *     def cam_bodyid(self): return self._cam_bodyid
 *     @property
 *     def cam_targetbodyid(self): return self._cam_targetbodyid             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_pos(self): return self._cam_pos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16cam_targetbodyid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16cam_targetbodyid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16cam_targetbodyid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16cam_targetbodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_targetbodyid));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_targetbodyid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1696
 *     def cam_targetbodyid(self): return self._cam_targetbodyid
 *     @property
 *     def cam_pos(self): return self._cam_pos             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_quat(self): return self._cam_quat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7cam_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7cam_pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7cam_pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7cam_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1698
 *     def cam_pos(self): return self._cam_pos
 *     @property
 *     def cam_quat(self): return self._cam_quat             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_poscom0(self): return self._cam_poscom0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_quat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_quat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_quat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_quat));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_quat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1700
 *     def cam_quat(self): return self._cam_quat
 *     @property
 *     def cam_poscom0(self): return self._cam_poscom0             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_pos0(self): return self._cam_pos0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11cam_poscom0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11cam_poscom0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11cam_poscom0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11cam_poscom0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_poscom0));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_poscom0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1702
 *     def cam_poscom0(self): return self._cam_poscom0
 *     @property
 *     def cam_pos0(self): return self._cam_pos0             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_mat0(self): return self._cam_mat0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_pos0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_pos0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_pos0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_pos0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_pos0));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_pos0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1704
 *     def cam_pos0(self): return self._cam_pos0
 *     @property
 *     def cam_mat0(self): return self._cam_mat0             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_fovy(self): return self._cam_fovy
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_mat0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_mat0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_mat0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_mat0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_mat0));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_mat0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1706
 *     def cam_mat0(self): return self._cam_mat0
 *     @property
 *     def cam_fovy(self): return self._cam_fovy             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_ipd(self): return self._cam_ipd
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_fovy_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_fovy_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_fovy___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_fovy___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_fovy));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_fovy);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1708
 *     def cam_fovy(self): return self._cam_fovy
 *     @property
 *     def cam_ipd(self): return self._cam_ipd             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_user(self): return self._cam_user
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7cam_ipd_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7cam_ipd_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7cam_ipd___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7cam_ipd___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_ipd));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_ipd);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1710
 *     def cam_ipd(self): return self._cam_ipd
 *     @property
 *     def cam_user(self): return self._cam_user             # <<<<<<<<<<<<<<
 *     @property
 *     def light_mode(self): return self._light_mode
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_user_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_user_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_user___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8cam_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_user));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_user);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1712
 *     def cam_user(self): return self._cam_user
 *     @property
 *     def light_mode(self): return self._light_mode             # <<<<<<<<<<<<<<
 *     @property
 *     def light_bodyid(self): return self._light_bodyid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10light_mode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10light_mode_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10light_mode___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10light_mode___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_mode));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_mode);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1714
 *     def light_mode(self): return self._light_mode
 *     @property
 *     def light_bodyid(self): return self._light_bodyid             # <<<<<<<<<<<<<<
 *     @property
 *     def light_targetbodyid(self): return self._light_targetbodyid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12light_bodyid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12light_bodyid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12light_bodyid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12light_bodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_bodyid));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_bodyid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1716
 *     def light_bodyid(self): return self._light_bodyid
 *     @property
 *     def light_targetbodyid(self): return self._light_targetbodyid             # <<<<<<<<<<<<<<
 *     @property
 *     def light_directional(self): return self._light_directional
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_18light_targetbodyid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_18light_targetbodyid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_18light_targetbodyid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_18light_targetbodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_targetbodyid));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_targetbodyid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1718
 *     def light_targetbodyid(self): return self._light_targetbodyid
 *     @property
 *     def light_directional(self): return self._light_directional             # <<<<<<<<<<<<<<
 *     @property
 *     def light_castshadow(self): return self._light_castshadow
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17light_directional_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17light_directional_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17light_directional___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17light_directional___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_directional));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_directional);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1720
 *     def light_directional(self): return self._light_directional
 *     @property
 *     def light_castshadow(self): return self._light_castshadow             # <<<<<<<<<<<<<<
 *     @property
 *     def light_active(self): return self._light_active
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16light_castshadow_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16light_castshadow_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16light_castshadow___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16light_castshadow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_castshadow));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_castshadow);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1722
 *     def light_castshadow(self): return self._light_castshadow
 *     @property
 *     def light_active(self): return self._light_active             # <<<<<<<<<<<<<<
 *     @property
 *     def light_pos(self): return self._light_pos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12light_active_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12light_active_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12light_active___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12light_active___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_active));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_active);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1724
 *     def light_active(self): return self._light_active
 *     @property
 *     def light_pos(self): return self._light_pos             # <<<<<<<<<<<<<<
 *     @property
 *     def light_dir(self): return self._light_dir
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9light_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9light_pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9light_pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9light_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1726
 *     def light_pos(self): return self._light_pos
 *     @property
 *     def light_dir(self): return self._light_dir             # <<<<<<<<<<<<<<
 *     @property
 *     def light_poscom0(self): return self._light_poscom0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9light_dir_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9light_dir_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9light_dir___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9light_dir___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_dir));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_dir);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1728
 *     def light_dir(self): return self._light_dir
 *     @property
 *     def light_poscom0(self): return self._light_poscom0             # <<<<<<<<<<<<<<
 *     @property
 *     def light_pos0(self): return self._light_pos0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13light_poscom0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13light_poscom0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13light_poscom0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13light_poscom0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_poscom0));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_poscom0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1730
 *     def light_poscom0(self): return self._light_poscom0
 *     @property
 *     def light_pos0(self): return self._light_pos0             # <<<<<<<<<<<<<<
 *     @property
 *     def light_dir0(self): return self._light_dir0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10light_pos0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10light_pos0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10light_pos0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10light_pos0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_pos0));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_pos0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1732
 *     def light_pos0(self): return self._light_pos0
 *     @property
 *     def light_dir0(self): return self._light_dir0             # <<<<<<<<<<<<<<
 *     @property
 *     def light_attenuation(self): return self._light_attenuation
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10light_dir0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10light_dir0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10light_dir0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10light_dir0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_dir0));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_dir0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1734
 *     def light_dir0(self): return self._light_dir0
 *     @property
 *     def light_attenuation(self): return self._light_attenuation             # <<<<<<<<<<<<<<
 *     @property
 *     def light_cutoff(self): return self._light_cutoff
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17light_attenuation_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17light_attenuation_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17light_attenuation___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17light_attenuation___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_attenuation));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_attenuation);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1736
 *     def light_attenuation(self): return self._light_attenuation
 *     @property
 *     def light_cutoff(self): return self._light_cutoff             # <<<<<<<<<<<<<<
 *     @property
 *     def light_exponent(self): return self._light_exponent
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12light_cutoff_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12light_cutoff_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12light_cutoff___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12light_cutoff___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_cutoff));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_cutoff);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1738
 *     def light_cutoff(self): return self._light_cutoff
 *     @property
 *     def light_exponent(self): return self._light_exponent             # <<<<<<<<<<<<<<
 *     @property
 *     def light_ambient(self): return self._light_ambient
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14light_exponent_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14light_exponent_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14light_exponent___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14light_exponent___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_exponent));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_exponent);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1740
 *     def light_exponent(self): return self._light_exponent
 *     @property
 *     def light_ambient(self): return self._light_ambient             # <<<<<<<<<<<<<<
 *     @property
 *     def light_diffuse(self): return self._light_diffuse
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13light_ambient_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13light_ambient_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13light_ambient___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13light_ambient___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_ambient));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_ambient);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1742
 *     def light_ambient(self): return self._light_ambient
 *     @property
 *     def light_diffuse(self): return self._light_diffuse             # <<<<<<<<<<<<<<
 *     @property
 *     def light_specular(self): return self._light_specular
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13light_diffuse_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13light_diffuse_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13light_diffuse___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13light_diffuse___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_diffuse));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_diffuse);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1744
 *     def light_diffuse(self): return self._light_diffuse
 *     @property
 *     def light_specular(self): return self._light_specular             # <<<<<<<<<<<<<<
 *     @property
 *     def mesh_faceadr(self): return self._mesh_faceadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14light_specular_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14light_specular_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14light_specular___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14light_specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_specular));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_specular);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1746
 *     def light_specular(self): return self._light_specular
 *     @property
 *     def mesh_faceadr(self): return self._mesh_faceadr             # <<<<<<<<<<<<<<
 *     @property
 *     def mesh_facenum(self): return self._mesh_facenum
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_faceadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_faceadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_faceadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_faceadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mesh_faceadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_mesh_faceadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1748
 *     def mesh_faceadr(self): return self._mesh_faceadr
 *     @property
 *     def mesh_facenum(self): return self._mesh_facenum             # <<<<<<<<<<<<<<
 *     @property
 *     def mesh_vertadr(self): return self._mesh_vertadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_facenum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_facenum_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_facenum___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_facenum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mesh_facenum));
  __pyx_r = ((PyObject *)__pyx_v_self->_mesh_facenum);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1750
 *     def mesh_facenum(self): return self._mesh_facenum
 *     @property
 *     def mesh_vertadr(self): return self._mesh_vertadr             # <<<<<<<<<<<<<<
 *     @property
 *     def mesh_vertnum(self): return self._mesh_vertnum
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_vertadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_vertadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_vertadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_vertadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mesh_vertadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_mesh_vertadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1752
 *     def mesh_vertadr(self): return self._mesh_vertadr
 *     @property
 *     def mesh_vertnum(self): return self._mesh_vertnum             # <<<<<<<<<<<<<<
 *     @property
 *     def mesh_graphadr(self): return self._mesh_graphadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_vertnum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_vertnum_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_vertnum___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mesh_vertnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mesh_vertnum));
  __pyx_r = ((PyObject *)__pyx_v_self->_mesh_vertnum);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1754
 *     def mesh_vertnum(self): return self._mesh_vertnum
 *     @property
 *     def mesh_graphadr(self): return self._mesh_graphadr             # <<<<<<<<<<<<<<
 *     @property
 *     def mesh_vert(self): return self._mesh_vert
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13mesh_graphadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13mesh_graphadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13mesh_graphadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13mesh_graphadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mesh_graphadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_mesh_graphadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1756
 *     def mesh_graphadr(self): return self._mesh_graphadr
 *     @property
 *     def mesh_vert(self): return self._mesh_vert             # <<<<<<<<<<<<<<
 *     @property
 *     def mesh_normal(self): return self._mesh_normal
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9mesh_vert_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9mesh_vert_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9mesh_vert___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9mesh_vert___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mesh_vert));
  __pyx_r = ((PyObject *)__pyx_v_self->_mesh_vert);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1758
 *     def mesh_vert(self): return self._mesh_vert
 *     @property
 *     def mesh_normal(self): return self._mesh_normal             # <<<<<<<<<<<<<<
 *     @property
 *     def mesh_face(self): return self._mesh_face
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11mesh_normal_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11mesh_normal_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11mesh_normal___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11mesh_normal___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mesh_normal));
  __pyx_r = ((PyObject *)__pyx_v_self->_mesh_normal);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1760
 *     def mesh_normal(self): return self._mesh_normal
 *     @property
 *     def mesh_face(self): return self._mesh_face             # <<<<<<<<<<<<<<
 *     @property
 *     def mesh_graph(self): return self._mesh_graph
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9mesh_face_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9mesh_face_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9mesh_face___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9mesh_face___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mesh_face));
  __pyx_r = ((PyObject *)__pyx_v_self->_mesh_face);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1762
 *     def mesh_face(self): return self._mesh_face
 *     @property
 *     def mesh_graph(self): return self._mesh_graph             # <<<<<<<<<<<<<<
 *     @property
 *     def hfield_size(self): return self._hfield_size
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10mesh_graph_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10mesh_graph_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10mesh_graph___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10mesh_graph___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mesh_graph));
  __pyx_r = ((PyObject *)__pyx_v_self->_mesh_graph);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1764
 *     def mesh_graph(self): return self._mesh_graph
 *     @property
 *     def hfield_size(self): return self._hfield_size             # <<<<<<<<<<<<<<
 *     @property
 *     def hfield_nrow(self): return self._hfield_nrow
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_size___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_hfield_size));
  __pyx_r = ((PyObject *)__pyx_v_self->_hfield_size);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1766
 *     def hfield_size(self): return self._hfield_size
 *     @property
 *     def hfield_nrow(self): return self._hfield_nrow             # <<<<<<<<<<<<<<
 *     @property
 *     def hfield_ncol(self): return self._hfield_ncol
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_nrow_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_nrow_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_nrow___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_nrow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_hfield_nrow));
  __pyx_r = ((PyObject *)__pyx_v_self->_hfield_nrow);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1768
 *     def hfield_nrow(self): return self._hfield_nrow
 *     @property
 *     def hfield_ncol(self): return self._hfield_ncol             # <<<<<<<<<<<<<<
 *     @property
 *     def hfield_adr(self): return self._hfield_adr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_ncol_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_ncol_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_ncol___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_ncol___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_hfield_ncol));
  __pyx_r = ((PyObject *)__pyx_v_self->_hfield_ncol);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1770
 *     def hfield_ncol(self): return self._hfield_ncol
 *     @property
 *     def hfield_adr(self): return self._hfield_adr             # <<<<<<<<<<<<<<
 *     @property
 *     def hfield_data(self): return self._hfield_data
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10hfield_adr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10hfield_adr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10hfield_adr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10hfield_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_hfield_adr));
  __pyx_r = ((PyObject *)__pyx_v_self->_hfield_adr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1772
 *     def hfield_adr(self): return self._hfield_adr
 *     @property
 *     def hfield_data(self): return self._hfield_data             # <<<<<<<<<<<<<<
 *     @property
 *     def tex_type(self): return self._tex_type
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_data_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_data_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_data___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11hfield_data___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_hfield_data));
  __pyx_r = ((PyObject *)__pyx_v_self->_hfield_data);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1774
 *     def hfield_data(self): return self._hfield_data
 *     @property
 *     def tex_type(self): return self._tex_type             # <<<<<<<<<<<<<<
 *     @property
 *     def tex_height(self): return self._tex_height
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8tex_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8tex_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8tex_type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8tex_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tex_type));
  __pyx_r = ((PyObject *)__pyx_v_self->_tex_type);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1776
 *     def tex_type(self): return self._tex_type
 *     @property
 *     def tex_height(self): return self._tex_height             # <<<<<<<<<<<<<<
 *     @property
 *     def tex_width(self): return self._tex_width
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tex_height_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tex_height_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tex_height___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tex_height___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tex_height));
  __pyx_r = ((PyObject *)__pyx_v_self->_tex_height);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1778
 *     def tex_height(self): return self._tex_height
 *     @property
 *     def tex_width(self): return self._tex_width             # <<<<<<<<<<<<<<
 *     @property
 *     def tex_adr(self): return self._tex_adr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9tex_width_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9tex_width_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9tex_width___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9tex_width___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tex_width));
  __pyx_r = ((PyObject *)__pyx_v_self->_tex_width);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1780
 *     def tex_width(self): return self._tex_width
 *     @property
 *     def tex_adr(self): return self._tex_adr             # <<<<<<<<<<<<<<
 *     @property
 *     def tex_rgb(self): return self._tex_rgb
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7tex_adr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7tex_adr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7tex_adr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7tex_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tex_adr));
  __pyx_r = ((PyObject *)__pyx_v_self->_tex_adr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1782
 *     def tex_adr(self): return self._tex_adr
 *     @property
 *     def tex_rgb(self): return self._tex_rgb             # <<<<<<<<<<<<<<
 *     @property
 *     def mat_texid(self): return self._mat_texid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7tex_rgb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7tex_rgb_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7tex_rgb___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7tex_rgb___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tex_rgb));
  __pyx_r = ((PyObject *)__pyx_v_self->_tex_rgb);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1784
 *     def tex_rgb(self): return self._tex_rgb
 *     @property
 *     def mat_texid(self): return self._mat_texid             # <<<<<<<<<<<<<<
 *     @property
 *     def mat_texuniform(self): return self._mat_texuniform
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9mat_texid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9mat_texid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9mat_texid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9mat_texid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mat_texid));
  __pyx_r = ((PyObject *)__pyx_v_self->_mat_texid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1786
 *     def mat_texid(self): return self._mat_texid
 *     @property
 *     def mat_texuniform(self): return self._mat_texuniform             # <<<<<<<<<<<<<<
 *     @property
 *     def mat_texrepeat(self): return self._mat_texrepeat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14mat_texuniform_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14mat_texuniform_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14mat_texuniform___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14mat_texuniform___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mat_texuniform));
  __pyx_r = ((PyObject *)__pyx_v_self->_mat_texuniform);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1788
 *     def mat_texuniform(self): return self._mat_texuniform
 *     @property
 *     def mat_texrepeat(self): return self._mat_texrepeat             # <<<<<<<<<<<<<<
 *     @property
 *     def mat_emission(self): return self._mat_emission
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13mat_texrepeat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13mat_texrepeat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13mat_texrepeat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13mat_texrepeat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mat_texrepeat));
  __pyx_r = ((PyObject *)__pyx_v_self->_mat_texrepeat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1790
 *     def mat_texrepeat(self): return self._mat_texrepeat
 *     @property
 *     def mat_emission(self): return self._mat_emission             # <<<<<<<<<<<<<<
 *     @property
 *     def mat_specular(self): return self._mat_specular
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mat_emission_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mat_emission_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mat_emission___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mat_emission___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mat_emission));
  __pyx_r = ((PyObject *)__pyx_v_self->_mat_emission);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1792
 *     def mat_emission(self): return self._mat_emission
 *     @property
 *     def mat_specular(self): return self._mat_specular             # <<<<<<<<<<<<<<
 *     @property
 *     def mat_shininess(self): return self._mat_shininess
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mat_specular_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mat_specular_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mat_specular___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12mat_specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mat_specular));
  __pyx_r = ((PyObject *)__pyx_v_self->_mat_specular);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1794
 *     def mat_specular(self): return self._mat_specular
 *     @property
 *     def mat_shininess(self): return self._mat_shininess             # <<<<<<<<<<<<<<
 *     @property
 *     def mat_reflectance(self): return self._mat_reflectance
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13mat_shininess_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13mat_shininess_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13mat_shininess___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13mat_shininess___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mat_shininess));
  __pyx_r = ((PyObject *)__pyx_v_self->_mat_shininess);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1796
 *     def mat_shininess(self): return self._mat_shininess
 *     @property
 *     def mat_reflectance(self): return self._mat_reflectance             # <<<<<<<<<<<<<<
 *     @property
 *     def mat_rgba(self): return self._mat_rgba
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15mat_reflectance_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15mat_reflectance_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_15mat_reflectance___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15mat_reflectance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mat_reflectance));
  __pyx_r = ((PyObject *)__pyx_v_self->_mat_reflectance);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1798
 *     def mat_reflectance(self): return self._mat_reflectance
 *     @property
 *     def mat_rgba(self): return self._mat_rgba             # <<<<<<<<<<<<<<
 *     @property
 *     def pair_dim(self): return self._pair_dim
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8mat_rgba_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8mat_rgba_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8mat_rgba___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8mat_rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mat_rgba));
  __pyx_r = ((PyObject *)__pyx_v_self->_mat_rgba);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1800
 *     def mat_rgba(self): return self._mat_rgba
 *     @property
 *     def pair_dim(self): return self._pair_dim             # <<<<<<<<<<<<<<
 *     @property
 *     def pair_geom1(self): return self._pair_geom1
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8pair_dim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8pair_dim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8pair_dim___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8pair_dim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pair_dim));
  __pyx_r = ((PyObject *)__pyx_v_self->_pair_dim);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1802
 *     def pair_dim(self): return self._pair_dim
 *     @property
 *     def pair_geom1(self): return self._pair_geom1             # <<<<<<<<<<<<<<
 *     @property
 *     def pair_geom2(self): return self._pair_geom2
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10pair_geom1_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10pair_geom1_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10pair_geom1___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10pair_geom1___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pair_geom1));
  __pyx_r = ((PyObject *)__pyx_v_self->_pair_geom1);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1804
 *     def pair_geom1(self): return self._pair_geom1
 *     @property
 *     def pair_geom2(self): return self._pair_geom2             # <<<<<<<<<<<<<<
 *     @property
 *     def pair_signature(self): return self._pair_signature
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10pair_geom2_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10pair_geom2_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10pair_geom2___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10pair_geom2___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pair_geom2));
  __pyx_r = ((PyObject *)__pyx_v_self->_pair_geom2);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1806
 *     def pair_geom2(self): return self._pair_geom2
 *     @property
 *     def pair_signature(self): return self._pair_signature             # <<<<<<<<<<<<<<
 *     @property
 *     def pair_solref(self): return self._pair_solref
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14pair_signature_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14pair_signature_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14pair_signature___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14pair_signature___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pair_signature));
  __pyx_r = ((PyObject *)__pyx_v_self->_pair_signature);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1808
 *     def pair_signature(self): return self._pair_signature
 *     @property
 *     def pair_solref(self): return self._pair_solref             # <<<<<<<<<<<<<<
 *     @property
 *     def pair_solimp(self): return self._pair_solimp
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11pair_solref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11pair_solref_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11pair_solref___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11pair_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pair_solref));
  __pyx_r = ((PyObject *)__pyx_v_self->_pair_solref);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1810
 *     def pair_solref(self): return self._pair_solref
 *     @property
 *     def pair_solimp(self): return self._pair_solimp             # <<<<<<<<<<<<<<
 *     @property
 *     def pair_margin(self): return self._pair_margin
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11pair_solimp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11pair_solimp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11pair_solimp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11pair_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pair_solimp));
  __pyx_r = ((PyObject *)__pyx_v_self->_pair_solimp);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1812
 *     def pair_solimp(self): return self._pair_solimp
 *     @property
 *     def pair_margin(self): return self._pair_margin             # <<<<<<<<<<<<<<
 *     @property
 *     def pair_gap(self): return self._pair_gap
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11pair_margin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11pair_margin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11pair_margin___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11pair_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pair_margin));
  __pyx_r = ((PyObject *)__pyx_v_self->_pair_margin);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1814
 *     def pair_margin(self): return self._pair_margin
 *     @property
 *     def pair_gap(self): return self._pair_gap             # <<<<<<<<<<<<<<
 *     @property
 *     def pair_friction(self): return self._pair_friction
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8pair_gap_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8pair_gap_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8pair_gap___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8pair_gap___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pair_gap));
  __pyx_r = ((PyObject *)__pyx_v_self->_pair_gap);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1816
 *     def pair_gap(self): return self._pair_gap
 *     @property
 *     def pair_friction(self): return self._pair_friction             # <<<<<<<<<<<<<<
 *     @property
 *     def exclude_signature(self): return self._exclude_signature
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13pair_friction_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13pair_friction_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13pair_friction___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13pair_friction___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pair_friction));
  __pyx_r = ((PyObject *)__pyx_v_self->_pair_friction);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1818
 *     def pair_friction(self): return self._pair_friction
 *     @property
 *     def exclude_signature(self): return self._exclude_signature             # <<<<<<<<<<<<<<
 *     @property
 *     def eq_type(self): return self._eq_type
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17exclude_signature_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17exclude_signature_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17exclude_signature___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17exclude_signature___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_exclude_signature));
  __pyx_r = ((PyObject *)__pyx_v_self->_exclude_signature);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1820
 *     def exclude_signature(self): return self._exclude_signature
 *     @property
 *     def eq_type(self): return self._eq_type             # <<<<<<<<<<<<<<
 *     @property
 *     def eq_obj1id(self): return self._eq_obj1id
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7eq_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7eq_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7eq_type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7eq_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_eq_type));
  __pyx_r = ((PyObject *)__pyx_v_self->_eq_type);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1822
 *     def eq_type(self): return self._eq_type
 *     @property
 *     def eq_obj1id(self): return self._eq_obj1id             # <<<<<<<<<<<<<<
 *     @property
 *     def eq_obj2id(self): return self._eq_obj2id
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_obj1id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_obj1id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_obj1id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_obj1id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_eq_obj1id));
  __pyx_r = ((PyObject *)__pyx_v_self->_eq_obj1id);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1824
 *     def eq_obj1id(self): return self._eq_obj1id
 *     @property
 *     def eq_obj2id(self): return self._eq_obj2id             # <<<<<<<<<<<<<<
 *     @property
 *     def eq_active(self): return self._eq_active
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_obj2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_obj2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_obj2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_obj2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_eq_obj2id));
  __pyx_r = ((PyObject *)__pyx_v_self->_eq_obj2id);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1826
 *     def eq_obj2id(self): return self._eq_obj2id
 *     @property
 *     def eq_active(self): return self._eq_active             # <<<<<<<<<<<<<<
 *     @property
 *     def eq_solref(self): return self._eq_solref
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_active_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_active_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_active___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_active___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_eq_active));
  __pyx_r = ((PyObject *)__pyx_v_self->_eq_active);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1828
 *     def eq_active(self): return self._eq_active
 *     @property
 *     def eq_solref(self): return self._eq_solref             # <<<<<<<<<<<<<<
 *     @property
 *     def eq_solimp(self): return self._eq_solimp
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_solref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_solref_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_solref___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_eq_solref));
  __pyx_r = ((PyObject *)__pyx_v_self->_eq_solref);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1830
 *     def eq_solref(self): return self._eq_solref
 *     @property
 *     def eq_solimp(self): return self._eq_solimp             # <<<<<<<<<<<<<<
 *     @property
 *     def eq_data(self): return self._eq_data
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_solimp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_solimp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_solimp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9eq_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_eq_solimp));
  __pyx_r = ((PyObject *)__pyx_v_self->_eq_solimp);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1832
 *     def eq_solimp(self): return self._eq_solimp
 *     @property
 *     def eq_data(self): return self._eq_data             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_adr(self): return self._tendon_adr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7eq_data_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7eq_data_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7eq_data___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7eq_data___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_eq_data));
  __pyx_r = ((PyObject *)__pyx_v_self->_eq_data);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1834
 *     def eq_data(self): return self._eq_data
 *     @property
 *     def tendon_adr(self): return self._tendon_adr             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_num(self): return self._tendon_num
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tendon_adr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tendon_adr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tendon_adr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tendon_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_adr));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_adr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1836
 *     def tendon_adr(self): return self._tendon_adr
 *     @property
 *     def tendon_num(self): return self._tendon_num             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_matid(self): return self._tendon_matid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tendon_num_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tendon_num_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tendon_num___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tendon_num___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_num));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_num);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1838
 *     def tendon_num(self): return self._tendon_num
 *     @property
 *     def tendon_matid(self): return self._tendon_matid             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_limited(self): return self._tendon_limited
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tendon_matid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tendon_matid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tendon_matid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tendon_matid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_matid));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_matid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1840
 *     def tendon_matid(self): return self._tendon_matid
 *     @property
 *     def tendon_limited(self): return self._tendon_limited             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_width(self): return self._tendon_width
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14tendon_limited_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14tendon_limited_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14tendon_limited___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14tendon_limited___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_limited));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_limited);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1842
 *     def tendon_limited(self): return self._tendon_limited
 *     @property
 *     def tendon_width(self): return self._tendon_width             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_solref_lim(self): return self._tendon_solref_lim
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tendon_width_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tendon_width_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tendon_width___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tendon_width___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_width));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_width);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1844
 *     def tendon_width(self): return self._tendon_width
 *     @property
 *     def tendon_solref_lim(self): return self._tendon_solref_lim             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_solimp_lim(self): return self._tendon_solimp_lim
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_lim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_lim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_lim___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_lim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_solref_lim));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_solref_lim);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1846
 *     def tendon_solref_lim(self): return self._tendon_solref_lim
 *     @property
 *     def tendon_solimp_lim(self): return self._tendon_solimp_lim             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_solref_fri(self): return self._tendon_solref_fri
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_lim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_lim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_lim___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_lim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_solimp_lim));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_solimp_lim);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1848
 *     def tendon_solimp_lim(self): return self._tendon_solimp_lim
 *     @property
 *     def tendon_solref_fri(self): return self._tendon_solref_fri             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_solimp_fri(self): return self._tendon_solimp_fri
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_fri_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_fri_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_fri___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_fri___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_solref_fri));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_solref_fri);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1850
 *     def tendon_solref_fri(self): return self._tendon_solref_fri
 *     @property
 *     def tendon_solimp_fri(self): return self._tendon_solimp_fri             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_range(self): return self._tendon_range
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_fri_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_fri_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_fri___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_fri___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_solimp_fri));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_solimp_fri);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1852
 *     def tendon_solimp_fri(self): return self._tendon_solimp_fri
 *     @property
 *     def tendon_range(self): return self._tendon_range             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_margin(self): return self._tendon_margin
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tendon_range_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tendon_range_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tendon_range___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tendon_range___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_range));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_range);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1854
 *     def tendon_range(self): return self._tendon_range
 *     @property
 *     def tendon_margin(self): return self._tendon_margin             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_stiffness(self): return self._tendon_stiffness
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13tendon_margin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13tendon_margin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13tendon_margin___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13tendon_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_margin));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_margin);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1856
 *     def tendon_margin(self): return self._tendon_margin
 *     @property
 *     def tendon_stiffness(self): return self._tendon_stiffness             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_damping(self): return self._tendon_damping
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16tendon_stiffness_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16tendon_stiffness_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16tendon_stiffness___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16tendon_stiffness___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_stiffness));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_stiffness);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1858
 *     def tendon_stiffness(self): return self._tendon_stiffness
 *     @property
 *     def tendon_damping(self): return self._tendon_damping             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_frictionloss(self): return self._tendon_frictionloss
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14tendon_damping_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14tendon_damping_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14tendon_damping___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14tendon_damping___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_damping));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_damping);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1860
 *     def tendon_damping(self): return self._tendon_damping
 *     @property
 *     def tendon_frictionloss(self): return self._tendon_frictionloss             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_lengthspring(self): return self._tendon_lengthspring
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19tendon_frictionloss_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19tendon_frictionloss_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_19tendon_frictionloss___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_19tendon_frictionloss___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_frictionloss));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_frictionloss);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1862
 *     def tendon_frictionloss(self): return self._tendon_frictionloss
 *     @property
 *     def tendon_lengthspring(self): return self._tendon_lengthspring             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_length0(self): return self._tendon_length0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19tendon_lengthspring_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19tendon_lengthspring_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_19tendon_lengthspring___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_19tendon_lengthspring___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_lengthspring));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_lengthspring);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1864
 *     def tendon_lengthspring(self): return self._tendon_lengthspring
 *     @property
 *     def tendon_length0(self): return self._tendon_length0             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_invweight0(self): return self._tendon_invweight0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14tendon_length0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14tendon_length0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14tendon_length0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14tendon_length0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_length0));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_length0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1866
 *     def tendon_length0(self): return self._tendon_length0
 *     @property
 *     def tendon_invweight0(self): return self._tendon_invweight0             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_user(self): return self._tendon_user
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_invweight0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_invweight0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_invweight0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17tendon_invweight0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_invweight0));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_invweight0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1868
 *     def tendon_invweight0(self): return self._tendon_invweight0
 *     @property
 *     def tendon_user(self): return self._tendon_user             # <<<<<<<<<<<<<<
 *     @property
 *     def tendon_rgba(self): return self._tendon_rgba
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11tendon_user_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11tendon_user_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11tendon_user___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11tendon_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_user));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_user);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1870
 *     def tendon_user(self): return self._tendon_user
 *     @property
 *     def tendon_rgba(self): return self._tendon_rgba             # <<<<<<<<<<<<<<
 *     @property
 *     def wrap_type(self): return self._wrap_type
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11tendon_rgba_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11tendon_rgba_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11tendon_rgba___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11tendon_rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tendon_rgba));
  __pyx_r = ((PyObject *)__pyx_v_self->_tendon_rgba);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1872
 *     def tendon_rgba(self): return self._tendon_rgba
 *     @property
 *     def wrap_type(self): return self._wrap_type             # <<<<<<<<<<<<<<
 *     @property
 *     def wrap_objid(self): return self._wrap_objid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9wrap_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9wrap_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9wrap_type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9wrap_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_wrap_type));
  __pyx_r = ((PyObject *)__pyx_v_self->_wrap_type);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1874
 *     def wrap_type(self): return self._wrap_type
 *     @property
 *     def wrap_objid(self): return self._wrap_objid             # <<<<<<<<<<<<<<
 *     @property
 *     def wrap_prm(self): return self._wrap_prm
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10wrap_objid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10wrap_objid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10wrap_objid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10wrap_objid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_wrap_objid));
  __pyx_r = ((PyObject *)__pyx_v_self->_wrap_objid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1876
 *     def wrap_objid(self): return self._wrap_objid
 *     @property
 *     def wrap_prm(self): return self._wrap_prm             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_trntype(self): return self._actuator_trntype
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8wrap_prm_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8wrap_prm_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8wrap_prm___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8wrap_prm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_wrap_prm));
  __pyx_r = ((PyObject *)__pyx_v_self->_wrap_prm);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1878
 *     def wrap_prm(self): return self._wrap_prm
 *     @property
 *     def actuator_trntype(self): return self._actuator_trntype             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_dyntype(self): return self._actuator_dyntype
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_trntype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_trntype_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_trntype___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_trntype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_trntype));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_trntype);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1880
 *     def actuator_trntype(self): return self._actuator_trntype
 *     @property
 *     def actuator_dyntype(self): return self._actuator_dyntype             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_gaintype(self): return self._actuator_gaintype
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_dyntype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_dyntype_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_dyntype___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_dyntype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_dyntype));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_dyntype);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1882
 *     def actuator_dyntype(self): return self._actuator_dyntype
 *     @property
 *     def actuator_gaintype(self): return self._actuator_gaintype             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_biastype(self): return self._actuator_biastype
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17actuator_gaintype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17actuator_gaintype_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17actuator_gaintype___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17actuator_gaintype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_gaintype));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_gaintype);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1884
 *     def actuator_gaintype(self): return self._actuator_gaintype
 *     @property
 *     def actuator_biastype(self): return self._actuator_biastype             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_trnid(self): return self._actuator_trnid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17actuator_biastype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17actuator_biastype_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17actuator_biastype___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17actuator_biastype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_biastype));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_biastype);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1886
 *     def actuator_biastype(self): return self._actuator_biastype
 *     @property
 *     def actuator_trnid(self): return self._actuator_trnid             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_ctrllimited(self): return self._actuator_ctrllimited
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14actuator_trnid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14actuator_trnid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14actuator_trnid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14actuator_trnid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_trnid));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_trnid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1888
 *     def actuator_trnid(self): return self._actuator_trnid
 *     @property
 *     def actuator_ctrllimited(self): return self._actuator_ctrllimited             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_forcelimited(self): return self._actuator_forcelimited
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_20actuator_ctrllimited_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_20actuator_ctrllimited_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_20actuator_ctrllimited___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_20actuator_ctrllimited___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_ctrllimited));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_ctrllimited);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1890
 *     def actuator_ctrllimited(self): return self._actuator_ctrllimited
 *     @property
 *     def actuator_forcelimited(self): return self._actuator_forcelimited             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_dynprm(self): return self._actuator_dynprm
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_21actuator_forcelimited_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_21actuator_forcelimited_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_21actuator_forcelimited___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_21actuator_forcelimited___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_forcelimited));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_forcelimited);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1892
 *     def actuator_forcelimited(self): return self._actuator_forcelimited
 *     @property
 *     def actuator_dynprm(self): return self._actuator_dynprm             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_gainprm(self): return self._actuator_gainprm
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15actuator_dynprm_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15actuator_dynprm_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_15actuator_dynprm___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15actuator_dynprm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_dynprm));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_dynprm);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1894
 *     def actuator_dynprm(self): return self._actuator_dynprm
 *     @property
 *     def actuator_gainprm(self): return self._actuator_gainprm             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_biasprm(self): return self._actuator_biasprm
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_gainprm_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_gainprm_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_gainprm___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_gainprm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_gainprm));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_gainprm);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1896
 *     def actuator_gainprm(self): return self._actuator_gainprm
 *     @property
 *     def actuator_biasprm(self): return self._actuator_biasprm             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_ctrlrange(self): return self._actuator_ctrlrange
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_biasprm_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_biasprm_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_biasprm___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_biasprm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_biasprm));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_biasprm);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1898
 *     def actuator_biasprm(self): return self._actuator_biasprm
 *     @property
 *     def actuator_ctrlrange(self): return self._actuator_ctrlrange             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_forcerange(self): return self._actuator_forcerange
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_18actuator_ctrlrange_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_18actuator_ctrlrange_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_18actuator_ctrlrange___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_18actuator_ctrlrange___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_ctrlrange));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_ctrlrange);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1900
 *     def actuator_ctrlrange(self): return self._actuator_ctrlrange
 *     @property
 *     def actuator_forcerange(self): return self._actuator_forcerange             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_gear(self): return self._actuator_gear
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19actuator_forcerange_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19actuator_forcerange_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_19actuator_forcerange___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_19actuator_forcerange___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_forcerange));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_forcerange);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1902
 *     def actuator_forcerange(self): return self._actuator_forcerange
 *     @property
 *     def actuator_gear(self): return self._actuator_gear             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_cranklength(self): return self._actuator_cranklength
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13actuator_gear_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13actuator_gear_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13actuator_gear___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13actuator_gear___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_gear));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_gear);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1904
 *     def actuator_gear(self): return self._actuator_gear
 *     @property
 *     def actuator_cranklength(self): return self._actuator_cranklength             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_invweight0(self): return self._actuator_invweight0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_20actuator_cranklength_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_20actuator_cranklength_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_20actuator_cranklength___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_20actuator_cranklength___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_cranklength));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_cranklength);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1906
 *     def actuator_cranklength(self): return self._actuator_cranklength
 *     @property
 *     def actuator_invweight0(self): return self._actuator_invweight0             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_length0(self): return self._actuator_length0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19actuator_invweight0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19actuator_invweight0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_19actuator_invweight0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_19actuator_invweight0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_invweight0));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_invweight0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1908
 *     def actuator_invweight0(self): return self._actuator_invweight0
 *     @property
 *     def actuator_length0(self): return self._actuator_length0             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_lengthrange(self): return self._actuator_lengthrange
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_length0_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_length0_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_length0___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16actuator_length0___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_length0));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_length0);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1910
 *     def actuator_length0(self): return self._actuator_length0
 *     @property
 *     def actuator_lengthrange(self): return self._actuator_lengthrange             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_user(self): return self._actuator_user
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_20actuator_lengthrange_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_20actuator_lengthrange_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_20actuator_lengthrange___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_20actuator_lengthrange___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_lengthrange));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_lengthrange);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1912
 *     def actuator_lengthrange(self): return self._actuator_lengthrange
 *     @property
 *     def actuator_user(self): return self._actuator_user             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_type(self): return self._sensor_type
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13actuator_user_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13actuator_user_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13actuator_user___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13actuator_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_user));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_user);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1914
 *     def actuator_user(self): return self._actuator_user
 *     @property
 *     def sensor_type(self): return self._sensor_type             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_datatype(self): return self._sensor_datatype
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11sensor_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11sensor_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11sensor_type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11sensor_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_type));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_type);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1916
 *     def sensor_type(self): return self._sensor_type
 *     @property
 *     def sensor_datatype(self): return self._sensor_datatype             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_needstage(self): return self._sensor_needstage
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15sensor_datatype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15sensor_datatype_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_15sensor_datatype___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15sensor_datatype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_datatype));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_datatype);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1918
 *     def sensor_datatype(self): return self._sensor_datatype
 *     @property
 *     def sensor_needstage(self): return self._sensor_needstage             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_objtype(self): return self._sensor_objtype
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16sensor_needstage_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16sensor_needstage_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16sensor_needstage___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16sensor_needstage___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_needstage));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_needstage);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1920
 *     def sensor_needstage(self): return self._sensor_needstage
 *     @property
 *     def sensor_objtype(self): return self._sensor_objtype             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_objid(self): return self._sensor_objid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14sensor_objtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14sensor_objtype_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14sensor_objtype___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14sensor_objtype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_objtype));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_objtype);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1922
 *     def sensor_objtype(self): return self._sensor_objtype
 *     @property
 *     def sensor_objid(self): return self._sensor_objid             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_dim(self): return self._sensor_dim
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12sensor_objid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12sensor_objid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12sensor_objid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12sensor_objid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_objid));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_objid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1924
 *     def sensor_objid(self): return self._sensor_objid
 *     @property
 *     def sensor_dim(self): return self._sensor_dim             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_adr(self): return self._sensor_adr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10sensor_dim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10sensor_dim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10sensor_dim___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10sensor_dim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_dim));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_dim);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1926
 *     def sensor_dim(self): return self._sensor_dim
 *     @property
 *     def sensor_adr(self): return self._sensor_adr             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_cutoff(self): return self._sensor_cutoff
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10sensor_adr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10sensor_adr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10sensor_adr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10sensor_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_adr));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_adr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1928
 *     def sensor_adr(self): return self._sensor_adr
 *     @property
 *     def sensor_cutoff(self): return self._sensor_cutoff             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_noise(self): return self._sensor_noise
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13sensor_cutoff_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13sensor_cutoff_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13sensor_cutoff___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13sensor_cutoff___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_cutoff));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_cutoff);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1930
 *     def sensor_cutoff(self): return self._sensor_cutoff
 *     @property
 *     def sensor_noise(self): return self._sensor_noise             # <<<<<<<<<<<<<<
 *     @property
 *     def sensor_user(self): return self._sensor_user
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12sensor_noise_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12sensor_noise_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12sensor_noise___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12sensor_noise___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_noise));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_noise);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1932
 *     def sensor_noise(self): return self._sensor_noise
 *     @property
 *     def sensor_user(self): return self._sensor_user             # <<<<<<<<<<<<<<
 *     @property
 *     def numeric_adr(self): return self._numeric_adr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11sensor_user_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11sensor_user_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11sensor_user___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11sensor_user___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensor_user));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensor_user);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1934
 *     def sensor_user(self): return self._sensor_user
 *     @property
 *     def numeric_adr(self): return self._numeric_adr             # <<<<<<<<<<<<<<
 *     @property
 *     def numeric_size(self): return self._numeric_size
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11numeric_adr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11numeric_adr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11numeric_adr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11numeric_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_numeric_adr));
  __pyx_r = ((PyObject *)__pyx_v_self->_numeric_adr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1936
 *     def numeric_adr(self): return self._numeric_adr
 *     @property
 *     def numeric_size(self): return self._numeric_size             # <<<<<<<<<<<<<<
 *     @property
 *     def numeric_data(self): return self._numeric_data
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12numeric_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12numeric_size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12numeric_size___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12numeric_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_numeric_size));
  __pyx_r = ((PyObject *)__pyx_v_self->_numeric_size);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1938
 *     def numeric_size(self): return self._numeric_size
 *     @property
 *     def numeric_data(self): return self._numeric_data             # <<<<<<<<<<<<<<
 *     @property
 *     def text_adr(self): return self._text_adr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12numeric_data_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12numeric_data_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12numeric_data___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12numeric_data___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_numeric_data));
  __pyx_r = ((PyObject *)__pyx_v_self->_numeric_data);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1940
 *     def numeric_data(self): return self._numeric_data
 *     @property
 *     def text_adr(self): return self._text_adr             # <<<<<<<<<<<<<<
 *     @property
 *     def text_size(self): return self._text_size
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8text_adr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8text_adr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8text_adr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8text_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_text_adr));
  __pyx_r = ((PyObject *)__pyx_v_self->_text_adr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1942
 *     def text_adr(self): return self._text_adr
 *     @property
 *     def text_size(self): return self._text_size             # <<<<<<<<<<<<<<
 *     @property
 *     def text_data(self): return self._text_data
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9text_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9text_size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9text_size___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9text_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_text_size));
  __pyx_r = ((PyObject *)__pyx_v_self->_text_size);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1944
 *     def text_size(self): return self._text_size
 *     @property
 *     def text_data(self): return self._text_data             # <<<<<<<<<<<<<<
 *     @property
 *     def tuple_adr(self): return self._tuple_adr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9text_data_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9text_data_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9text_data___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9text_data___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_text_data));
  __pyx_r = ((PyObject *)__pyx_v_self->_text_data);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1946
 *     def text_data(self): return self._text_data
 *     @property
 *     def tuple_adr(self): return self._tuple_adr             # <<<<<<<<<<<<<<
 *     @property
 *     def tuple_size(self): return self._tuple_size
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9tuple_adr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9tuple_adr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_9tuple_adr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_9tuple_adr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tuple_adr));
  __pyx_r = ((PyObject *)__pyx_v_self->_tuple_adr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1948
 *     def tuple_adr(self): return self._tuple_adr
 *     @property
 *     def tuple_size(self): return self._tuple_size             # <<<<<<<<<<<<<<
 *     @property
 *     def tuple_objtype(self): return self._tuple_objtype
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tuple_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tuple_size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tuple_size___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10tuple_size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tuple_size));
  __pyx_r = ((PyObject *)__pyx_v_self->_tuple_size);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1950
 *     def tuple_size(self): return self._tuple_size
 *     @property
 *     def tuple_objtype(self): return self._tuple_objtype             # <<<<<<<<<<<<<<
 *     @property
 *     def tuple_objid(self): return self._tuple_objid
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13tuple_objtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13tuple_objtype_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13tuple_objtype___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13tuple_objtype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tuple_objtype));
  __pyx_r = ((PyObject *)__pyx_v_self->_tuple_objtype);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1952
 *     def tuple_objtype(self): return self._tuple_objtype
 *     @property
 *     def tuple_objid(self): return self._tuple_objid             # <<<<<<<<<<<<<<
 *     @property
 *     def tuple_objprm(self): return self._tuple_objprm
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11tuple_objid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11tuple_objid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11tuple_objid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11tuple_objid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tuple_objid));
  __pyx_r = ((PyObject *)__pyx_v_self->_tuple_objid);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1954
 *     def tuple_objid(self): return self._tuple_objid
 *     @property
 *     def tuple_objprm(self): return self._tuple_objprm             # <<<<<<<<<<<<<<
 *     @property
 *     def key_time(self): return self._key_time
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tuple_objprm_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tuple_objprm_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tuple_objprm___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12tuple_objprm___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_tuple_objprm));
  __pyx_r = ((PyObject *)__pyx_v_self->_tuple_objprm);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1956
 *     def tuple_objprm(self): return self._tuple_objprm
 *     @property
 *     def key_time(self): return self._key_time             # <<<<<<<<<<<<<<
 *     @property
 *     def key_qpos(self): return self._key_qpos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8key_time_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8key_time_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8key_time___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8key_time___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_key_time));
  __pyx_r = ((PyObject *)__pyx_v_self->_key_time);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1958
 *     def key_time(self): return self._key_time
 *     @property
 *     def key_qpos(self): return self._key_qpos             # <<<<<<<<<<<<<<
 *     @property
 *     def key_qvel(self): return self._key_qvel
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8key_qpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8key_qpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8key_qpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8key_qpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_key_qpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_key_qpos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1960
 *     def key_qpos(self): return self._key_qpos
 *     @property
 *     def key_qvel(self): return self._key_qvel             # <<<<<<<<<<<<<<
 *     @property
 *     def key_act(self): return self._key_act
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8key_qvel_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_8key_qvel_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_8key_qvel___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_8key_qvel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_key_qvel));
  __pyx_r = ((PyObject *)__pyx_v_self->_key_qvel);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1962
 *     def key_qvel(self): return self._key_qvel
 *     @property
 *     def key_act(self): return self._key_act             # <<<<<<<<<<<<<<
 *     @property
 *     def name_bodyadr(self): return self._name_bodyadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7key_act_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7key_act_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_7key_act___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_7key_act___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_key_act));
  __pyx_r = ((PyObject *)__pyx_v_self->_key_act);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1964
 *     def key_act(self): return self._key_act
 *     @property
 *     def name_bodyadr(self): return self._name_bodyadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_jntadr(self): return self._name_jntadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_bodyadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_bodyadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_bodyadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_bodyadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_bodyadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_bodyadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1966
 *     def name_bodyadr(self): return self._name_bodyadr
 *     @property
 *     def name_jntadr(self): return self._name_jntadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_geomadr(self): return self._name_geomadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_jntadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_jntadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_jntadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_jntadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_jntadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_jntadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1968
 *     def name_jntadr(self): return self._name_jntadr
 *     @property
 *     def name_geomadr(self): return self._name_geomadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_siteadr(self): return self._name_siteadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_geomadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_geomadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_geomadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_geomadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_geomadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_geomadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1970
 *     def name_geomadr(self): return self._name_geomadr
 *     @property
 *     def name_siteadr(self): return self._name_siteadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_camadr(self): return self._name_camadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_siteadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_siteadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_siteadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_siteadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_siteadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_siteadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1972
 *     def name_siteadr(self): return self._name_siteadr
 *     @property
 *     def name_camadr(self): return self._name_camadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_lightadr(self): return self._name_lightadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_camadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_camadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_camadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_camadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_camadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_camadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1974
 *     def name_camadr(self): return self._name_camadr
 *     @property
 *     def name_lightadr(self): return self._name_lightadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_meshadr(self): return self._name_meshadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13name_lightadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13name_lightadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13name_lightadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13name_lightadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_lightadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_lightadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1976
 *     def name_lightadr(self): return self._name_lightadr
 *     @property
 *     def name_meshadr(self): return self._name_meshadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_hfieldadr(self): return self._name_hfieldadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_meshadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_meshadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_meshadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_meshadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_meshadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_meshadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1978
 *     def name_meshadr(self): return self._name_meshadr
 *     @property
 *     def name_hfieldadr(self): return self._name_hfieldadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_texadr(self): return self._name_texadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14name_hfieldadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14name_hfieldadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14name_hfieldadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14name_hfieldadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_hfieldadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_hfieldadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1980
 *     def name_hfieldadr(self): return self._name_hfieldadr
 *     @property
 *     def name_texadr(self): return self._name_texadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_matadr(self): return self._name_matadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_texadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_texadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_texadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_texadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_texadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_texadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1982
 *     def name_texadr(self): return self._name_texadr
 *     @property
 *     def name_matadr(self): return self._name_matadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_eqadr(self): return self._name_eqadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_matadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_matadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_matadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11name_matadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_matadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_matadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1984
 *     def name_matadr(self): return self._name_matadr
 *     @property
 *     def name_eqadr(self): return self._name_eqadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_tendonadr(self): return self._name_tendonadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10name_eqadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10name_eqadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10name_eqadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10name_eqadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_eqadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_eqadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1986
 *     def name_eqadr(self): return self._name_eqadr
 *     @property
 *     def name_tendonadr(self): return self._name_tendonadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_actuatoradr(self): return self._name_actuatoradr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14name_tendonadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14name_tendonadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14name_tendonadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14name_tendonadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_tendonadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_tendonadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1988
 *     def name_tendonadr(self): return self._name_tendonadr
 *     @property
 *     def name_actuatoradr(self): return self._name_actuatoradr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_sensoradr(self): return self._name_sensoradr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16name_actuatoradr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_16name_actuatoradr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_16name_actuatoradr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_16name_actuatoradr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_actuatoradr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_actuatoradr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1990
 *     def name_actuatoradr(self): return self._name_actuatoradr
 *     @property
 *     def name_sensoradr(self): return self._name_sensoradr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_numericadr(self): return self._name_numericadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14name_sensoradr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14name_sensoradr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14name_sensoradr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14name_sensoradr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_sensoradr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_sensoradr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1992
 *     def name_sensoradr(self): return self._name_sensoradr
 *     @property
 *     def name_numericadr(self): return self._name_numericadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_textadr(self): return self._name_textadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15name_numericadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15name_numericadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_15name_numericadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15name_numericadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_numericadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_numericadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1994
 *     def name_numericadr(self): return self._name_numericadr
 *     @property
 *     def name_textadr(self): return self._name_textadr             # <<<<<<<<<<<<<<
 *     @property
 *     def name_tupleadr(self): return self._name_tupleadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_textadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_textadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_textadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12name_textadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_textadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_textadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1996
 *     def name_textadr(self): return self._name_textadr
 *     @property
 *     def name_tupleadr(self): return self._name_tupleadr             # <<<<<<<<<<<<<<
 *     @property
 *     def names(self): return self._names
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13name_tupleadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13name_tupleadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13name_tupleadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13name_tupleadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_name_tupleadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_name_tupleadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":1998
 *     def name_tupleadr(self): return self._name_tupleadr
 *     @property
 *     def names(self): return self._names             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjModel WrapMjModel(mjModel* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_5names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_5names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_names));
  __pyx_r = ((PyObject *)__pyx_v_self->_names);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":888
 *     cdef np.ndarray _names
 * 
 *     cdef readonly tuple body_names, joint_names, geom_names, site_names, light_names, camera_names, actuator_names, sensor_names             # <<<<<<<<<<<<<<
 *     cdef readonly dict _body_id2name, _joint_id2name, _geom_id2name, _site_id2name, _light_id2name, _camera_id2name, _actuator_id2name, _sensor_id2name
 *     cdef readonly dict _body_name2id, _joint_name2id, _geom_name2id, _site_name2id, _light_name2id, _camera_name2id, _actuator_name2id, _sensor_name2id
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10body_names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10body_names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10body_names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10body_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->body_names);
  __pyx_r = __pyx_v_self->body_names;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11joint_names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11joint_names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11joint_names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11joint_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->joint_names);
  __pyx_r = __pyx_v_self->joint_names;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10geom_names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10geom_names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10geom_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->geom_names);
  __pyx_r = __pyx_v_self->geom_names;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10site_names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_10site_names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_10site_names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_10site_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->site_names);
  __pyx_r = __pyx_v_self->site_names;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11light_names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11light_names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_11light_names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_11light_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->light_names);
  __pyx_r = __pyx_v_self->light_names;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12camera_names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12camera_names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12camera_names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12camera_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->camera_names);
  __pyx_r = __pyx_v_self->camera_names;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14actuator_names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14actuator_names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14actuator_names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14actuator_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->actuator_names);
  __pyx_r = __pyx_v_self->actuator_names;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12sensor_names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_12sensor_names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_12sensor_names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_12sensor_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->sensor_names);
  __pyx_r = __pyx_v_self->sensor_names;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":889
 * 
 *     cdef readonly tuple body_names, joint_names, geom_names, site_names, light_names, camera_names, actuator_names, sensor_names
 *     cdef readonly dict _body_id2name, _joint_id2name, _geom_id2name, _site_id2name, _light_id2name, _camera_id2name, _actuator_id2name, _sensor_id2name             # <<<<<<<<<<<<<<
 *     cdef readonly dict _body_name2id, _joint_name2id, _geom_name2id, _site_name2id, _light_name2id, _camera_name2id, _actuator_name2id, _sensor_name2id
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_body_id2name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_body_id2name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_body_id2name___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_body_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_body_id2name);
  __pyx_r = __pyx_v_self->_body_id2name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_joint_id2name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_joint_id2name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_joint_id2name___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_joint_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_joint_id2name);
  __pyx_r = __pyx_v_self->_joint_id2name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_geom_id2name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_geom_id2name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_geom_id2name___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_geom_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_geom_id2name);
  __pyx_r = __pyx_v_self->_geom_id2name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_site_id2name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_site_id2name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_site_id2name___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_site_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_site_id2name);
  __pyx_r = __pyx_v_self->_site_id2name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_light_id2name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_light_id2name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_light_id2name___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_light_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_light_id2name);
  __pyx_r = __pyx_v_self->_light_id2name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_camera_id2name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_camera_id2name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_camera_id2name___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_camera_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_camera_id2name);
  __pyx_r = __pyx_v_self->_camera_id2name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_actuator_id2name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_actuator_id2name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_actuator_id2name___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_actuator_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_actuator_id2name);
  __pyx_r = __pyx_v_self->_actuator_id2name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_sensor_id2name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_sensor_id2name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_sensor_id2name___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_sensor_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_sensor_id2name);
  __pyx_r = __pyx_v_self->_sensor_id2name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":890
 *     cdef readonly tuple body_names, joint_names, geom_names, site_names, light_names, camera_names, actuator_names, sensor_names
 *     cdef readonly dict _body_id2name, _joint_id2name, _geom_id2name, _site_id2name, _light_id2name, _camera_id2name, _actuator_id2name, _sensor_id2name
 *     cdef readonly dict _body_name2id, _joint_name2id, _geom_name2id, _site_name2id, _light_name2id, _camera_name2id, _actuator_name2id, _sensor_name2id             # <<<<<<<<<<<<<<
 * 
 *     def body_id2name(self, id):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_body_name2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_body_name2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_body_name2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_body_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_body_name2id);
  __pyx_r = __pyx_v_self->_body_name2id;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_joint_name2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_joint_name2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_joint_name2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_joint_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_joint_name2id);
  __pyx_r = __pyx_v_self->_joint_name2id;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_geom_name2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_geom_name2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_geom_name2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_geom_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_geom_name2id);
  __pyx_r = __pyx_v_self->_geom_name2id;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_site_name2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_site_name2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_site_name2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_13_site_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_site_name2id);
  __pyx_r = __pyx_v_self->_site_name2id;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_light_name2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_light_name2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_light_name2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14_light_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_light_name2id);
  __pyx_r = __pyx_v_self->_light_name2id;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_camera_name2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_camera_name2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_camera_name2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_camera_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_camera_name2id);
  __pyx_r = __pyx_v_self->_camera_name2id;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_actuator_name2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_actuator_name2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_actuator_name2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_actuator_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_actuator_name2id);
  __pyx_r = __pyx_v_self->_actuator_name2id;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_sensor_name2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_sensor_name2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_sensor_name2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_15_sensor_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_sensor_name2id);
  __pyx_r = __pyx_v_self->_sensor_name2id;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":971
 *             raise ValueError("No \"sensor\" with name %s exists. Available \"sensor\" names = %s." % (name, self.sensor_names))
 *         return self._sensor_name2id[name]
 *     cdef public tuple userdata_names             # <<<<<<<<<<<<<<
 *     cdef public dict _userdata_id2name
 *     cdef public dict _userdata_name2id
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14userdata_names_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_14userdata_names_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14userdata_names___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_14userdata_names___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->userdata_names);
  __pyx_r = __pyx_v_self->userdata_names;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14userdata_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14userdata_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14userdata_names_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14userdata_names_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__set__", 0);
  if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(3, 971, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->userdata_names);
  __Pyx_DECREF(__pyx_v_self->userdata_names);
  __pyx_v_self->userdata_names = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.userdata_names.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14userdata_names_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14userdata_names_5__del__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14userdata_names_4__del__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_14userdata_names_4__del__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->userdata_names);
  __Pyx_DECREF(__pyx_v_self->userdata_names);
  __pyx_v_self->userdata_names = ((PyObject*)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":972
 *         return self._sensor_name2id[name]
 *     cdef public tuple userdata_names
 *     cdef public dict _userdata_id2name             # <<<<<<<<<<<<<<
 *     cdef public dict _userdata_name2id
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_userdata_id2name);
  __pyx_r = __pyx_v_self->_userdata_id2name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__set__", 0);
  if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(3, 972, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_userdata_id2name);
  __Pyx_DECREF(__pyx_v_self->_userdata_id2name);
  __pyx_v_self->_userdata_id2name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel._userdata_id2name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_5__del__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_4__del__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_4__del__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_userdata_id2name);
  __Pyx_DECREF(__pyx_v_self->_userdata_id2name);
  __pyx_v_self->_userdata_id2name = ((PyObject*)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":973
 *     cdef public tuple userdata_names
 *     cdef public dict _userdata_id2name
 *     cdef public dict _userdata_name2id             # <<<<<<<<<<<<<<
 * 
 *     def userdata_id2name(self, id):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_userdata_name2id);
  __pyx_r = __pyx_v_self->_userdata_name2id;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__set__", 0);
  if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(3, 973, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_userdata_name2id);
  __Pyx_DECREF(__pyx_v_self->_userdata_name2id);
  __pyx_v_self->_userdata_name2id = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel._userdata_name2id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_5__del__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_4__del__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_4__del__(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_userdata_name2id);
  __Pyx_DECREF(__pyx_v_self->_userdata_name2id);
  __pyx_v_self->_userdata_name2id = ((PyObject*)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_49__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_49__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_48__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_48__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_51__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjModel_51__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjModel_50__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjModel_50__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjModel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2000
 *     def names(self): return self._names
 * 
 * cdef PyMjModel WrapMjModel(mjModel* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjModel o = PyMjModel()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_f_9mujoco_py_4cymj_WrapMjModel(mjModel *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjModel", 0);

  /* "mujoco_py/generated/wrappers.pxi":2001
 * 
 * cdef PyMjModel WrapMjModel(mjModel* p):
 *     cdef PyMjModel o = PyMjModel()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjModel), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2002
 * cdef PyMjModel WrapMjModel(mjModel* p):
 *     cdef PyMjModel o = PyMjModel()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjModel *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":2003
 *     cdef PyMjModel o = PyMjModel()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjContact(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2000
 *     def names(self): return self._names
 * 
 * cdef PyMjModel WrapMjModel(mjModel* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjModel o = PyMjModel()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2016
 *     cdef np.ndarray _H
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2017
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":2016
 *     cdef np.ndarray _H
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2021
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjContact* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2023
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjContact* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_11PyMjContact__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, mjContact *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":2025
 *     cdef void _set(self, mjContact* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":2028
 * 
 * 
 *         self._pos = _wrap_mjtNum_1d(&p.pos[0], 3)             # <<<<<<<<<<<<<<
 *         self._frame = _wrap_mjtNum_1d(&p.frame[0], 9)
 *         self._friction = _wrap_mjtNum_1d(&p.friction[0], 5)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->pos[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pos));
  __pyx_v_self->_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2029
 * 
 *         self._pos = _wrap_mjtNum_1d(&p.pos[0], 3)
 *         self._frame = _wrap_mjtNum_1d(&p.frame[0], 9)             # <<<<<<<<<<<<<<
 *         self._friction = _wrap_mjtNum_1d(&p.friction[0], 5)
 *         self._solref = _wrap_mjtNum_1d(&p.solref[0], 2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->frame[0])), 9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_frame);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_frame));
  __pyx_v_self->_frame = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2030
 *         self._pos = _wrap_mjtNum_1d(&p.pos[0], 3)
 *         self._frame = _wrap_mjtNum_1d(&p.frame[0], 9)
 *         self._friction = _wrap_mjtNum_1d(&p.friction[0], 5)             # <<<<<<<<<<<<<<
 *         self._solref = _wrap_mjtNum_1d(&p.solref[0], 2)
 *         self._solimp = _wrap_mjtNum_1d(&p.solimp[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->friction[0])), 5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_friction);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_friction));
  __pyx_v_self->_friction = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2031
 *         self._frame = _wrap_mjtNum_1d(&p.frame[0], 9)
 *         self._friction = _wrap_mjtNum_1d(&p.friction[0], 5)
 *         self._solref = _wrap_mjtNum_1d(&p.solref[0], 2)             # <<<<<<<<<<<<<<
 *         self._solimp = _wrap_mjtNum_1d(&p.solimp[0], 3)
 *         self._H = _wrap_mjtNum_1d(&p.H[0], 36)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->solref[0])), 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_solref);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_solref));
  __pyx_v_self->_solref = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2032
 *         self._friction = _wrap_mjtNum_1d(&p.friction[0], 5)
 *         self._solref = _wrap_mjtNum_1d(&p.solref[0], 2)
 *         self._solimp = _wrap_mjtNum_1d(&p.solimp[0], 3)             # <<<<<<<<<<<<<<
 *         self._H = _wrap_mjtNum_1d(&p.H[0], 36)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->solimp[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_solimp);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_solimp));
  __pyx_v_self->_solimp = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2033
 *         self._solref = _wrap_mjtNum_1d(&p.solref[0], 2)
 *         self._solimp = _wrap_mjtNum_1d(&p.solimp[0], 3)
 *         self._H = _wrap_mjtNum_1d(&p.H[0], 36)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->H[0])), 36)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_H);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_H));
  __pyx_v_self->_H = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2023
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjContact* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjContact._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":2036
 * 
 *     @property
 *     def dist(self): return self.ptr.dist             # <<<<<<<<<<<<<<
 *     @dist.setter
 *     def dist(self, mjtNum x): self.ptr.dist = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_4dist_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_4dist_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_4dist___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_4dist___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->dist); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.dist.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2038
 *     def dist(self): return self.ptr.dist
 *     @dist.setter
 *     def dist(self, mjtNum x): self.ptr.dist = x             # <<<<<<<<<<<<<<
 *     @property
 *     def includemargin(self): return self.ptr.includemargin
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_4dist_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_4dist_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 2038, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.dist.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_4dist_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_4dist_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->dist = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2040
 *     def dist(self, mjtNum x): self.ptr.dist = x
 *     @property
 *     def includemargin(self): return self.ptr.includemargin             # <<<<<<<<<<<<<<
 *     @includemargin.setter
 *     def includemargin(self, mjtNum x): self.ptr.includemargin = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_13includemargin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_13includemargin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_13includemargin___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_13includemargin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->includemargin); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.includemargin.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2042
 *     def includemargin(self): return self.ptr.includemargin
 *     @includemargin.setter
 *     def includemargin(self, mjtNum x): self.ptr.includemargin = x             # <<<<<<<<<<<<<<
 *     @property
 *     def mu(self): return self.ptr.mu
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_13includemargin_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_13includemargin_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 2042, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.includemargin.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_13includemargin_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_13includemargin_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->includemargin = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2044
 *     def includemargin(self, mjtNum x): self.ptr.includemargin = x
 *     @property
 *     def mu(self): return self.ptr.mu             # <<<<<<<<<<<<<<
 *     @mu.setter
 *     def mu(self, mjtNum x): self.ptr.mu = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_2mu_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_2mu_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_2mu___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_2mu___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->mu); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.mu.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2046
 *     def mu(self): return self.ptr.mu
 *     @mu.setter
 *     def mu(self, mjtNum x): self.ptr.mu = x             # <<<<<<<<<<<<<<
 *     @property
 *     def dim(self): return self.ptr.dim
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_2mu_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_2mu_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 2046, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.mu.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_2mu_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_2mu_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->mu = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2048
 *     def mu(self, mjtNum x): self.ptr.mu = x
 *     @property
 *     def dim(self): return self.ptr.dim             # <<<<<<<<<<<<<<
 *     @dim.setter
 *     def dim(self, int x): self.ptr.dim = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_3dim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_3dim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_3dim___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_3dim___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.dim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2050
 *     def dim(self): return self.ptr.dim
 *     @dim.setter
 *     def dim(self, int x): self.ptr.dim = x             # <<<<<<<<<<<<<<
 *     @property
 *     def geom1(self): return self.ptr.geom1
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_3dim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_3dim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2050, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.dim.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_3dim_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_3dim_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->dim = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2052
 *     def dim(self, int x): self.ptr.dim = x
 *     @property
 *     def geom1(self): return self.ptr.geom1             # <<<<<<<<<<<<<<
 *     @geom1.setter
 *     def geom1(self, int x): self.ptr.geom1 = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom1_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom1_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom1___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom1___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->geom1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.geom1.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2054
 *     def geom1(self): return self.ptr.geom1
 *     @geom1.setter
 *     def geom1(self, int x): self.ptr.geom1 = x             # <<<<<<<<<<<<<<
 *     @property
 *     def geom2(self): return self.ptr.geom2
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom1_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom1_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2054, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.geom1.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom1_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom1_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->geom1 = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2056
 *     def geom1(self, int x): self.ptr.geom1 = x
 *     @property
 *     def geom2(self): return self.ptr.geom2             # <<<<<<<<<<<<<<
 *     @geom2.setter
 *     def geom2(self, int x): self.ptr.geom2 = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom2_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom2_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom2___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom2___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->geom2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.geom2.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2058
 *     def geom2(self): return self.ptr.geom2
 *     @geom2.setter
 *     def geom2(self, int x): self.ptr.geom2 = x             # <<<<<<<<<<<<<<
 *     @property
 *     def exclude(self): return self.ptr.exclude
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2058, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.geom2.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom2_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_5geom2_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->geom2 = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2060
 *     def geom2(self, int x): self.ptr.geom2 = x
 *     @property
 *     def exclude(self): return self.ptr.exclude             # <<<<<<<<<<<<<<
 *     @exclude.setter
 *     def exclude(self, int x): self.ptr.exclude = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_7exclude_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_7exclude_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_7exclude___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_7exclude___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->exclude); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.exclude.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2062
 *     def exclude(self): return self.ptr.exclude
 *     @exclude.setter
 *     def exclude(self, int x): self.ptr.exclude = x             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_address(self): return self.ptr.efc_address
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_7exclude_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_7exclude_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2062, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.exclude.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_7exclude_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_7exclude_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->exclude = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2064
 *     def exclude(self, int x): self.ptr.exclude = x
 *     @property
 *     def efc_address(self): return self.ptr.efc_address             # <<<<<<<<<<<<<<
 *     @efc_address.setter
 *     def efc_address(self, int x): self.ptr.efc_address = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_11efc_address_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_11efc_address_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_11efc_address___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_11efc_address___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->efc_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.efc_address.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2066
 *     def efc_address(self): return self.ptr.efc_address
 *     @efc_address.setter
 *     def efc_address(self, int x): self.ptr.efc_address = x             # <<<<<<<<<<<<<<
 *     @property
 *     def pos(self): return self._pos
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_11efc_address_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjContact_11efc_address_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2066, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.efc_address.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_11efc_address_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjContact_11efc_address_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->efc_address = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2068
 *     def efc_address(self, int x): self.ptr.efc_address = x
 *     @property
 *     def pos(self): return self._pos             # <<<<<<<<<<<<<<
 *     @property
 *     def frame(self): return self._frame
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_3pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_3pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_3pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_3pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2070
 *     def pos(self): return self._pos
 *     @property
 *     def frame(self): return self._frame             # <<<<<<<<<<<<<<
 *     @property
 *     def friction(self): return self._friction
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_5frame_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_5frame_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_5frame___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_5frame___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_frame));
  __pyx_r = ((PyObject *)__pyx_v_self->_frame);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2072
 *     def frame(self): return self._frame
 *     @property
 *     def friction(self): return self._friction             # <<<<<<<<<<<<<<
 *     @property
 *     def solref(self): return self._solref
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_8friction_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_8friction_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_8friction___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_8friction___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_friction));
  __pyx_r = ((PyObject *)__pyx_v_self->_friction);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2074
 *     def friction(self): return self._friction
 *     @property
 *     def solref(self): return self._solref             # <<<<<<<<<<<<<<
 *     @property
 *     def solimp(self): return self._solimp
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_6solref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_6solref_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_6solref___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_6solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_solref));
  __pyx_r = ((PyObject *)__pyx_v_self->_solref);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2076
 *     def solref(self): return self._solref
 *     @property
 *     def solimp(self): return self._solimp             # <<<<<<<<<<<<<<
 *     @property
 *     def H(self): return self._H
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_6solimp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_6solimp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_6solimp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_6solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_solimp));
  __pyx_r = ((PyObject *)__pyx_v_self->_solimp);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2078
 *     def solimp(self): return self._solimp
 *     @property
 *     def H(self): return self._H             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjContact WrapMjContact(mjContact* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_1H_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_1H_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_1H___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_1H___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_H));
  __pyx_r = ((PyObject *)__pyx_v_self->_H);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjContact_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjContact_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjContact_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjContact.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2080
 *     def H(self): return self._H
 * 
 * cdef PyMjContact WrapMjContact(mjContact* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjContact o = PyMjContact()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_f_9mujoco_py_4cymj_WrapMjContact(mjContact *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjContact", 0);

  /* "mujoco_py/generated/wrappers.pxi":2081
 * 
 * cdef PyMjContact WrapMjContact(mjContact* p):
 *     cdef PyMjContact o = PyMjContact()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjContact), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2082
 * cdef PyMjContact WrapMjContact(mjContact* p):
 *     cdef PyMjContact o = PyMjContact()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjContact *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":2083
 *     cdef PyMjContact o = PyMjContact()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjWarningStat(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2080
 *     def H(self): return self._H
 * 
 * cdef PyMjContact WrapMjContact(mjContact* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjContact o = PyMjContact()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjContact", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2090
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2091
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":2090
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2095
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjWarningStat* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjWarningStat.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2097
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjWarningStat* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_15PyMjWarningStat__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self, mjWarningStat *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":2099
 *     cdef void _set(self, mjWarningStat* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":2097
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjWarningStat* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":2104
 * 
 *     @property
 *     def lastinfo(self): return self.ptr.lastinfo             # <<<<<<<<<<<<<<
 *     @lastinfo.setter
 *     def lastinfo(self, int x): self.ptr.lastinfo = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->lastinfo); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjWarningStat.lastinfo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2106
 *     def lastinfo(self): return self.ptr.lastinfo
 *     @lastinfo.setter
 *     def lastinfo(self, int x): self.ptr.lastinfo = x             # <<<<<<<<<<<<<<
 *     @property
 *     def number(self): return self.ptr.number
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2106, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjWarningStat.lastinfo.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->lastinfo = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2108
 *     def lastinfo(self, int x): self.ptr.lastinfo = x
 *     @property
 *     def number(self): return self.ptr.number             # <<<<<<<<<<<<<<
 *     @number.setter
 *     def number(self, int x): self.ptr.number = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_6number_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_6number_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_6number___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_6number___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->number); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjWarningStat.number.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2110
 *     def number(self): return self.ptr.number
 *     @number.setter
 *     def number(self, int x): self.ptr.number = x             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjWarningStat WrapMjWarningStat(mjWarningStat* p):
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_6number_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_6number_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2110, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjWarningStat.number.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_6number_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_6number_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->number = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjWarningStat.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15PyMjWarningStat_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjWarningStat.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2112
 *     def number(self, int x): self.ptr.number = x
 * 
 * cdef PyMjWarningStat WrapMjWarningStat(mjWarningStat* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjWarningStat o = PyMjWarningStat()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_f_9mujoco_py_4cymj_WrapMjWarningStat(mjWarningStat *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjWarningStat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2113
 * 
 * cdef PyMjWarningStat WrapMjWarningStat(mjWarningStat* p):
 *     cdef PyMjWarningStat o = PyMjWarningStat()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjWarningStat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2114
 * cdef PyMjWarningStat WrapMjWarningStat(mjWarningStat* p):
 *     cdef PyMjWarningStat o = PyMjWarningStat()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjWarningStat *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":2115
 *     cdef PyMjWarningStat o = PyMjWarningStat()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjTimerStat(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2112
 *     def number(self, int x): self.ptr.number = x
 * 
 * cdef PyMjWarningStat WrapMjWarningStat(mjWarningStat* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjWarningStat o = PyMjWarningStat()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjWarningStat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2122
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2123
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":2122
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2127
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjTimerStat* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjTimerStat.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2129
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjTimerStat* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_13PyMjTimerStat__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self, mjTimerStat *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":2131
 *     cdef void _set(self, mjTimerStat* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":2129
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjTimerStat* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":2136
 * 
 *     @property
 *     def duration(self): return self.ptr.duration             # <<<<<<<<<<<<<<
 *     @duration.setter
 *     def duration(self, mjtNum x): self.ptr.duration = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_8duration_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_8duration_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_8duration___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_8duration___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->duration); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjTimerStat.duration.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2138
 *     def duration(self): return self.ptr.duration
 *     @duration.setter
 *     def duration(self, mjtNum x): self.ptr.duration = x             # <<<<<<<<<<<<<<
 *     @property
 *     def number(self): return self.ptr.number
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_8duration_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_8duration_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 2138, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjTimerStat.duration.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_8duration_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_8duration_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->duration = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2140
 *     def duration(self, mjtNum x): self.ptr.duration = x
 *     @property
 *     def number(self): return self.ptr.number             # <<<<<<<<<<<<<<
 *     @number.setter
 *     def number(self, int x): self.ptr.number = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_6number_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_6number_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_6number___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_6number___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->number); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjTimerStat.number.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2142
 *     def number(self): return self.ptr.number
 *     @number.setter
 *     def number(self, int x): self.ptr.number = x             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjTimerStat WrapMjTimerStat(mjTimerStat* p):
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_6number_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_6number_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2142, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjTimerStat.number.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_6number_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_6number_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->number = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjTimerStat.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjTimerStat_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjTimerStat.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2144
 *     def number(self, int x): self.ptr.number = x
 * 
 * cdef PyMjTimerStat WrapMjTimerStat(mjTimerStat* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjTimerStat o = PyMjTimerStat()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_f_9mujoco_py_4cymj_WrapMjTimerStat(mjTimerStat *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjTimerStat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2145
 * 
 * cdef PyMjTimerStat WrapMjTimerStat(mjTimerStat* p):
 *     cdef PyMjTimerStat o = PyMjTimerStat()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjTimerStat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2146
 * cdef PyMjTimerStat WrapMjTimerStat(mjTimerStat* p):
 *     cdef PyMjTimerStat o = PyMjTimerStat()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjTimerStat *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":2147
 *     cdef PyMjTimerStat o = PyMjTimerStat()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjSolverStat(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2144
 *     def number(self, int x): self.ptr.number = x
 * 
 * cdef PyMjTimerStat WrapMjTimerStat(mjTimerStat* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjTimerStat o = PyMjTimerStat()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjTimerStat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2154
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2155
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":2154
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2159
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjSolverStat* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2161
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjSolverStat* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_14PyMjSolverStat__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, mjSolverStat *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":2163
 *     cdef void _set(self, mjSolverStat* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":2161
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjSolverStat* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":2168
 * 
 *     @property
 *     def improvement(self): return self.ptr.improvement             # <<<<<<<<<<<<<<
 *     @improvement.setter
 *     def improvement(self, mjtNum x): self.ptr.improvement = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_11improvement_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_11improvement_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_11improvement___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_11improvement___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->improvement); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.improvement.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2170
 *     def improvement(self): return self.ptr.improvement
 *     @improvement.setter
 *     def improvement(self, mjtNum x): self.ptr.improvement = x             # <<<<<<<<<<<<<<
 *     @property
 *     def gradient(self): return self.ptr.gradient
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_11improvement_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_11improvement_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 2170, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.improvement.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_11improvement_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_11improvement_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->improvement = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2172
 *     def improvement(self, mjtNum x): self.ptr.improvement = x
 *     @property
 *     def gradient(self): return self.ptr.gradient             # <<<<<<<<<<<<<<
 *     @gradient.setter
 *     def gradient(self, mjtNum x): self.ptr.gradient = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_8gradient_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_8gradient_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_8gradient___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_8gradient___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->gradient); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.gradient.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2174
 *     def gradient(self): return self.ptr.gradient
 *     @gradient.setter
 *     def gradient(self, mjtNum x): self.ptr.gradient = x             # <<<<<<<<<<<<<<
 *     @property
 *     def lineslope(self): return self.ptr.lineslope
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_8gradient_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_8gradient_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 2174, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.gradient.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_8gradient_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_8gradient_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->gradient = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2176
 *     def gradient(self, mjtNum x): self.ptr.gradient = x
 *     @property
 *     def lineslope(self): return self.ptr.lineslope             # <<<<<<<<<<<<<<
 *     @lineslope.setter
 *     def lineslope(self, mjtNum x): self.ptr.lineslope = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->lineslope); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.lineslope.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2178
 *     def lineslope(self): return self.ptr.lineslope
 *     @lineslope.setter
 *     def lineslope(self, mjtNum x): self.ptr.lineslope = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nactive(self): return self.ptr.nactive
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 2178, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.lineslope.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->lineslope = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2180
 *     def lineslope(self, mjtNum x): self.ptr.lineslope = x
 *     @property
 *     def nactive(self): return self.ptr.nactive             # <<<<<<<<<<<<<<
 *     @nactive.setter
 *     def nactive(self, int x): self.ptr.nactive = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nactive_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nactive_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nactive___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nactive___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nactive); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.nactive.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2182
 *     def nactive(self): return self.ptr.nactive
 *     @nactive.setter
 *     def nactive(self, int x): self.ptr.nactive = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nchange(self): return self.ptr.nchange
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nactive_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nactive_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2182, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.nactive.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nactive_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nactive_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nactive = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2184
 *     def nactive(self, int x): self.ptr.nactive = x
 *     @property
 *     def nchange(self): return self.ptr.nchange             # <<<<<<<<<<<<<<
 *     @nchange.setter
 *     def nchange(self, int x): self.ptr.nchange = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nchange_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nchange_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nchange___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nchange___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nchange); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.nchange.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2186
 *     def nchange(self): return self.ptr.nchange
 *     @nchange.setter
 *     def nchange(self, int x): self.ptr.nchange = x             # <<<<<<<<<<<<<<
 *     @property
 *     def neval(self): return self.ptr.neval
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nchange_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nchange_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2186, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.nchange.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nchange_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nchange_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nchange = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2188
 *     def nchange(self, int x): self.ptr.nchange = x
 *     @property
 *     def neval(self): return self.ptr.neval             # <<<<<<<<<<<<<<
 *     @neval.setter
 *     def neval(self, int x): self.ptr.neval = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_5neval_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_5neval_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_5neval___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_5neval___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->neval); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.neval.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2190
 *     def neval(self): return self.ptr.neval
 *     @neval.setter
 *     def neval(self, int x): self.ptr.neval = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nupdate(self): return self.ptr.nupdate
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_5neval_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_5neval_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2190, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.neval.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_5neval_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_5neval_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->neval = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2192
 *     def neval(self, int x): self.ptr.neval = x
 *     @property
 *     def nupdate(self): return self.ptr.nupdate             # <<<<<<<<<<<<<<
 *     @nupdate.setter
 *     def nupdate(self, int x): self.ptr.nupdate = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nupdate); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.nupdate.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2194
 *     def nupdate(self): return self.ptr.nupdate
 *     @nupdate.setter
 *     def nupdate(self, int x): self.ptr.nupdate = x             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjSolverStat WrapMjSolverStat(mjSolverStat* p):
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2194, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.nupdate.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nupdate = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14PyMjSolverStat_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjSolverStat.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2196
 *     def nupdate(self, int x): self.ptr.nupdate = x
 * 
 * cdef PyMjSolverStat WrapMjSolverStat(mjSolverStat* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjSolverStat o = PyMjSolverStat()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_f_9mujoco_py_4cymj_WrapMjSolverStat(mjSolverStat *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjSolverStat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2197
 * 
 * cdef PyMjSolverStat WrapMjSolverStat(mjSolverStat* p):
 *     cdef PyMjSolverStat o = PyMjSolverStat()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjSolverStat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2198
 * cdef PyMjSolverStat WrapMjSolverStat(mjSolverStat* p):
 *     cdef PyMjSolverStat o = PyMjSolverStat()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjSolverStat *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":2199
 *     cdef PyMjSolverStat o = PyMjSolverStat()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjData(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2196
 *     def nupdate(self, int x): self.ptr.nupdate = x
 * 
 * cdef PyMjSolverStat WrapMjSolverStat(mjSolverStat* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjSolverStat o = PyMjSolverStat()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjSolverStat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2302
 * 
 *     @property
 *     def body_xpos(self):             # <<<<<<<<<<<<<<
 *         return self._xpos
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_xpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_xpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_xpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2303
 *     @property
 *     def body_xpos(self):
 *         return self._xpos             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_xpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_xpos);
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2302
 * 
 *     @property
 *     def body_xpos(self):             # <<<<<<<<<<<<<<
 *         return self._xpos
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2306
 * 
 *     @property
 *     def body_xquat(self):             # <<<<<<<<<<<<<<
 *         return self._xquat
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10body_xquat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10body_xquat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10body_xquat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10body_xquat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2307
 *     @property
 *     def body_xquat(self):
 *         return self._xquat             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_xquat));
  __pyx_r = ((PyObject *)__pyx_v_self->_xquat);
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2306
 * 
 *     @property
 *     def body_xquat(self):             # <<<<<<<<<<<<<<
 *         return self._xquat
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2310
 * 
 *     @property
 *     def body_xmat(self):             # <<<<<<<<<<<<<<
 *         return self._xmat
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_xmat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_xmat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_xmat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_xmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2311
 *     @property
 *     def body_xmat(self):
 *         return self._xmat             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_xmat));
  __pyx_r = ((PyObject *)__pyx_v_self->_xmat);
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2310
 * 
 *     @property
 *     def body_xmat(self):             # <<<<<<<<<<<<<<
 *         return self._xmat
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2314
 * 
 *     @property
 *     def active_contacts_efc_pos(self):             # <<<<<<<<<<<<<<
 *         return self._efc_pos[self.ne:self.nefc]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_23active_contacts_efc_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_23active_contacts_efc_pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_23active_contacts_efc_pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_23active_contacts_efc_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2315
 *     @property
 *     def active_contacts_efc_pos(self):
 *         return self._efc_pos[self.ne:self.nefc]             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ne); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nefc); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->_efc_pos), 0, 0, &__pyx_t_1, &__pyx_t_2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2314
 * 
 *     @property
 *     def active_contacts_efc_pos(self):             # <<<<<<<<<<<<<<
 *         return self._efc_pos[self.ne:self.nefc]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.active_contacts_efc_pos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2317
 *         return self._efc_pos[self.ne:self.nefc]
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         mj_deleteData(self.ptr)
 * 
 */

/* Python wrapper */
static void __pyx_pw_9mujoco_py_4cymj_8PyMjData_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_9mujoco_py_4cymj_8PyMjData_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_9mujoco_py_4cymj_8PyMjData___dealloc__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_9mujoco_py_4cymj_8PyMjData___dealloc__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2318
 * 
 *     def __dealloc__(self):
 *         mj_deleteData(self.ptr)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  mj_deleteData(__pyx_v_self->ptr);

  /* "mujoco_py/generated/wrappers.pxi":2317
 *         return self._efc_pos[self.ne:self.nefc]
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         mj_deleteData(self.ptr)
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":2321
 * 
 * 
 *     def get_body_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._xpos[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_3get_body_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_3get_body_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_body_xpos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_2get_body_xpos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_2get_body_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_body_xpos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2322
 * 
 *     def get_body_xpos(self, name):
 *         id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._xpos[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2322, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2322, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2322, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2322, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2323
 *     def get_body_xpos(self, name):
 *         id = self._model.body_name2id(name)
 *         return self._xpos[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_xpos(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_xpos), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2321
 * 
 * 
 *     def get_body_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._xpos[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_xpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2325
 *         return self._xpos[id]
 * 
 *     def get_xpos(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_xpos should be used instead of get_xpos")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5get_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5get_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_xpos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4get_xpos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4get_xpos(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_xpos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2326
 * 
 *     def get_xpos(self, name):
 *         raise RuntimeError("get_body_xpos should be used instead of get_xpos")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_xquat(self, name):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2326, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2325
 *         return self._xpos[id]
 * 
 *     def get_xpos(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_xpos should be used instead of get_xpos")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_xpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2328
 *         raise RuntimeError("get_body_xpos should be used instead of get_xpos")
 * 
 *     def get_body_xquat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._xquat[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7get_body_xquat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7get_body_xquat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_body_xquat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6get_body_xquat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6get_body_xquat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_body_xquat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2329
 * 
 *     def get_body_xquat(self, name):
 *         id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._xquat[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2329, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2329, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2330
 *     def get_body_xquat(self, name):
 *         id = self._model.body_name2id(name)
 *         return self._xquat[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_xquat(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_xquat), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2328
 *         raise RuntimeError("get_body_xpos should be used instead of get_xpos")
 * 
 *     def get_body_xquat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._xquat[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_xquat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2332
 *         return self._xquat[id]
 * 
 *     def get_xquat(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_xquat should be used instead of get_xquat")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9get_xquat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9get_xquat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_xquat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8get_xquat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8get_xquat(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_xquat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2333
 * 
 *     def get_xquat(self, name):
 *         raise RuntimeError("get_body_xquat should be used instead of get_xquat")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_xmat(self, name):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2333, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2332
 *         return self._xquat[id]
 * 
 *     def get_xquat(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_xquat should be used instead of get_xquat")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_xquat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2335
 *         raise RuntimeError("get_body_xquat should be used instead of get_xquat")
 * 
 *     def get_body_xmat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._xmat[id].reshape((3, 3))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11get_body_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11get_body_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_body_xmat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10get_body_xmat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10get_body_xmat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_body_xmat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2336
 * 
 *     def get_body_xmat(self, name):
 *         id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._xmat[id].reshape((3, 3))
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2336, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2336, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2336, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2336, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2337
 *     def get_body_xmat(self, name):
 *         id = self._model.body_name2id(name)
 *         return self._xmat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_xmat(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_xmat), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2335
 *         raise RuntimeError("get_body_xquat should be used instead of get_xquat")
 * 
 *     def get_body_xmat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._xmat[id].reshape((3, 3))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_xmat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2339
 *         return self._xmat[id].reshape((3, 3))
 * 
 *     def get_xmat(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_xmat should be used instead of get_xmat")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13get_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13get_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_xmat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12get_xmat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12get_xmat(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_xmat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2340
 * 
 *     def get_xmat(self, name):
 *         raise RuntimeError("get_body_xmat should be used instead of get_xmat")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_xipos(self, name):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2340, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2339
 *         return self._xmat[id].reshape((3, 3))
 * 
 *     def get_xmat(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_xmat should be used instead of get_xmat")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_xmat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2342
 *         raise RuntimeError("get_body_xmat should be used instead of get_xmat")
 * 
 *     def get_body_xipos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._xipos[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_15get_body_xipos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_15get_body_xipos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_body_xipos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_14get_body_xipos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14get_body_xipos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_body_xipos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2343
 * 
 *     def get_body_xipos(self, name):
 *         id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._xipos[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2343, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2343, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2343, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2343, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2344
 *     def get_body_xipos(self, name):
 *         id = self._model.body_name2id(name)
 *         return self._xipos[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_xipos(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_xipos), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2342
 *         raise RuntimeError("get_body_xmat should be used instead of get_xmat")
 * 
 *     def get_body_xipos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._xipos[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_xipos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2346
 *         return self._xipos[id]
 * 
 *     def get_xipos(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_xipos should be used instead of get_xipos")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_17get_xipos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_17get_xipos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_xipos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_16get_xipos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_16get_xipos(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_xipos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2347
 * 
 *     def get_xipos(self, name):
 *         raise RuntimeError("get_body_xipos should be used instead of get_xipos")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_ximat(self, name):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2347, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2346
 *         return self._xipos[id]
 * 
 *     def get_xipos(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_xipos should be used instead of get_xipos")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_xipos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2349
 *         raise RuntimeError("get_body_xipos should be used instead of get_xipos")
 * 
 *     def get_body_ximat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._ximat[id].reshape((3, 3))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_19get_body_ximat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_19get_body_ximat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_body_ximat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_18get_body_ximat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_18get_body_ximat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_body_ximat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2350
 * 
 *     def get_body_ximat(self, name):
 *         id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._ximat[id].reshape((3, 3))
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2350, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2350, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2350, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2350, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2351
 *     def get_body_ximat(self, name):
 *         id = self._model.body_name2id(name)
 *         return self._ximat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_ximat(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_ximat), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2349
 *         raise RuntimeError("get_body_xipos should be used instead of get_xipos")
 * 
 *     def get_body_ximat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         return self._ximat[id].reshape((3, 3))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_ximat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2353
 *         return self._ximat[id].reshape((3, 3))
 * 
 *     def get_ximat(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_ximat should be used instead of get_ximat")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_21get_ximat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_21get_ximat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_ximat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_20get_ximat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_20get_ximat(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_ximat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2354
 * 
 *     def get_ximat(self, name):
 *         raise RuntimeError("get_body_ximat should be used instead of get_ximat")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2354, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2353
 *         return self._ximat[id].reshape((3, 3))
 * 
 *     def get_ximat(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_body_ximat should be used instead of get_ximat")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_ximat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2356
 *         raise RuntimeError("get_body_ximat should be used instead of get_ximat")
 * 
 *     def get_body_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         if jacp is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_23get_body_jacp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_23get_body_jacp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyArrayObject *__pyx_v_jacp = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_body_jacp (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_jacp,0};
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((PyArrayObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacp);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_body_jacp") < 0)) __PYX_ERR(3, 2356, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_name = values[0];
    __pyx_v_jacp = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_body_jacp", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2356, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_jacp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacp), __pyx_ptype_5numpy_ndarray, 1, "jacp", 0))) __PYX_ERR(3, 2356, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_22get_body_jacp(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_jacp);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_22get_body_jacp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacp) {
  PyObject *__pyx_v_id = NULL;
  double *__pyx_v_jacp_view;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacp;
  __Pyx_Buffer __pyx_pybuffer_jacp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyArrayObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  Py_ssize_t __pyx_t_13;
  __Pyx_RefNannySetupContext("get_body_jacp", 0);
  __Pyx_INCREF((PyObject *)__pyx_v_jacp);
  __pyx_pybuffer_jacp.pybuffer.buf = NULL;
  __pyx_pybuffer_jacp.refcount = 0;
  __pyx_pybuffernd_jacp.data = NULL;
  __pyx_pybuffernd_jacp.rcbuffer = &__pyx_pybuffer_jacp;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 2356, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":2357
 * 
 *     def get_body_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 *         id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         if jacp is None:
 *             jacp = np.zeros(3 * self._model.nv)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2357, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2357, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2357, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2357, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2358
 *     def get_body_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 *         id = self._model.body_name2id(name)
 *         if jacp is None:             # <<<<<<<<<<<<<<
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]
 */
  __pyx_t_5 = (((PyObject *)__pyx_v_jacp) == Py_None);
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {

    /* "mujoco_py/generated/wrappers.pxi":2359
 *         id = self._model.body_name2id(name)
 *         if jacp is None:
 *             jacp = np.zeros(3 * self._model.nv)             # <<<<<<<<<<<<<<
 *         cdef double * jacp_view = &jacp[0]
 *         mj_jacBody(self._model.ptr, self.ptr, jacp_view, NULL, id)
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Multiply(__pyx_int_3, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2359, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2359, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2359, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2359, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2359, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 2359, __pyx_L1_error)
    __pyx_t_8 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
      __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_9 < 0)) {
        PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        }
        __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0;
      }
      __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(3, 2359, __pyx_L1_error)
    }
    __pyx_t_8 = 0;
    __Pyx_DECREF_SET(__pyx_v_jacp, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2358
 *     def get_body_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 *         id = self._model.body_name2id(name)
 *         if jacp is None:             # <<<<<<<<<<<<<<
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":2360
 *         if jacp is None:
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]             # <<<<<<<<<<<<<<
 *         mj_jacBody(self._model.ptr, self.ptr, jacp_view, NULL, id)
 *         return jacp
 */
  __pyx_t_13 = 0;
  __pyx_t_9 = -1;
  if (__pyx_t_13 < 0) {
    __pyx_t_13 += __pyx_pybuffernd_jacp.diminfo[0].shape;
    if (unlikely(__pyx_t_13 < 0)) __pyx_t_9 = 0;
  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_jacp.diminfo[0].shape)) __pyx_t_9 = 0;
  if (unlikely(__pyx_t_9 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_9);
    __PYX_ERR(3, 2360, __pyx_L1_error)
  }
  __pyx_v_jacp_view = (&(*__Pyx_BufPtrCContig1d(double *, __pyx_pybuffernd_jacp.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_jacp.diminfo[0].strides)));

  /* "mujoco_py/generated/wrappers.pxi":2361
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]
 *         mj_jacBody(self._model.ptr, self.ptr, jacp_view, NULL, id)             # <<<<<<<<<<<<<<
 *         return jacp
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_id); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2361, __pyx_L1_error)
  mj_jacBody(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, __pyx_v_jacp_view, NULL, __pyx_t_9);

  /* "mujoco_py/generated/wrappers.pxi":2362
 *         cdef double * jacp_view = &jacp[0]
 *         mj_jacBody(self._model.ptr, self.ptr, jacp_view, NULL, id)
 *         return jacp             # <<<<<<<<<<<<<<
 * 
 *     def get_body_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_jacp));
  __pyx_r = ((PyObject *)__pyx_v_jacp);
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2356
 *         raise RuntimeError("get_body_ximat should be used instead of get_ximat")
 * 
 *     def get_body_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         if jacp is None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_jacp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF((PyObject *)__pyx_v_jacp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2364
 *         return jacp
 * 
 *     def get_body_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         if jacr is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_25get_body_jacr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_25get_body_jacr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyArrayObject *__pyx_v_jacr = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_body_jacr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_jacr,0};
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((PyArrayObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacr);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_body_jacr") < 0)) __PYX_ERR(3, 2364, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_name = values[0];
    __pyx_v_jacr = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_body_jacr", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2364, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_jacr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacr), __pyx_ptype_5numpy_ndarray, 1, "jacr", 0))) __PYX_ERR(3, 2364, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_24get_body_jacr(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_jacr);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_24get_body_jacr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacr) {
  PyObject *__pyx_v_id = NULL;
  double *__pyx_v_jacr_view;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacr;
  __Pyx_Buffer __pyx_pybuffer_jacr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyArrayObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  Py_ssize_t __pyx_t_13;
  __Pyx_RefNannySetupContext("get_body_jacr", 0);
  __Pyx_INCREF((PyObject *)__pyx_v_jacr);
  __pyx_pybuffer_jacr.pybuffer.buf = NULL;
  __pyx_pybuffer_jacr.refcount = 0;
  __pyx_pybuffernd_jacr.data = NULL;
  __pyx_pybuffernd_jacr.rcbuffer = &__pyx_pybuffer_jacr;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 2364, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":2365
 * 
 *     def get_body_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 *         id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         if jacr is None:
 *             jacr = np.zeros(3 * self._model.nv)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2365, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2365, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2366
 *     def get_body_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 *         id = self._model.body_name2id(name)
 *         if jacr is None:             # <<<<<<<<<<<<<<
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]
 */
  __pyx_t_5 = (((PyObject *)__pyx_v_jacr) == Py_None);
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {

    /* "mujoco_py/generated/wrappers.pxi":2367
 *         id = self._model.body_name2id(name)
 *         if jacr is None:
 *             jacr = np.zeros(3 * self._model.nv)             # <<<<<<<<<<<<<<
 *         cdef double * jacr_view = &jacr[0]
 *         mj_jacBody(self._model.ptr, self.ptr, NULL, jacr_view, id)
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Multiply(__pyx_int_3, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2367, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2367, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2367, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2367, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2367, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 2367, __pyx_L1_error)
    __pyx_t_8 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
      __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_9 < 0)) {
        PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        }
        __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0;
      }
      __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(3, 2367, __pyx_L1_error)
    }
    __pyx_t_8 = 0;
    __Pyx_DECREF_SET(__pyx_v_jacr, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2366
 *     def get_body_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 *         id = self._model.body_name2id(name)
 *         if jacr is None:             # <<<<<<<<<<<<<<
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":2368
 *         if jacr is None:
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]             # <<<<<<<<<<<<<<
 *         mj_jacBody(self._model.ptr, self.ptr, NULL, jacr_view, id)
 *         return jacr
 */
  __pyx_t_13 = 0;
  __pyx_t_9 = -1;
  if (__pyx_t_13 < 0) {
    __pyx_t_13 += __pyx_pybuffernd_jacr.diminfo[0].shape;
    if (unlikely(__pyx_t_13 < 0)) __pyx_t_9 = 0;
  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_jacr.diminfo[0].shape)) __pyx_t_9 = 0;
  if (unlikely(__pyx_t_9 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_9);
    __PYX_ERR(3, 2368, __pyx_L1_error)
  }
  __pyx_v_jacr_view = (&(*__Pyx_BufPtrCContig1d(double *, __pyx_pybuffernd_jacr.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_jacr.diminfo[0].strides)));

  /* "mujoco_py/generated/wrappers.pxi":2369
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]
 *         mj_jacBody(self._model.ptr, self.ptr, NULL, jacr_view, id)             # <<<<<<<<<<<<<<
 *         return jacr
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_id); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2369, __pyx_L1_error)
  mj_jacBody(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, NULL, __pyx_v_jacr_view, __pyx_t_9);

  /* "mujoco_py/generated/wrappers.pxi":2370
 *         cdef double * jacr_view = &jacr[0]
 *         mj_jacBody(self._model.ptr, self.ptr, NULL, jacr_view, id)
 *         return jacr             # <<<<<<<<<<<<<<
 * 
 *     def get_body_xvelp(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_jacr));
  __pyx_r = ((PyObject *)__pyx_v_jacr);
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2364
 *         return jacp
 * 
 *     def get_body_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         if jacr is None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_jacr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF((PyObject *)__pyx_v_jacr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2372
 *         return jacr
 * 
 *     def get_body_xvelp(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         jacp = self.get_body_jacp(name).reshape((3, self._model.nv))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_27get_body_xvelp(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_27get_body_xvelp(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_body_xvelp (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_26get_body_xvelp(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_26get_body_xvelp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_v_jacp = NULL;
  PyObject *__pyx_v_xvelp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("get_body_xvelp", 0);

  /* "mujoco_py/generated/wrappers.pxi":2373
 * 
 *     def get_body_xvelp(self, name):
 *         id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         jacp = self.get_body_jacp(name).reshape((3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2373, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2373, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2373, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2373, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2374
 *     def get_body_xvelp(self, name):
 *         id = self._model.body_name2id(name)
 *         jacp = self.get_body_jacp(name).reshape((3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_body_jacp); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2374, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2374, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2374, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_name);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2374, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2374, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2374, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2374, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2374, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2374, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_jacp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2375
 *         id = self._model.body_name2id(name)
 *         jacp = self.get_body_jacp(name).reshape((3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelp
 * 
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dot); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2375, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2375, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_v_jacp);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_xvelp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2376
 *         jacp = self.get_body_jacp(name).reshape((3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp             # <<<<<<<<<<<<<<
 * 
 *     def get_body_xvelr(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelp);
  __pyx_r = __pyx_v_xvelp;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2372
 *         return jacr
 * 
 *     def get_body_xvelp(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         jacp = self.get_body_jacp(name).reshape((3, self._model.nv))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_xvelp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF(__pyx_v_jacp);
  __Pyx_XDECREF(__pyx_v_xvelp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2378
 *         return xvelp
 * 
 *     def get_body_xvelr(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         jacr = self.get_body_jacr(name).reshape((3, self._model.nv))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_29get_body_xvelr(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_29get_body_xvelr(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_body_xvelr (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_28get_body_xvelr(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_28get_body_xvelr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_v_jacr = NULL;
  PyObject *__pyx_v_xvelr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("get_body_xvelr", 0);

  /* "mujoco_py/generated/wrappers.pxi":2379
 * 
 *     def get_body_xvelr(self, name):
 *         id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         jacr = self.get_body_jacr(name).reshape((3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2379, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2379, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2380
 *     def get_body_xvelr(self, name):
 *         id = self._model.body_name2id(name)
 *         jacr = self.get_body_jacr(name).reshape((3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_body_jacr); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2380, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2380, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2380, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_name);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2380, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2380, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2380, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_jacr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2381
 *         id = self._model.body_name2id(name)
 *         jacr = self.get_body_jacr(name).reshape((3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelr
 * 
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dot); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2381, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2381, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_v_jacr);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_xvelr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2382
 *         jacr = self.get_body_jacr(name).reshape((3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr             # <<<<<<<<<<<<<<
 * 
 *     def get_joint_xanchor(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelr);
  __pyx_r = __pyx_v_xvelr;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2378
 *         return xvelp
 * 
 *     def get_body_xvelr(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.body_name2id(name)
 *         jacr = self.get_body_jacr(name).reshape((3, self._model.nv))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_body_xvelr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF(__pyx_v_jacr);
  __Pyx_XDECREF(__pyx_v_xvelr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2384
 *         return xvelr
 * 
 *     def get_joint_xanchor(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.joint_name2id(name)
 *         return self._xanchor[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_31get_joint_xanchor(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_31get_joint_xanchor(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_joint_xanchor (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_30get_joint_xanchor(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_30get_joint_xanchor(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_joint_xanchor", 0);

  /* "mujoco_py/generated/wrappers.pxi":2385
 * 
 *     def get_joint_xanchor(self, name):
 *         id = self._model.joint_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._xanchor[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_joint_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2385, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2385, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2385, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2385, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2386
 *     def get_joint_xanchor(self, name):
 *         id = self._model.joint_name2id(name)
 *         return self._xanchor[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_xanchor(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_xanchor), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2384
 *         return xvelr
 * 
 *     def get_joint_xanchor(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.joint_name2id(name)
 *         return self._xanchor[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_joint_xanchor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2388
 *         return self._xanchor[id]
 * 
 *     def get_xanchor(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_joint_xanchor should be used instead of get_xanchor")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_33get_xanchor(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_33get_xanchor(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_xanchor (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_32get_xanchor(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_32get_xanchor(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_xanchor", 0);

  /* "mujoco_py/generated/wrappers.pxi":2389
 * 
 *     def get_xanchor(self, name):
 *         raise RuntimeError("get_joint_xanchor should be used instead of get_xanchor")             # <<<<<<<<<<<<<<
 * 
 *     def get_joint_xaxis(self, name):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2389, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2388
 *         return self._xanchor[id]
 * 
 *     def get_xanchor(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_joint_xanchor should be used instead of get_xanchor")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_xanchor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2391
 *         raise RuntimeError("get_joint_xanchor should be used instead of get_xanchor")
 * 
 *     def get_joint_xaxis(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.joint_name2id(name)
 *         return self._xaxis[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_35get_joint_xaxis(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_35get_joint_xaxis(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_joint_xaxis (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_34get_joint_xaxis(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_34get_joint_xaxis(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_joint_xaxis", 0);

  /* "mujoco_py/generated/wrappers.pxi":2392
 * 
 *     def get_joint_xaxis(self, name):
 *         id = self._model.joint_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._xaxis[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_joint_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2392, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2392, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2393
 *     def get_joint_xaxis(self, name):
 *         id = self._model.joint_name2id(name)
 *         return self._xaxis[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_xaxis(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_xaxis), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2391
 *         raise RuntimeError("get_joint_xanchor should be used instead of get_xanchor")
 * 
 *     def get_joint_xaxis(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.joint_name2id(name)
 *         return self._xaxis[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_joint_xaxis", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2395
 *         return self._xaxis[id]
 * 
 *     def get_xaxis(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_joint_xaxis should be used instead of get_xaxis")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_37get_xaxis(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_37get_xaxis(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_xaxis (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_36get_xaxis(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_36get_xaxis(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_xaxis", 0);

  /* "mujoco_py/generated/wrappers.pxi":2396
 * 
 *     def get_xaxis(self, name):
 *         raise RuntimeError("get_joint_xaxis should be used instead of get_xaxis")             # <<<<<<<<<<<<<<
 * 
 *     def get_geom_xpos(self, name):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2396, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2395
 *         return self._xaxis[id]
 * 
 *     def get_xaxis(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_joint_xaxis should be used instead of get_xaxis")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_xaxis", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2398
 *         raise RuntimeError("get_joint_xaxis should be used instead of get_xaxis")
 * 
 *     def get_geom_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         return self._geom_xpos[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_39get_geom_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_39get_geom_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_geom_xpos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_38get_geom_xpos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_38get_geom_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_geom_xpos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2399
 * 
 *     def get_geom_xpos(self, name):
 *         id = self._model.geom_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._geom_xpos[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_geom_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2399, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2399, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2399, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2399, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2399, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2400
 *     def get_geom_xpos(self, name):
 *         id = self._model.geom_name2id(name)
 *         return self._geom_xpos[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_geom_xmat(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_geom_xpos), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2398
 *         raise RuntimeError("get_joint_xaxis should be used instead of get_xaxis")
 * 
 *     def get_geom_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         return self._geom_xpos[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_geom_xpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2402
 *         return self._geom_xpos[id]
 * 
 *     def get_geom_xmat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         return self._geom_xmat[id].reshape((3, 3))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_41get_geom_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_41get_geom_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_geom_xmat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_40get_geom_xmat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_40get_geom_xmat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_geom_xmat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2403
 * 
 *     def get_geom_xmat(self, name):
 *         id = self._model.geom_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._geom_xmat[id].reshape((3, 3))
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_geom_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2403, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2403, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2403, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2403, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2404
 *     def get_geom_xmat(self, name):
 *         id = self._model.geom_name2id(name)
 *         return self._geom_xmat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_geom_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_geom_xmat), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2402
 *         return self._geom_xpos[id]
 * 
 *     def get_geom_xmat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         return self._geom_xmat[id].reshape((3, 3))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_geom_xmat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2406
 *         return self._geom_xmat[id].reshape((3, 3))
 * 
 *     def get_geom_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         if jacp is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_43get_geom_jacp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_43get_geom_jacp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyArrayObject *__pyx_v_jacp = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_geom_jacp (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_jacp,0};
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((PyArrayObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacp);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_geom_jacp") < 0)) __PYX_ERR(3, 2406, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_name = values[0];
    __pyx_v_jacp = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_geom_jacp", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2406, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_geom_jacp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacp), __pyx_ptype_5numpy_ndarray, 1, "jacp", 0))) __PYX_ERR(3, 2406, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_42get_geom_jacp(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_jacp);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_42get_geom_jacp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacp) {
  PyObject *__pyx_v_id = NULL;
  double *__pyx_v_jacp_view;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacp;
  __Pyx_Buffer __pyx_pybuffer_jacp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyArrayObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  Py_ssize_t __pyx_t_13;
  __Pyx_RefNannySetupContext("get_geom_jacp", 0);
  __Pyx_INCREF((PyObject *)__pyx_v_jacp);
  __pyx_pybuffer_jacp.pybuffer.buf = NULL;
  __pyx_pybuffer_jacp.refcount = 0;
  __pyx_pybuffernd_jacp.data = NULL;
  __pyx_pybuffernd_jacp.rcbuffer = &__pyx_pybuffer_jacp;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 2406, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":2407
 * 
 *     def get_geom_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 *         id = self._model.geom_name2id(name)             # <<<<<<<<<<<<<<
 *         if jacp is None:
 *             jacp = np.zeros(3 * self._model.nv)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_geom_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2407, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2407, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2407, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2407, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2408
 *     def get_geom_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 *         id = self._model.geom_name2id(name)
 *         if jacp is None:             # <<<<<<<<<<<<<<
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]
 */
  __pyx_t_5 = (((PyObject *)__pyx_v_jacp) == Py_None);
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {

    /* "mujoco_py/generated/wrappers.pxi":2409
 *         id = self._model.geom_name2id(name)
 *         if jacp is None:
 *             jacp = np.zeros(3 * self._model.nv)             # <<<<<<<<<<<<<<
 *         cdef double * jacp_view = &jacp[0]
 *         mj_jacGeom(self._model.ptr, self.ptr, jacp_view, NULL, id)
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Multiply(__pyx_int_3, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2409, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2409, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2409, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2409, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2409, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 2409, __pyx_L1_error)
    __pyx_t_8 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
      __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_9 < 0)) {
        PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        }
        __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0;
      }
      __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(3, 2409, __pyx_L1_error)
    }
    __pyx_t_8 = 0;
    __Pyx_DECREF_SET(__pyx_v_jacp, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2408
 *     def get_geom_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 *         id = self._model.geom_name2id(name)
 *         if jacp is None:             # <<<<<<<<<<<<<<
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":2410
 *         if jacp is None:
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]             # <<<<<<<<<<<<<<
 *         mj_jacGeom(self._model.ptr, self.ptr, jacp_view, NULL, id)
 *         return jacp
 */
  __pyx_t_13 = 0;
  __pyx_t_9 = -1;
  if (__pyx_t_13 < 0) {
    __pyx_t_13 += __pyx_pybuffernd_jacp.diminfo[0].shape;
    if (unlikely(__pyx_t_13 < 0)) __pyx_t_9 = 0;
  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_jacp.diminfo[0].shape)) __pyx_t_9 = 0;
  if (unlikely(__pyx_t_9 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_9);
    __PYX_ERR(3, 2410, __pyx_L1_error)
  }
  __pyx_v_jacp_view = (&(*__Pyx_BufPtrCContig1d(double *, __pyx_pybuffernd_jacp.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_jacp.diminfo[0].strides)));

  /* "mujoco_py/generated/wrappers.pxi":2411
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]
 *         mj_jacGeom(self._model.ptr, self.ptr, jacp_view, NULL, id)             # <<<<<<<<<<<<<<
 *         return jacp
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_id); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2411, __pyx_L1_error)
  mj_jacGeom(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, __pyx_v_jacp_view, NULL, __pyx_t_9);

  /* "mujoco_py/generated/wrappers.pxi":2412
 *         cdef double * jacp_view = &jacp[0]
 *         mj_jacGeom(self._model.ptr, self.ptr, jacp_view, NULL, id)
 *         return jacp             # <<<<<<<<<<<<<<
 * 
 *     def get_geom_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_jacp));
  __pyx_r = ((PyObject *)__pyx_v_jacp);
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2406
 *         return self._geom_xmat[id].reshape((3, 3))
 * 
 *     def get_geom_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         if jacp is None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_geom_jacp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF((PyObject *)__pyx_v_jacp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2414
 *         return jacp
 * 
 *     def get_geom_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         if jacr is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_45get_geom_jacr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_45get_geom_jacr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyArrayObject *__pyx_v_jacr = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_geom_jacr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_jacr,0};
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((PyArrayObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacr);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_geom_jacr") < 0)) __PYX_ERR(3, 2414, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_name = values[0];
    __pyx_v_jacr = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_geom_jacr", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2414, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_geom_jacr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacr), __pyx_ptype_5numpy_ndarray, 1, "jacr", 0))) __PYX_ERR(3, 2414, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_44get_geom_jacr(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_jacr);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_44get_geom_jacr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacr) {
  PyObject *__pyx_v_id = NULL;
  double *__pyx_v_jacr_view;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacr;
  __Pyx_Buffer __pyx_pybuffer_jacr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyArrayObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  Py_ssize_t __pyx_t_13;
  __Pyx_RefNannySetupContext("get_geom_jacr", 0);
  __Pyx_INCREF((PyObject *)__pyx_v_jacr);
  __pyx_pybuffer_jacr.pybuffer.buf = NULL;
  __pyx_pybuffer_jacr.refcount = 0;
  __pyx_pybuffernd_jacr.data = NULL;
  __pyx_pybuffernd_jacr.rcbuffer = &__pyx_pybuffer_jacr;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 2414, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":2415
 * 
 *     def get_geom_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 *         id = self._model.geom_name2id(name)             # <<<<<<<<<<<<<<
 *         if jacr is None:
 *             jacr = np.zeros(3 * self._model.nv)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_geom_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2415, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2415, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2415, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2415, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2416
 *     def get_geom_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 *         id = self._model.geom_name2id(name)
 *         if jacr is None:             # <<<<<<<<<<<<<<
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]
 */
  __pyx_t_5 = (((PyObject *)__pyx_v_jacr) == Py_None);
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {

    /* "mujoco_py/generated/wrappers.pxi":2417
 *         id = self._model.geom_name2id(name)
 *         if jacr is None:
 *             jacr = np.zeros(3 * self._model.nv)             # <<<<<<<<<<<<<<
 *         cdef double * jacr_view = &jacr[0]
 *         mj_jacGeom(self._model.ptr, self.ptr, NULL, jacr_view, id)
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Multiply(__pyx_int_3, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2417, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2417, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2417, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2417, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2417, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 2417, __pyx_L1_error)
    __pyx_t_8 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
      __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_9 < 0)) {
        PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        }
        __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0;
      }
      __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(3, 2417, __pyx_L1_error)
    }
    __pyx_t_8 = 0;
    __Pyx_DECREF_SET(__pyx_v_jacr, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2416
 *     def get_geom_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 *         id = self._model.geom_name2id(name)
 *         if jacr is None:             # <<<<<<<<<<<<<<
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":2418
 *         if jacr is None:
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]             # <<<<<<<<<<<<<<
 *         mj_jacGeom(self._model.ptr, self.ptr, NULL, jacr_view, id)
 *         return jacr
 */
  __pyx_t_13 = 0;
  __pyx_t_9 = -1;
  if (__pyx_t_13 < 0) {
    __pyx_t_13 += __pyx_pybuffernd_jacr.diminfo[0].shape;
    if (unlikely(__pyx_t_13 < 0)) __pyx_t_9 = 0;
  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_jacr.diminfo[0].shape)) __pyx_t_9 = 0;
  if (unlikely(__pyx_t_9 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_9);
    __PYX_ERR(3, 2418, __pyx_L1_error)
  }
  __pyx_v_jacr_view = (&(*__Pyx_BufPtrCContig1d(double *, __pyx_pybuffernd_jacr.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_jacr.diminfo[0].strides)));

  /* "mujoco_py/generated/wrappers.pxi":2419
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]
 *         mj_jacGeom(self._model.ptr, self.ptr, NULL, jacr_view, id)             # <<<<<<<<<<<<<<
 *         return jacr
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_id); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2419, __pyx_L1_error)
  mj_jacGeom(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, NULL, __pyx_v_jacr_view, __pyx_t_9);

  /* "mujoco_py/generated/wrappers.pxi":2420
 *         cdef double * jacr_view = &jacr[0]
 *         mj_jacGeom(self._model.ptr, self.ptr, NULL, jacr_view, id)
 *         return jacr             # <<<<<<<<<<<<<<
 * 
 *     def get_geom_xvelp(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_jacr));
  __pyx_r = ((PyObject *)__pyx_v_jacr);
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2414
 *         return jacp
 * 
 *     def get_geom_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         if jacr is None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_geom_jacr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF((PyObject *)__pyx_v_jacr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2422
 *         return jacr
 * 
 *     def get_geom_xvelp(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         jacp = self.get_geom_jacp(name).reshape((3, self._model.nv))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_47get_geom_xvelp(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_47get_geom_xvelp(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_geom_xvelp (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_46get_geom_xvelp(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_46get_geom_xvelp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_v_jacp = NULL;
  PyObject *__pyx_v_xvelp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("get_geom_xvelp", 0);

  /* "mujoco_py/generated/wrappers.pxi":2423
 * 
 *     def get_geom_xvelp(self, name):
 *         id = self._model.geom_name2id(name)             # <<<<<<<<<<<<<<
 *         jacp = self.get_geom_jacp(name).reshape((3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_geom_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2423, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2423, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2423, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2423, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2424
 *     def get_geom_xvelp(self, name):
 *         id = self._model.geom_name2id(name)
 *         jacp = self.get_geom_jacp(name).reshape((3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_geom_jacp); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2424, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2424, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2424, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_name);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2424, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2424, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2424, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2424, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2424, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2424, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_jacp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2425
 *         id = self._model.geom_name2id(name)
 *         jacp = self.get_geom_jacp(name).reshape((3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelp
 * 
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dot); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2425, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2425, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_v_jacp);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_xvelp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2426
 *         jacp = self.get_geom_jacp(name).reshape((3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp             # <<<<<<<<<<<<<<
 * 
 *     def get_geom_xvelr(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelp);
  __pyx_r = __pyx_v_xvelp;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2422
 *         return jacr
 * 
 *     def get_geom_xvelp(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         jacp = self.get_geom_jacp(name).reshape((3, self._model.nv))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_geom_xvelp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF(__pyx_v_jacp);
  __Pyx_XDECREF(__pyx_v_xvelp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2428
 *         return xvelp
 * 
 *     def get_geom_xvelr(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         jacr = self.get_geom_jacr(name).reshape((3, self._model.nv))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_49get_geom_xvelr(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_49get_geom_xvelr(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_geom_xvelr (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_48get_geom_xvelr(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_48get_geom_xvelr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_v_jacr = NULL;
  PyObject *__pyx_v_xvelr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("get_geom_xvelr", 0);

  /* "mujoco_py/generated/wrappers.pxi":2429
 * 
 *     def get_geom_xvelr(self, name):
 *         id = self._model.geom_name2id(name)             # <<<<<<<<<<<<<<
 *         jacr = self.get_geom_jacr(name).reshape((3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_geom_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2429, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2429, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2430
 *     def get_geom_xvelr(self, name):
 *         id = self._model.geom_name2id(name)
 *         jacr = self.get_geom_jacr(name).reshape((3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_geom_jacr); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2430, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2430, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2430, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_name);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2430, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2430, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2430, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2430, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2430, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2430, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_jacr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2431
 *         id = self._model.geom_name2id(name)
 *         jacr = self.get_geom_jacr(name).reshape((3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelr
 * 
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dot); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2431, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2431, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_v_jacr);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_xvelr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2432
 *         jacr = self.get_geom_jacr(name).reshape((3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr             # <<<<<<<<<<<<<<
 * 
 *     def get_site_xpos(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelr);
  __pyx_r = __pyx_v_xvelr;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2428
 *         return xvelp
 * 
 *     def get_geom_xvelr(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.geom_name2id(name)
 *         jacr = self.get_geom_jacr(name).reshape((3, self._model.nv))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_geom_xvelr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF(__pyx_v_jacr);
  __Pyx_XDECREF(__pyx_v_xvelr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2434
 *         return xvelr
 * 
 *     def get_site_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         return self._site_xpos[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_51get_site_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_51get_site_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_site_xpos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_50get_site_xpos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_50get_site_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_site_xpos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2435
 * 
 *     def get_site_xpos(self, name):
 *         id = self._model.site_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._site_xpos[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_site_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2435, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2435, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2435, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2435, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2436
 *     def get_site_xpos(self, name):
 *         id = self._model.site_name2id(name)
 *         return self._site_xpos[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_site_xmat(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_site_xpos), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2434
 *         return xvelr
 * 
 *     def get_site_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         return self._site_xpos[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_site_xpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2438
 *         return self._site_xpos[id]
 * 
 *     def get_site_xmat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         return self._site_xmat[id].reshape((3, 3))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_53get_site_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_53get_site_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_site_xmat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_52get_site_xmat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_52get_site_xmat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_site_xmat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2439
 * 
 *     def get_site_xmat(self, name):
 *         id = self._model.site_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._site_xmat[id].reshape((3, 3))
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_site_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2439, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2439, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2439, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2439, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2440
 *     def get_site_xmat(self, name):
 *         id = self._model.site_name2id(name)
 *         return self._site_xmat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_site_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_site_xmat), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2438
 *         return self._site_xpos[id]
 * 
 *     def get_site_xmat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         return self._site_xmat[id].reshape((3, 3))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_site_xmat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2442
 *         return self._site_xmat[id].reshape((3, 3))
 * 
 *     def get_site_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         if jacp is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_55get_site_jacp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_55get_site_jacp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyArrayObject *__pyx_v_jacp = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_site_jacp (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_jacp,0};
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((PyArrayObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacp);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_site_jacp") < 0)) __PYX_ERR(3, 2442, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_name = values[0];
    __pyx_v_jacp = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_site_jacp", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2442, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_site_jacp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacp), __pyx_ptype_5numpy_ndarray, 1, "jacp", 0))) __PYX_ERR(3, 2442, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_54get_site_jacp(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_jacp);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_54get_site_jacp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacp) {
  PyObject *__pyx_v_id = NULL;
  double *__pyx_v_jacp_view;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacp;
  __Pyx_Buffer __pyx_pybuffer_jacp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyArrayObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  Py_ssize_t __pyx_t_13;
  __Pyx_RefNannySetupContext("get_site_jacp", 0);
  __Pyx_INCREF((PyObject *)__pyx_v_jacp);
  __pyx_pybuffer_jacp.pybuffer.buf = NULL;
  __pyx_pybuffer_jacp.refcount = 0;
  __pyx_pybuffernd_jacp.data = NULL;
  __pyx_pybuffernd_jacp.rcbuffer = &__pyx_pybuffer_jacp;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 2442, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":2443
 * 
 *     def get_site_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 *         id = self._model.site_name2id(name)             # <<<<<<<<<<<<<<
 *         if jacp is None:
 *             jacp = np.zeros(3 * self._model.nv)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_site_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2443, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2443, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2444
 *     def get_site_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 *         id = self._model.site_name2id(name)
 *         if jacp is None:             # <<<<<<<<<<<<<<
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]
 */
  __pyx_t_5 = (((PyObject *)__pyx_v_jacp) == Py_None);
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {

    /* "mujoco_py/generated/wrappers.pxi":2445
 *         id = self._model.site_name2id(name)
 *         if jacp is None:
 *             jacp = np.zeros(3 * self._model.nv)             # <<<<<<<<<<<<<<
 *         cdef double * jacp_view = &jacp[0]
 *         mj_jacSite(self._model.ptr, self.ptr, jacp_view, NULL, id)
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Multiply(__pyx_int_3, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2445, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2445, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2445, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 2445, __pyx_L1_error)
    __pyx_t_8 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
      __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_9 < 0)) {
        PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        }
        __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0;
      }
      __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(3, 2445, __pyx_L1_error)
    }
    __pyx_t_8 = 0;
    __Pyx_DECREF_SET(__pyx_v_jacp, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2444
 *     def get_site_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 *         id = self._model.site_name2id(name)
 *         if jacp is None:             # <<<<<<<<<<<<<<
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":2446
 *         if jacp is None:
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]             # <<<<<<<<<<<<<<
 *         mj_jacSite(self._model.ptr, self.ptr, jacp_view, NULL, id)
 *         return jacp
 */
  __pyx_t_13 = 0;
  __pyx_t_9 = -1;
  if (__pyx_t_13 < 0) {
    __pyx_t_13 += __pyx_pybuffernd_jacp.diminfo[0].shape;
    if (unlikely(__pyx_t_13 < 0)) __pyx_t_9 = 0;
  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_jacp.diminfo[0].shape)) __pyx_t_9 = 0;
  if (unlikely(__pyx_t_9 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_9);
    __PYX_ERR(3, 2446, __pyx_L1_error)
  }
  __pyx_v_jacp_view = (&(*__Pyx_BufPtrCContig1d(double *, __pyx_pybuffernd_jacp.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_jacp.diminfo[0].strides)));

  /* "mujoco_py/generated/wrappers.pxi":2447
 *             jacp = np.zeros(3 * self._model.nv)
 *         cdef double * jacp_view = &jacp[0]
 *         mj_jacSite(self._model.ptr, self.ptr, jacp_view, NULL, id)             # <<<<<<<<<<<<<<
 *         return jacp
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_id); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2447, __pyx_L1_error)
  mj_jacSite(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, __pyx_v_jacp_view, NULL, __pyx_t_9);

  /* "mujoco_py/generated/wrappers.pxi":2448
 *         cdef double * jacp_view = &jacp[0]
 *         mj_jacSite(self._model.ptr, self.ptr, jacp_view, NULL, id)
 *         return jacp             # <<<<<<<<<<<<<<
 * 
 *     def get_site_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_jacp));
  __pyx_r = ((PyObject *)__pyx_v_jacp);
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2442
 *         return self._site_xmat[id].reshape((3, 3))
 * 
 *     def get_site_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         if jacp is None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_site_jacp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF((PyObject *)__pyx_v_jacp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2450
 *         return jacp
 * 
 *     def get_site_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         if jacr is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_57get_site_jacr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_57get_site_jacr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyArrayObject *__pyx_v_jacr = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_site_jacr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_jacr,0};
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((PyArrayObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacr);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_site_jacr") < 0)) __PYX_ERR(3, 2450, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_name = values[0];
    __pyx_v_jacr = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_site_jacr", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2450, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_site_jacr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacr), __pyx_ptype_5numpy_ndarray, 1, "jacr", 0))) __PYX_ERR(3, 2450, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_56get_site_jacr(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_jacr);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_56get_site_jacr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_jacr) {
  PyObject *__pyx_v_id = NULL;
  double *__pyx_v_jacr_view;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacr;
  __Pyx_Buffer __pyx_pybuffer_jacr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyArrayObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  Py_ssize_t __pyx_t_13;
  __Pyx_RefNannySetupContext("get_site_jacr", 0);
  __Pyx_INCREF((PyObject *)__pyx_v_jacr);
  __pyx_pybuffer_jacr.pybuffer.buf = NULL;
  __pyx_pybuffer_jacr.refcount = 0;
  __pyx_pybuffernd_jacr.data = NULL;
  __pyx_pybuffernd_jacr.rcbuffer = &__pyx_pybuffer_jacr;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 2450, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":2451
 * 
 *     def get_site_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 *         id = self._model.site_name2id(name)             # <<<<<<<<<<<<<<
 *         if jacr is None:
 *             jacr = np.zeros(3 * self._model.nv)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_site_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2451, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2451, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2451, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2451, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2452
 *     def get_site_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 *         id = self._model.site_name2id(name)
 *         if jacr is None:             # <<<<<<<<<<<<<<
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]
 */
  __pyx_t_5 = (((PyObject *)__pyx_v_jacr) == Py_None);
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {

    /* "mujoco_py/generated/wrappers.pxi":2453
 *         id = self._model.site_name2id(name)
 *         if jacr is None:
 *             jacr = np.zeros(3 * self._model.nv)             # <<<<<<<<<<<<<<
 *         cdef double * jacr_view = &jacr[0]
 *         mj_jacSite(self._model.ptr, self.ptr, NULL, jacr_view, id)
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Multiply(__pyx_int_3, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2453, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2453, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2453, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2453, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2453, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 2453, __pyx_L1_error)
    __pyx_t_8 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
      __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_9 < 0)) {
        PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        }
        __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0;
      }
      __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(3, 2453, __pyx_L1_error)
    }
    __pyx_t_8 = 0;
    __Pyx_DECREF_SET(__pyx_v_jacr, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2452
 *     def get_site_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):
 *         id = self._model.site_name2id(name)
 *         if jacr is None:             # <<<<<<<<<<<<<<
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":2454
 *         if jacr is None:
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]             # <<<<<<<<<<<<<<
 *         mj_jacSite(self._model.ptr, self.ptr, NULL, jacr_view, id)
 *         return jacr
 */
  __pyx_t_13 = 0;
  __pyx_t_9 = -1;
  if (__pyx_t_13 < 0) {
    __pyx_t_13 += __pyx_pybuffernd_jacr.diminfo[0].shape;
    if (unlikely(__pyx_t_13 < 0)) __pyx_t_9 = 0;
  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_jacr.diminfo[0].shape)) __pyx_t_9 = 0;
  if (unlikely(__pyx_t_9 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_9);
    __PYX_ERR(3, 2454, __pyx_L1_error)
  }
  __pyx_v_jacr_view = (&(*__Pyx_BufPtrCContig1d(double *, __pyx_pybuffernd_jacr.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_jacr.diminfo[0].strides)));

  /* "mujoco_py/generated/wrappers.pxi":2455
 *             jacr = np.zeros(3 * self._model.nv)
 *         cdef double * jacr_view = &jacr[0]
 *         mj_jacSite(self._model.ptr, self.ptr, NULL, jacr_view, id)             # <<<<<<<<<<<<<<
 *         return jacr
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_id); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2455, __pyx_L1_error)
  mj_jacSite(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, NULL, __pyx_v_jacr_view, __pyx_t_9);

  /* "mujoco_py/generated/wrappers.pxi":2456
 *         cdef double * jacr_view = &jacr[0]
 *         mj_jacSite(self._model.ptr, self.ptr, NULL, jacr_view, id)
 *         return jacr             # <<<<<<<<<<<<<<
 * 
 *     def get_site_xvelp(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_jacr));
  __pyx_r = ((PyObject *)__pyx_v_jacr);
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2450
 *         return jacp
 * 
 *     def get_site_jacr(self, name, np.ndarray[double, ndim=1, mode="c"] jacr = None):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         if jacr is None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_site_jacr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF((PyObject *)__pyx_v_jacr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2458
 *         return jacr
 * 
 *     def get_site_xvelp(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         jacp = self.get_site_jacp(name).reshape((3, self._model.nv))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_59get_site_xvelp(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_59get_site_xvelp(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_site_xvelp (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_58get_site_xvelp(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_58get_site_xvelp(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_v_jacp = NULL;
  PyObject *__pyx_v_xvelp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("get_site_xvelp", 0);

  /* "mujoco_py/generated/wrappers.pxi":2459
 * 
 *     def get_site_xvelp(self, name):
 *         id = self._model.site_name2id(name)             # <<<<<<<<<<<<<<
 *         jacp = self.get_site_jacp(name).reshape((3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_site_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2459, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2459, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2459, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2459, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2460
 *     def get_site_xvelp(self, name):
 *         id = self._model.site_name2id(name)
 *         jacp = self.get_site_jacp(name).reshape((3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_site_jacp); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2460, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2460, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2460, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_name);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2460, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2460, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2460, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2460, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2460, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2460, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_jacp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2461
 *         id = self._model.site_name2id(name)
 *         jacp = self.get_site_jacp(name).reshape((3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelp
 * 
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dot); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2461, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2461, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_v_jacp);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_xvelp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2462
 *         jacp = self.get_site_jacp(name).reshape((3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp             # <<<<<<<<<<<<<<
 * 
 *     def get_site_xvelr(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelp);
  __pyx_r = __pyx_v_xvelp;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2458
 *         return jacr
 * 
 *     def get_site_xvelp(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         jacp = self.get_site_jacp(name).reshape((3, self._model.nv))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_site_xvelp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF(__pyx_v_jacp);
  __Pyx_XDECREF(__pyx_v_xvelp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2464
 *         return xvelp
 * 
 *     def get_site_xvelr(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         jacr = self.get_site_jacr(name).reshape((3, self._model.nv))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_61get_site_xvelr(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_61get_site_xvelr(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_site_xvelr (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_60get_site_xvelr(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_60get_site_xvelr(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_v_jacr = NULL;
  PyObject *__pyx_v_xvelr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("get_site_xvelr", 0);

  /* "mujoco_py/generated/wrappers.pxi":2465
 * 
 *     def get_site_xvelr(self, name):
 *         id = self._model.site_name2id(name)             # <<<<<<<<<<<<<<
 *         jacr = self.get_site_jacr(name).reshape((3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_site_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2465, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2465, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2465, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2465, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2465, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2466
 *     def get_site_xvelr(self, name):
 *         id = self._model.site_name2id(name)
 *         jacr = self.get_site_jacr(name).reshape((3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_site_jacr); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2466, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2466, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2466, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_name);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2466, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2466, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2466, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2466, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2466, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2466, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_jacr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2467
 *         id = self._model.site_name2id(name)
 *         jacr = self.get_site_jacr(name).reshape((3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelr
 * 
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dot); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2467, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2467, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_v_jacr);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_xvelr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2468
 *         jacr = self.get_site_jacr(name).reshape((3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr             # <<<<<<<<<<<<<<
 * 
 *     def get_camera_xpos(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelr);
  __pyx_r = __pyx_v_xvelr;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2464
 *         return xvelp
 * 
 *     def get_site_xvelr(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.site_name2id(name)
 *         jacr = self.get_site_jacr(name).reshape((3, self._model.nv))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_site_xvelr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XDECREF(__pyx_v_jacr);
  __Pyx_XDECREF(__pyx_v_xvelr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2470
 *         return xvelr
 * 
 *     def get_camera_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.camera_name2id(name)
 *         return self._cam_xpos[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_63get_camera_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_63get_camera_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_camera_xpos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_62get_camera_xpos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_62get_camera_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_camera_xpos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2471
 * 
 *     def get_camera_xpos(self, name):
 *         id = self._model.camera_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._cam_xpos[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_camera_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2471, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2471, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2472
 *     def get_camera_xpos(self, name):
 *         id = self._model.camera_name2id(name)
 *         return self._cam_xpos[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_cam_xpos(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_cam_xpos), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2470
 *         return xvelr
 * 
 *     def get_camera_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.camera_name2id(name)
 *         return self._cam_xpos[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_camera_xpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2474
 *         return self._cam_xpos[id]
 * 
 *     def get_cam_xpos(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_camera_xpos should be used instead of get_cam_xpos")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_65get_cam_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_65get_cam_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_cam_xpos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_64get_cam_xpos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_64get_cam_xpos(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_cam_xpos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2475
 * 
 *     def get_cam_xpos(self, name):
 *         raise RuntimeError("get_camera_xpos should be used instead of get_cam_xpos")             # <<<<<<<<<<<<<<
 * 
 *     def get_camera_xmat(self, name):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2475, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2474
 *         return self._cam_xpos[id]
 * 
 *     def get_cam_xpos(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_camera_xpos should be used instead of get_cam_xpos")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_cam_xpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2477
 *         raise RuntimeError("get_camera_xpos should be used instead of get_cam_xpos")
 * 
 *     def get_camera_xmat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.camera_name2id(name)
 *         return self._cam_xmat[id].reshape((3, 3))
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_67get_camera_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_67get_camera_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_camera_xmat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_66get_camera_xmat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_66get_camera_xmat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_camera_xmat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2478
 * 
 *     def get_camera_xmat(self, name):
 *         id = self._model.camera_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._cam_xmat[id].reshape((3, 3))
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_camera_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2478, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2478, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2478, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2478, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2478, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2479
 *     def get_camera_xmat(self, name):
 *         id = self._model.camera_name2id(name)
 *         return self._cam_xmat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_cam_xmat(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_cam_xmat), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2477
 *         raise RuntimeError("get_camera_xpos should be used instead of get_cam_xpos")
 * 
 *     def get_camera_xmat(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.camera_name2id(name)
 *         return self._cam_xmat[id].reshape((3, 3))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_camera_xmat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2481
 *         return self._cam_xmat[id].reshape((3, 3))
 * 
 *     def get_cam_xmat(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_camera_xmat should be used instead of get_cam_xmat")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_69get_cam_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_69get_cam_xmat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_cam_xmat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_68get_cam_xmat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_68get_cam_xmat(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_cam_xmat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2482
 * 
 *     def get_cam_xmat(self, name):
 *         raise RuntimeError("get_camera_xmat should be used instead of get_cam_xmat")             # <<<<<<<<<<<<<<
 * 
 *     def get_light_xpos(self, name):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2482, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2481
 *         return self._cam_xmat[id].reshape((3, 3))
 * 
 *     def get_cam_xmat(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_camera_xmat should be used instead of get_cam_xmat")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_cam_xmat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2484
 *         raise RuntimeError("get_camera_xmat should be used instead of get_cam_xmat")
 * 
 *     def get_light_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.light_name2id(name)
 *         return self._light_xpos[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_71get_light_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_71get_light_xpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_light_xpos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_70get_light_xpos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_70get_light_xpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_light_xpos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2485
 * 
 *     def get_light_xpos(self, name):
 *         id = self._model.light_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._light_xpos[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_light_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2485, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2485, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2485, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2485, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2486
 *     def get_light_xpos(self, name):
 *         id = self._model.light_name2id(name)
 *         return self._light_xpos[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_light_xdir(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_light_xpos), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2484
 *         raise RuntimeError("get_camera_xmat should be used instead of get_cam_xmat")
 * 
 *     def get_light_xpos(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.light_name2id(name)
 *         return self._light_xpos[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_light_xpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2488
 *         return self._light_xpos[id]
 * 
 *     def get_light_xdir(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.light_name2id(name)
 *         return self._light_xdir[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_73get_light_xdir(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_73get_light_xdir(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_light_xdir (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_72get_light_xdir(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_72get_light_xdir(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_light_xdir", 0);

  /* "mujoco_py/generated/wrappers.pxi":2489
 * 
 *     def get_light_xdir(self, name):
 *         id = self._model.light_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._light_xdir[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_light_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2489, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2489, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2489, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2489, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2489, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2490
 *     def get_light_xdir(self, name):
 *         id = self._model.light_name2id(name)
 *         return self._light_xdir[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_sensor(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_light_xdir), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2488
 *         return self._light_xpos[id]
 * 
 *     def get_light_xdir(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.light_name2id(name)
 *         return self._light_xdir[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_light_xdir", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2492
 *         return self._light_xdir[id]
 * 
 *     def get_sensor(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.sensor_name2id(name)
 *         return self._sensordata[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_75get_sensor(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_75get_sensor(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_sensor (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_74get_sensor(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_74get_sensor(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_sensor", 0);

  /* "mujoco_py/generated/wrappers.pxi":2493
 * 
 *     def get_sensor(self, name):
 *         id = self._model.sensor_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._sensordata[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_sensor_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2493, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2493, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2494
 *     def get_sensor(self, name):
 *         id = self._model.sensor_name2id(name)
 *         return self._sensordata[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_sensordata(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_sensordata), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2492
 *         return self._light_xdir[id]
 * 
 *     def get_sensor(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.sensor_name2id(name)
 *         return self._sensordata[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_sensor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2496
 *         return self._sensordata[id]
 * 
 *     def get_sensordata(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_sensor should be used instead of get_sensordata")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_77get_sensordata(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_77get_sensordata(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_sensordata (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_76get_sensordata(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_76get_sensordata(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_sensordata", 0);

  /* "mujoco_py/generated/wrappers.pxi":2497
 * 
 *     def get_sensordata(self, name):
 *         raise RuntimeError("get_sensor should be used instead of get_sensordata")             # <<<<<<<<<<<<<<
 * 
 *     def get_userdata(self, name):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2497, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2496
 *         return self._sensordata[id]
 * 
 *     def get_sensordata(self, name):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("get_sensor should be used instead of get_sensordata")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_sensordata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2499
 *         raise RuntimeError("get_sensor should be used instead of get_sensordata")
 * 
 *     def get_userdata(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.userdata_name2id(name)
 *         return self._userdata[id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_79get_userdata(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_79get_userdata(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_userdata (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_78get_userdata(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_78get_userdata(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_userdata", 0);

  /* "mujoco_py/generated/wrappers.pxi":2500
 * 
 *     def get_userdata(self, name):
 *         id = self._model.userdata_name2id(name)             # <<<<<<<<<<<<<<
 *         return self._userdata[id]
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_userdata_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2500, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2500, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2500, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2500, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2501
 *     def get_userdata(self, name):
 *         id = self._model.userdata_name2id(name)
 *         return self._userdata[id]             # <<<<<<<<<<<<<<
 * 
 *     def get_mocap_pos(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->_userdata), __pyx_v_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2499
 *         raise RuntimeError("get_sensor should be used instead of get_sensordata")
 * 
 *     def get_userdata(self, name):             # <<<<<<<<<<<<<<
 *         id = self._model.userdata_name2id(name)
 *         return self._userdata[id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_userdata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2503
 *         return self._userdata[id]
 * 
 *     def get_mocap_pos(self, name):             # <<<<<<<<<<<<<<
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_81get_mocap_pos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_81get_mocap_pos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_mocap_pos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_80get_mocap_pos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_80get_mocap_pos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_body_id = NULL;
  PyObject *__pyx_v_mocap_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_mocap_pos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2504
 * 
 *     def get_mocap_pos(self, name):
 *         body_id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         mocap_id = self._model.body_mocapid[body_id]
 *         return self.mocap_pos[mocap_id]
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2504, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2504, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_body_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2505
 *     def get_mocap_pos(self, name):
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]             # <<<<<<<<<<<<<<
 *         return self.mocap_pos[mocap_id]
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_mocapid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_body_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_mocap_id = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2506
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 *         return self.mocap_pos[mocap_id]             # <<<<<<<<<<<<<<
 * 
 *     def set_mocap_pos(self, name, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mocap_pos); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_v_mocap_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2503
 *         return self._userdata[id]
 * 
 *     def get_mocap_pos(self, name):             # <<<<<<<<<<<<<<
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_mocap_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_body_id);
  __Pyx_XDECREF(__pyx_v_mocap_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2508
 *         return self.mocap_pos[mocap_id]
 * 
 *     def set_mocap_pos(self, name, value):             # <<<<<<<<<<<<<<
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_83set_mocap_pos(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_83set_mocap_pos(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_mocap_pos (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_value,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_mocap_pos", 1, 2, 2, 1); __PYX_ERR(3, 2508, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_mocap_pos") < 0)) __PYX_ERR(3, 2508, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_name = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_mocap_pos", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2508, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.set_mocap_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_82set_mocap_pos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_value);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_82set_mocap_pos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_body_id = NULL;
  PyObject *__pyx_v_mocap_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("set_mocap_pos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2509
 * 
 *     def set_mocap_pos(self, name, value):
 *         body_id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         mocap_id = self._model.body_mocapid[body_id]
 *         self.mocap_pos[mocap_id] = value
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2509, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2509, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2509, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2509, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_body_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2510
 *     def set_mocap_pos(self, name, value):
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]             # <<<<<<<<<<<<<<
 *         self.mocap_pos[mocap_id] = value
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_mocapid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_body_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_mocap_id = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2511
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 *         self.mocap_pos[mocap_id] = value             # <<<<<<<<<<<<<<
 * 
 *     def get_mocap_quat(self, name):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mocap_pos); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_mocap_id, __pyx_v_value) < 0)) __PYX_ERR(3, 2511, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2508
 *         return self.mocap_pos[mocap_id]
 * 
 *     def set_mocap_pos(self, name, value):             # <<<<<<<<<<<<<<
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.set_mocap_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_body_id);
  __Pyx_XDECREF(__pyx_v_mocap_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2513
 *         self.mocap_pos[mocap_id] = value
 * 
 *     def get_mocap_quat(self, name):             # <<<<<<<<<<<<<<
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_85get_mocap_quat(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_85get_mocap_quat(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_mocap_quat (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_84get_mocap_quat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_84get_mocap_quat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_body_id = NULL;
  PyObject *__pyx_v_mocap_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("get_mocap_quat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2514
 * 
 *     def get_mocap_quat(self, name):
 *         body_id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         mocap_id = self._model.body_mocapid[body_id]
 *         return self.mocap_quat[mocap_id]
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2514, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2514, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_body_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2515
 *     def get_mocap_quat(self, name):
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]             # <<<<<<<<<<<<<<
 *         return self.mocap_quat[mocap_id]
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_mocapid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_body_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_mocap_id = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2516
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 *         return self.mocap_quat[mocap_id]             # <<<<<<<<<<<<<<
 * 
 *     def set_mocap_quat(self, name, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mocap_quat); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_v_mocap_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2513
 *         self.mocap_pos[mocap_id] = value
 * 
 *     def get_mocap_quat(self, name):             # <<<<<<<<<<<<<<
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_mocap_quat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_body_id);
  __Pyx_XDECREF(__pyx_v_mocap_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2518
 *         return self.mocap_quat[mocap_id]
 * 
 *     def set_mocap_quat(self, name, value):             # <<<<<<<<<<<<<<
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_87set_mocap_quat(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_87set_mocap_quat(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_mocap_quat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_value,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_mocap_quat", 1, 2, 2, 1); __PYX_ERR(3, 2518, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_mocap_quat") < 0)) __PYX_ERR(3, 2518, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_name = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_mocap_quat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2518, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.set_mocap_quat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_86set_mocap_quat(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_value);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_86set_mocap_quat(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_body_id = NULL;
  PyObject *__pyx_v_mocap_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("set_mocap_quat", 0);

  /* "mujoco_py/generated/wrappers.pxi":2519
 * 
 *     def set_mocap_quat(self, name, value):
 *         body_id = self._model.body_name2id(name)             # <<<<<<<<<<<<<<
 *         mocap_id = self._model.body_mocapid[body_id]
 *         self.mocap_quat[mocap_id] = value
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_name2id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2519, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2519, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2519, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2519, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_body_id = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2520
 *     def set_mocap_quat(self, name, value):
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]             # <<<<<<<<<<<<<<
 *         self.mocap_quat[mocap_id] = value
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_body_mocapid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_body_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_mocap_id = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2521
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 *         self.mocap_quat[mocap_id] = value             # <<<<<<<<<<<<<<
 * 
 *     def get_joint_qpos(self, name):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mocap_quat); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_mocap_id, __pyx_v_value) < 0)) __PYX_ERR(3, 2521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2518
 *         return self.mocap_quat[mocap_id]
 * 
 *     def set_mocap_quat(self, name, value):             # <<<<<<<<<<<<<<
 *         body_id = self._model.body_name2id(name)
 *         mocap_id = self._model.body_mocapid[body_id]
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.set_mocap_quat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_body_id);
  __Pyx_XDECREF(__pyx_v_mocap_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2523
 *         self.mocap_quat[mocap_id] = value
 * 
 *     def get_joint_qpos(self, name):             # <<<<<<<<<<<<<<
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_89get_joint_qpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_89get_joint_qpos(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_joint_qpos (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_88get_joint_qpos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_88get_joint_qpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_addr = NULL;
  PyObject *__pyx_v_start_i = NULL;
  PyObject *__pyx_v_end_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  __Pyx_RefNannySetupContext("get_joint_qpos", 0);

  /* "mujoco_py/generated/wrappers.pxi":2524
 * 
 *     def get_joint_qpos(self, name):
 *         addr = self._model.get_joint_qpos_addr(name)             # <<<<<<<<<<<<<<
 *         if isinstance(addr, (int, np.int32, np.int64)):
 *             return self.qpos[addr]
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_get_joint_qpos_addr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2524, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2524, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2524, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2524, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_addr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2525
 *     def get_joint_qpos(self, name):
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):             # <<<<<<<<<<<<<<
 *             return self.qpos[addr]
 *         else:
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = PyInt_Check(__pyx_v_addr); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (!__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_7 = PyObject_IsInstance(__pyx_v_addr, __pyx_t_2); 
  __pyx_t_6 = (__pyx_t_7 != 0);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = PyObject_IsInstance(__pyx_v_addr, __pyx_t_4); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_5 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = (__pyx_t_5 != 0);
  if (__pyx_t_7) {

    /* "mujoco_py/generated/wrappers.pxi":2526
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 *             return self.qpos[addr]             # <<<<<<<<<<<<<<
 *         else:
 *             start_i, end_i = addr
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qpos); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_v_addr); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "mujoco_py/generated/wrappers.pxi":2525
 *     def get_joint_qpos(self, name):
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):             # <<<<<<<<<<<<<<
 *             return self.qpos[addr]
 *         else:
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":2528
 *             return self.qpos[addr]
 *         else:
 *             start_i, end_i = addr             # <<<<<<<<<<<<<<
 *             return self.qpos[start_i:end_i]
 * 
 */
  /*else*/ {
    if ((likely(PyTuple_CheckExact(__pyx_v_addr))) || (PyList_CheckExact(__pyx_v_addr))) {
      PyObject* sequence = __pyx_v_addr;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(3, 2528, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2528, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2528, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      #endif
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_v_addr); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2528, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_1), 2) < 0) __PYX_ERR(3, 2528, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L8_unpacking_done;
      __pyx_L7_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(3, 2528, __pyx_L1_error)
      __pyx_L8_unpacking_done:;
    }
    __pyx_v_start_i = __pyx_t_4;
    __pyx_t_4 = 0;
    __pyx_v_end_i = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2529
 *         else:
 *             start_i, end_i = addr
 *             return self.qpos[start_i:end_i]             # <<<<<<<<<<<<<<
 * 
 *     def set_joint_qpos(self, name, value):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qpos); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 0, &__pyx_v_start_i, &__pyx_v_end_i, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":2523
 *         self.mocap_quat[mocap_id] = value
 * 
 *     def get_joint_qpos(self, name):             # <<<<<<<<<<<<<<
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_joint_qpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_addr);
  __Pyx_XDECREF(__pyx_v_start_i);
  __Pyx_XDECREF(__pyx_v_end_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2531
 *             return self.qpos[start_i:end_i]
 * 
 *     def set_joint_qpos(self, name, value):             # <<<<<<<<<<<<<<
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_91set_joint_qpos(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_91set_joint_qpos(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_joint_qpos (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_value,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_joint_qpos", 1, 2, 2, 1); __PYX_ERR(3, 2531, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_joint_qpos") < 0)) __PYX_ERR(3, 2531, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_name = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_joint_qpos", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2531, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.set_joint_qpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_90set_joint_qpos(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_value);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_90set_joint_qpos(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_addr = NULL;
  PyObject *__pyx_v_start_i = NULL;
  PyObject *__pyx_v_end_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  __Pyx_RefNannySetupContext("set_joint_qpos", 0);
  __Pyx_INCREF(__pyx_v_value);

  /* "mujoco_py/generated/wrappers.pxi":2532
 * 
 *     def set_joint_qpos(self, name, value):
 *         addr = self._model.get_joint_qpos_addr(name)             # <<<<<<<<<<<<<<
 *         if isinstance(addr, (int, np.int32, np.int64)):
 *             self.qpos[addr] = value
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_get_joint_qpos_addr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2532, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2532, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_addr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2533
 *     def set_joint_qpos(self, name, value):
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):             # <<<<<<<<<<<<<<
 *             self.qpos[addr] = value
 *         else:
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = PyInt_Check(__pyx_v_addr); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (!__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_7 = PyObject_IsInstance(__pyx_v_addr, __pyx_t_2); 
  __pyx_t_6 = (__pyx_t_7 != 0);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = PyObject_IsInstance(__pyx_v_addr, __pyx_t_4); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_5 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = (__pyx_t_5 != 0);
  if (__pyx_t_7) {

    /* "mujoco_py/generated/wrappers.pxi":2534
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 *             self.qpos[addr] = value             # <<<<<<<<<<<<<<
 *         else:
 *             start_i, end_i = addr
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qpos); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_addr, __pyx_v_value) < 0)) __PYX_ERR(3, 2534, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2533
 *     def set_joint_qpos(self, name, value):
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):             # <<<<<<<<<<<<<<
 *             self.qpos[addr] = value
 *         else:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/generated/wrappers.pxi":2536
 *             self.qpos[addr] = value
 *         else:
 *             start_i, end_i = addr             # <<<<<<<<<<<<<<
 *             value = np.array(value)
 *             assert value.shape == (end_i - start_i,), (
 */
  /*else*/ {
    if ((likely(PyTuple_CheckExact(__pyx_v_addr))) || (PyList_CheckExact(__pyx_v_addr))) {
      PyObject* sequence = __pyx_v_addr;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(3, 2536, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_v_addr); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_2);
      index = 1; __pyx_t_4 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_1), 2) < 0) __PYX_ERR(3, 2536, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L8_unpacking_done;
      __pyx_L7_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(3, 2536, __pyx_L1_error)
      __pyx_L8_unpacking_done:;
    }
    __pyx_v_start_i = __pyx_t_2;
    __pyx_t_2 = 0;
    __pyx_v_end_i = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2537
 *         else:
 *             start_i, end_i = addr
 *             value = np.array(value)             # <<<<<<<<<<<<<<
 *             assert value.shape == (end_i - start_i,), (
 *                 "Value has incorrect shape %s: %s" % (name, value))
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_value};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2537, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_4);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_value};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2537, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_4);
      } else
      #endif
      {
        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2537, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_INCREF(__pyx_v_value);
        __Pyx_GIVEREF(__pyx_v_value);
        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_value);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2537, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2538
 *             start_i, end_i = addr
 *             value = np.array(value)
 *             assert value.shape == (end_i - start_i,), (             # <<<<<<<<<<<<<<
 *                 "Value has incorrect shape %s: %s" % (name, value))
 *             self.qpos[start_i:end_i] = value
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyNumber_Subtract(__pyx_v_end_i, __pyx_v_start_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2538, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(3, 2538, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_7)) {

        /* "mujoco_py/generated/wrappers.pxi":2539
 *             value = np.array(value)
 *             assert value.shape == (end_i - start_i,), (
 *                 "Value has incorrect shape %s: %s" % (name, value))             # <<<<<<<<<<<<<<
 *             self.qpos[start_i:end_i] = value
 * 
 */
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2539, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_name);
        __Pyx_GIVEREF(__pyx_v_name);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_name);
        __Pyx_INCREF(__pyx_v_value);
        __Pyx_GIVEREF(__pyx_v_value);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_value);
        __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Value_has_incorrect_shape_s_s, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2539, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        PyErr_SetObject(PyExc_AssertionError, __pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(3, 2538, __pyx_L1_error)
      }
    }
    #endif

    /* "mujoco_py/generated/wrappers.pxi":2540
 *             assert value.shape == (end_i - start_i,), (
 *                 "Value has incorrect shape %s: %s" % (name, value))
 *             self.qpos[start_i:end_i] = value             # <<<<<<<<<<<<<<
 * 
 *     def get_joint_qvel(self, name):
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qpos); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_PyObject_SetSlice(__pyx_t_3, __pyx_v_value, 0, 0, &__pyx_v_start_i, &__pyx_v_end_i, NULL, 0, 0, 1) < 0) __PYX_ERR(3, 2540, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "mujoco_py/generated/wrappers.pxi":2531
 *             return self.qpos[start_i:end_i]
 * 
 *     def set_joint_qpos(self, name, value):             # <<<<<<<<<<<<<<
 *         addr = self._model.get_joint_qpos_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.set_joint_qpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_addr);
  __Pyx_XDECREF(__pyx_v_start_i);
  __Pyx_XDECREF(__pyx_v_end_i);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2542
 *             self.qpos[start_i:end_i] = value
 * 
 *     def get_joint_qvel(self, name):             # <<<<<<<<<<<<<<
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_93get_joint_qvel(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_93get_joint_qvel(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_joint_qvel (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_92get_joint_qvel(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_92get_joint_qvel(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_addr = NULL;
  PyObject *__pyx_v_start_i = NULL;
  PyObject *__pyx_v_end_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  __Pyx_RefNannySetupContext("get_joint_qvel", 0);

  /* "mujoco_py/generated/wrappers.pxi":2543
 * 
 *     def get_joint_qvel(self, name):
 *         addr = self._model.get_joint_qvel_addr(name)             # <<<<<<<<<<<<<<
 *         if isinstance(addr, (int, np.int32, np.int64)):
 *             return self.qvel[addr]
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_get_joint_qvel_addr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2543, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2543, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2543, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2543, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_addr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2544
 *     def get_joint_qvel(self, name):
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):             # <<<<<<<<<<<<<<
 *             return self.qvel[addr]
 *         else:
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = PyInt_Check(__pyx_v_addr); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (!__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_7 = PyObject_IsInstance(__pyx_v_addr, __pyx_t_2); 
  __pyx_t_6 = (__pyx_t_7 != 0);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = PyObject_IsInstance(__pyx_v_addr, __pyx_t_4); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_5 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = (__pyx_t_5 != 0);
  if (__pyx_t_7) {

    /* "mujoco_py/generated/wrappers.pxi":2545
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 *             return self.qvel[addr]             # <<<<<<<<<<<<<<
 *         else:
 *             start_i, end_i = addr
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2545, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_v_addr); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2545, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "mujoco_py/generated/wrappers.pxi":2544
 *     def get_joint_qvel(self, name):
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):             # <<<<<<<<<<<<<<
 *             return self.qvel[addr]
 *         else:
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":2547
 *             return self.qvel[addr]
 *         else:
 *             start_i, end_i = addr             # <<<<<<<<<<<<<<
 *             return self.qvel[start_i:end_i]
 * 
 */
  /*else*/ {
    if ((likely(PyTuple_CheckExact(__pyx_v_addr))) || (PyList_CheckExact(__pyx_v_addr))) {
      PyObject* sequence = __pyx_v_addr;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(3, 2547, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      #endif
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_v_addr); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_1), 2) < 0) __PYX_ERR(3, 2547, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L8_unpacking_done;
      __pyx_L7_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(3, 2547, __pyx_L1_error)
      __pyx_L8_unpacking_done:;
    }
    __pyx_v_start_i = __pyx_t_4;
    __pyx_t_4 = 0;
    __pyx_v_end_i = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2548
 *         else:
 *             start_i, end_i = addr
 *             return self.qvel[start_i:end_i]             # <<<<<<<<<<<<<<
 * 
 *     def set_joint_qvel(self, name, value):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 0, &__pyx_v_start_i, &__pyx_v_end_i, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":2542
 *             self.qpos[start_i:end_i] = value
 * 
 *     def get_joint_qvel(self, name):             # <<<<<<<<<<<<<<
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.get_joint_qvel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_addr);
  __Pyx_XDECREF(__pyx_v_start_i);
  __Pyx_XDECREF(__pyx_v_end_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2550
 *             return self.qvel[start_i:end_i]
 * 
 *     def set_joint_qvel(self, name, value):             # <<<<<<<<<<<<<<
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_95set_joint_qvel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_95set_joint_qvel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_joint_qvel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_value,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_joint_qvel", 1, 2, 2, 1); __PYX_ERR(3, 2550, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_joint_qvel") < 0)) __PYX_ERR(3, 2550, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_name = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_joint_qvel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 2550, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.set_joint_qvel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_94set_joint_qvel(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), __pyx_v_name, __pyx_v_value);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_94set_joint_qvel(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_addr = NULL;
  PyObject *__pyx_v_start_i = NULL;
  PyObject *__pyx_v_end_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  __Pyx_RefNannySetupContext("set_joint_qvel", 0);
  __Pyx_INCREF(__pyx_v_value);

  /* "mujoco_py/generated/wrappers.pxi":2551
 * 
 *     def set_joint_qvel(self, name, value):
 *         addr = self._model.get_joint_qvel_addr(name)             # <<<<<<<<<<<<<<
 *         if isinstance(addr, (int, np.int32, np.int64)):
 *             self.qvel[addr] = value
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_get_joint_qvel_addr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2551, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2551, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2551, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2551, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_name);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2551, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_addr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2552
 *     def set_joint_qvel(self, name, value):
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):             # <<<<<<<<<<<<<<
 *             self.qvel[addr] = value
 *         else:
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = PyInt_Check(__pyx_v_addr); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (!__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_7 = PyObject_IsInstance(__pyx_v_addr, __pyx_t_2); 
  __pyx_t_6 = (__pyx_t_7 != 0);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = PyObject_IsInstance(__pyx_v_addr, __pyx_t_4); 
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_5 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = (__pyx_t_5 != 0);
  if (__pyx_t_7) {

    /* "mujoco_py/generated/wrappers.pxi":2553
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 *             self.qvel[addr] = value             # <<<<<<<<<<<<<<
 *         else:
 *             start_i, end_i = addr
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2553, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_addr, __pyx_v_value) < 0)) __PYX_ERR(3, 2553, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2552
 *     def set_joint_qvel(self, name, value):
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):             # <<<<<<<<<<<<<<
 *             self.qvel[addr] = value
 *         else:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/generated/wrappers.pxi":2555
 *             self.qvel[addr] = value
 *         else:
 *             start_i, end_i = addr             # <<<<<<<<<<<<<<
 *             value = np.array(value)
 *             assert value.shape == (end_i - start_i,), (
 */
  /*else*/ {
    if ((likely(PyTuple_CheckExact(__pyx_v_addr))) || (PyList_CheckExact(__pyx_v_addr))) {
      PyObject* sequence = __pyx_v_addr;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(3, 2555, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2555, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2555, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_v_addr); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2555, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_2);
      index = 1; __pyx_t_4 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_1), 2) < 0) __PYX_ERR(3, 2555, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L8_unpacking_done;
      __pyx_L7_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(3, 2555, __pyx_L1_error)
      __pyx_L8_unpacking_done:;
    }
    __pyx_v_start_i = __pyx_t_2;
    __pyx_t_2 = 0;
    __pyx_v_end_i = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2556
 *         else:
 *             start_i, end_i = addr
 *             value = np.array(value)             # <<<<<<<<<<<<<<
 *             assert value.shape == (end_i - start_i,), (
 *                 "Value has incorrect shape %s: %s" % (name, value))
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_value};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2556, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_4);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_value};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2556, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_4);
      } else
      #endif
      {
        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2556, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_INCREF(__pyx_v_value);
        __Pyx_GIVEREF(__pyx_v_value);
        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_value);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2556, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2557
 *             start_i, end_i = addr
 *             value = np.array(value)
 *             assert value.shape == (end_i - start_i,), (             # <<<<<<<<<<<<<<
 *                 "Value has incorrect shape %s: %s" % (name, value))
 *             self.qvel[start_i:end_i] = value
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyNumber_Subtract(__pyx_v_end_i, __pyx_v_start_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2557, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(3, 2557, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_7)) {

        /* "mujoco_py/generated/wrappers.pxi":2558
 *             value = np.array(value)
 *             assert value.shape == (end_i - start_i,), (
 *                 "Value has incorrect shape %s: %s" % (name, value))             # <<<<<<<<<<<<<<
 *             self.qvel[start_i:end_i] = value
 * 
 */
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2558, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_name);
        __Pyx_GIVEREF(__pyx_v_name);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_name);
        __Pyx_INCREF(__pyx_v_value);
        __Pyx_GIVEREF(__pyx_v_value);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_value);
        __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Value_has_incorrect_shape_s_s, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2558, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        PyErr_SetObject(PyExc_AssertionError, __pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(3, 2557, __pyx_L1_error)
      }
    }
    #endif

    /* "mujoco_py/generated/wrappers.pxi":2559
 *             assert value.shape == (end_i - start_i,), (
 *                 "Value has incorrect shape %s: %s" % (name, value))
 *             self.qvel[start_i:end_i] = value             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_PyObject_SetSlice(__pyx_t_3, __pyx_v_value, 0, 0, &__pyx_v_start_i, &__pyx_v_end_i, NULL, 0, 0, 1) < 0) __PYX_ERR(3, 2559, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "mujoco_py/generated/wrappers.pxi":2550
 *             return self.qvel[start_i:end_i]
 * 
 *     def set_joint_qvel(self, name, value):             # <<<<<<<<<<<<<<
 *         addr = self._model.get_joint_qvel_addr(name)
 *         if isinstance(addr, (int, np.int32, np.int64)):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.set_joint_qvel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_addr);
  __Pyx_XDECREF(__pyx_v_start_i);
  __Pyx_XDECREF(__pyx_v_end_i);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2563
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjData* p, PyMjModel model):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2565
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjData* p, PyMjModel model):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_8PyMjData__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, mjData *__pyx_v_p, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_model) {
  PyObject *__pyx_8genexpr2__pyx_v_i = NULL;
  int __pyx_8genexpr3__pyx_v_i;
  int __pyx_8genexpr4__pyx_v_i;
  long __pyx_8genexpr5__pyx_v_i;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  Py_ssize_t __pyx_t_8;
  int __pyx_t_9;
  long __pyx_t_10;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":2567
 *     cdef void _set(self, mjData* p, PyMjModel model):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 *         self._model = model
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":2568
 * 
 *         self.ptr = p
 *         self._model = model             # <<<<<<<<<<<<<<
 * 
 *         self._qpos = _wrap_mjtNum_1d(p.qpos, model.nq)
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_model));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_model));
  __Pyx_GOTREF(__pyx_v_self->_model);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_model));
  __pyx_v_self->_model = __pyx_v_model;

  /* "mujoco_py/generated/wrappers.pxi":2570
 *         self._model = model
 * 
 *         self._qpos = _wrap_mjtNum_1d(p.qpos, model.nq)             # <<<<<<<<<<<<<<
 *         self._qvel = _wrap_mjtNum_1d(p.qvel, model.nv)
 *         self._act = _wrap_mjtNum_1d(p.act, model.na)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nq); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qpos, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qpos));
  __pyx_v_self->_qpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2571
 * 
 *         self._qpos = _wrap_mjtNum_1d(p.qpos, model.nq)
 *         self._qvel = _wrap_mjtNum_1d(p.qvel, model.nv)             # <<<<<<<<<<<<<<
 *         self._act = _wrap_mjtNum_1d(p.act, model.na)
 *         self._ctrl = _wrap_mjtNum_1d(p.ctrl, model.nu)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2571, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qvel, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qvel);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qvel));
  __pyx_v_self->_qvel = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2572
 *         self._qpos = _wrap_mjtNum_1d(p.qpos, model.nq)
 *         self._qvel = _wrap_mjtNum_1d(p.qvel, model.nv)
 *         self._act = _wrap_mjtNum_1d(p.act, model.na)             # <<<<<<<<<<<<<<
 *         self._ctrl = _wrap_mjtNum_1d(p.ctrl, model.nu)
 *         self._qfrc_applied = _wrap_mjtNum_1d(p.qfrc_applied, model.nv)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_na); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2572, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->act, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_act);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_act));
  __pyx_v_self->_act = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2573
 *         self._qvel = _wrap_mjtNum_1d(p.qvel, model.nv)
 *         self._act = _wrap_mjtNum_1d(p.act, model.na)
 *         self._ctrl = _wrap_mjtNum_1d(p.ctrl, model.nu)             # <<<<<<<<<<<<<<
 *         self._qfrc_applied = _wrap_mjtNum_1d(p.qfrc_applied, model.nv)
 *         self._xfrc_applied = _wrap_mjtNum_2d(p.xfrc_applied, model.nbody, 6)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nu); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2573, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->ctrl, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_ctrl);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_ctrl));
  __pyx_v_self->_ctrl = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2574
 *         self._act = _wrap_mjtNum_1d(p.act, model.na)
 *         self._ctrl = _wrap_mjtNum_1d(p.ctrl, model.nu)
 *         self._qfrc_applied = _wrap_mjtNum_1d(p.qfrc_applied, model.nv)             # <<<<<<<<<<<<<<
 *         self._xfrc_applied = _wrap_mjtNum_2d(p.xfrc_applied, model.nbody, 6)
 *         self._qacc = _wrap_mjtNum_1d(p.qacc, model.nv)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2574, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qfrc_applied, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qfrc_applied);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qfrc_applied));
  __pyx_v_self->_qfrc_applied = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2575
 *         self._ctrl = _wrap_mjtNum_1d(p.ctrl, model.nu)
 *         self._qfrc_applied = _wrap_mjtNum_1d(p.qfrc_applied, model.nv)
 *         self._xfrc_applied = _wrap_mjtNum_2d(p.xfrc_applied, model.nbody, 6)             # <<<<<<<<<<<<<<
 *         self._qacc = _wrap_mjtNum_1d(p.qacc, model.nv)
 *         self._act_dot = _wrap_mjtNum_1d(p.act_dot, model.na)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2575, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->xfrc_applied, __pyx_t_2, 6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_xfrc_applied);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_xfrc_applied));
  __pyx_v_self->_xfrc_applied = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2576
 *         self._qfrc_applied = _wrap_mjtNum_1d(p.qfrc_applied, model.nv)
 *         self._xfrc_applied = _wrap_mjtNum_2d(p.xfrc_applied, model.nbody, 6)
 *         self._qacc = _wrap_mjtNum_1d(p.qacc, model.nv)             # <<<<<<<<<<<<<<
 *         self._act_dot = _wrap_mjtNum_1d(p.act_dot, model.na)
 *         self._mocap_pos = _wrap_mjtNum_2d(p.mocap_pos, model.nmocap, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2576, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qacc, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qacc);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qacc));
  __pyx_v_self->_qacc = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2577
 *         self._xfrc_applied = _wrap_mjtNum_2d(p.xfrc_applied, model.nbody, 6)
 *         self._qacc = _wrap_mjtNum_1d(p.qacc, model.nv)
 *         self._act_dot = _wrap_mjtNum_1d(p.act_dot, model.na)             # <<<<<<<<<<<<<<
 *         self._mocap_pos = _wrap_mjtNum_2d(p.mocap_pos, model.nmocap, 3)
 *         self._mocap_quat = _wrap_mjtNum_2d(p.mocap_quat, model.nmocap, 4)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_na); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2577, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->act_dot, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_act_dot);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_act_dot));
  __pyx_v_self->_act_dot = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2578
 *         self._qacc = _wrap_mjtNum_1d(p.qacc, model.nv)
 *         self._act_dot = _wrap_mjtNum_1d(p.act_dot, model.na)
 *         self._mocap_pos = _wrap_mjtNum_2d(p.mocap_pos, model.nmocap, 3)             # <<<<<<<<<<<<<<
 *         self._mocap_quat = _wrap_mjtNum_2d(p.mocap_quat, model.nmocap, 4)
 *         self._userdata = _wrap_mjtNum_1d(p.userdata, model.nuserdata)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nmocap); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2578, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->mocap_pos, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mocap_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mocap_pos));
  __pyx_v_self->_mocap_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2579
 *         self._act_dot = _wrap_mjtNum_1d(p.act_dot, model.na)
 *         self._mocap_pos = _wrap_mjtNum_2d(p.mocap_pos, model.nmocap, 3)
 *         self._mocap_quat = _wrap_mjtNum_2d(p.mocap_quat, model.nmocap, 4)             # <<<<<<<<<<<<<<
 *         self._userdata = _wrap_mjtNum_1d(p.userdata, model.nuserdata)
 *         self._sensordata = _wrap_mjtNum_1d(p.sensordata, model.nsensordata)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nmocap); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2579, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->mocap_quat, __pyx_t_2, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mocap_quat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mocap_quat));
  __pyx_v_self->_mocap_quat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2580
 *         self._mocap_pos = _wrap_mjtNum_2d(p.mocap_pos, model.nmocap, 3)
 *         self._mocap_quat = _wrap_mjtNum_2d(p.mocap_quat, model.nmocap, 4)
 *         self._userdata = _wrap_mjtNum_1d(p.userdata, model.nuserdata)             # <<<<<<<<<<<<<<
 *         self._sensordata = _wrap_mjtNum_1d(p.sensordata, model.nsensordata)
 *         self._xpos = _wrap_mjtNum_2d(p.xpos, model.nbody, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nuserdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2580, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->userdata, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_userdata);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_userdata));
  __pyx_v_self->_userdata = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2581
 *         self._mocap_quat = _wrap_mjtNum_2d(p.mocap_quat, model.nmocap, 4)
 *         self._userdata = _wrap_mjtNum_1d(p.userdata, model.nuserdata)
 *         self._sensordata = _wrap_mjtNum_1d(p.sensordata, model.nsensordata)             # <<<<<<<<<<<<<<
 *         self._xpos = _wrap_mjtNum_2d(p.xpos, model.nbody, 3)
 *         self._xquat = _wrap_mjtNum_2d(p.xquat, model.nbody, 4)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nsensordata); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2581, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->sensordata, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sensordata);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sensordata));
  __pyx_v_self->_sensordata = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2582
 *         self._userdata = _wrap_mjtNum_1d(p.userdata, model.nuserdata)
 *         self._sensordata = _wrap_mjtNum_1d(p.sensordata, model.nsensordata)
 *         self._xpos = _wrap_mjtNum_2d(p.xpos, model.nbody, 3)             # <<<<<<<<<<<<<<
 *         self._xquat = _wrap_mjtNum_2d(p.xquat, model.nbody, 4)
 *         self._xmat = _wrap_mjtNum_2d(p.xmat, model.nbody, 9)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2582, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->xpos, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_xpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_xpos));
  __pyx_v_self->_xpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2583
 *         self._sensordata = _wrap_mjtNum_1d(p.sensordata, model.nsensordata)
 *         self._xpos = _wrap_mjtNum_2d(p.xpos, model.nbody, 3)
 *         self._xquat = _wrap_mjtNum_2d(p.xquat, model.nbody, 4)             # <<<<<<<<<<<<<<
 *         self._xmat = _wrap_mjtNum_2d(p.xmat, model.nbody, 9)
 *         self._xipos = _wrap_mjtNum_2d(p.xipos, model.nbody, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2583, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->xquat, __pyx_t_2, 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_xquat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_xquat));
  __pyx_v_self->_xquat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2584
 *         self._xpos = _wrap_mjtNum_2d(p.xpos, model.nbody, 3)
 *         self._xquat = _wrap_mjtNum_2d(p.xquat, model.nbody, 4)
 *         self._xmat = _wrap_mjtNum_2d(p.xmat, model.nbody, 9)             # <<<<<<<<<<<<<<
 *         self._xipos = _wrap_mjtNum_2d(p.xipos, model.nbody, 3)
 *         self._ximat = _wrap_mjtNum_2d(p.ximat, model.nbody, 9)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->xmat, __pyx_t_2, 9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_xmat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_xmat));
  __pyx_v_self->_xmat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2585
 *         self._xquat = _wrap_mjtNum_2d(p.xquat, model.nbody, 4)
 *         self._xmat = _wrap_mjtNum_2d(p.xmat, model.nbody, 9)
 *         self._xipos = _wrap_mjtNum_2d(p.xipos, model.nbody, 3)             # <<<<<<<<<<<<<<
 *         self._ximat = _wrap_mjtNum_2d(p.ximat, model.nbody, 9)
 *         self._xanchor = _wrap_mjtNum_2d(p.xanchor, model.njnt, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->xipos, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_xipos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_xipos));
  __pyx_v_self->_xipos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2586
 *         self._xmat = _wrap_mjtNum_2d(p.xmat, model.nbody, 9)
 *         self._xipos = _wrap_mjtNum_2d(p.xipos, model.nbody, 3)
 *         self._ximat = _wrap_mjtNum_2d(p.ximat, model.nbody, 9)             # <<<<<<<<<<<<<<
 *         self._xanchor = _wrap_mjtNum_2d(p.xanchor, model.njnt, 3)
 *         self._xaxis = _wrap_mjtNum_2d(p.xaxis, model.njnt, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2586, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->ximat, __pyx_t_2, 9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_ximat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_ximat));
  __pyx_v_self->_ximat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2587
 *         self._xipos = _wrap_mjtNum_2d(p.xipos, model.nbody, 3)
 *         self._ximat = _wrap_mjtNum_2d(p.ximat, model.nbody, 9)
 *         self._xanchor = _wrap_mjtNum_2d(p.xanchor, model.njnt, 3)             # <<<<<<<<<<<<<<
 *         self._xaxis = _wrap_mjtNum_2d(p.xaxis, model.njnt, 3)
 *         self._geom_xpos = _wrap_mjtNum_2d(p.geom_xpos, model.ngeom, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njnt); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2587, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->xanchor, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_xanchor);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_xanchor));
  __pyx_v_self->_xanchor = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2588
 *         self._ximat = _wrap_mjtNum_2d(p.ximat, model.nbody, 9)
 *         self._xanchor = _wrap_mjtNum_2d(p.xanchor, model.njnt, 3)
 *         self._xaxis = _wrap_mjtNum_2d(p.xaxis, model.njnt, 3)             # <<<<<<<<<<<<<<
 *         self._geom_xpos = _wrap_mjtNum_2d(p.geom_xpos, model.ngeom, 3)
 *         self._geom_xmat = _wrap_mjtNum_2d(p.geom_xmat, model.ngeom, 9)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njnt); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2588, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->xaxis, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_xaxis);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_xaxis));
  __pyx_v_self->_xaxis = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2589
 *         self._xanchor = _wrap_mjtNum_2d(p.xanchor, model.njnt, 3)
 *         self._xaxis = _wrap_mjtNum_2d(p.xaxis, model.njnt, 3)
 *         self._geom_xpos = _wrap_mjtNum_2d(p.geom_xpos, model.ngeom, 3)             # <<<<<<<<<<<<<<
 *         self._geom_xmat = _wrap_mjtNum_2d(p.geom_xmat, model.ngeom, 9)
 *         self._site_xpos = _wrap_mjtNum_2d(p.site_xpos, model.nsite, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_ngeom); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2589, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->geom_xpos, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_xpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_xpos));
  __pyx_v_self->_geom_xpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2590
 *         self._xaxis = _wrap_mjtNum_2d(p.xaxis, model.njnt, 3)
 *         self._geom_xpos = _wrap_mjtNum_2d(p.geom_xpos, model.ngeom, 3)
 *         self._geom_xmat = _wrap_mjtNum_2d(p.geom_xmat, model.ngeom, 9)             # <<<<<<<<<<<<<<
 *         self._site_xpos = _wrap_mjtNum_2d(p.site_xpos, model.nsite, 3)
 *         self._site_xmat = _wrap_mjtNum_2d(p.site_xmat, model.nsite, 9)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_ngeom); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2590, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->geom_xmat, __pyx_t_2, 9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geom_xmat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geom_xmat));
  __pyx_v_self->_geom_xmat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2591
 *         self._geom_xpos = _wrap_mjtNum_2d(p.geom_xpos, model.ngeom, 3)
 *         self._geom_xmat = _wrap_mjtNum_2d(p.geom_xmat, model.ngeom, 9)
 *         self._site_xpos = _wrap_mjtNum_2d(p.site_xpos, model.nsite, 3)             # <<<<<<<<<<<<<<
 *         self._site_xmat = _wrap_mjtNum_2d(p.site_xmat, model.nsite, 9)
 *         self._cam_xpos = _wrap_mjtNum_2d(p.cam_xpos, model.ncam, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nsite); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2591, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->site_xpos, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_xpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_xpos));
  __pyx_v_self->_site_xpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2592
 *         self._geom_xmat = _wrap_mjtNum_2d(p.geom_xmat, model.ngeom, 9)
 *         self._site_xpos = _wrap_mjtNum_2d(p.site_xpos, model.nsite, 3)
 *         self._site_xmat = _wrap_mjtNum_2d(p.site_xmat, model.nsite, 9)             # <<<<<<<<<<<<<<
 *         self._cam_xpos = _wrap_mjtNum_2d(p.cam_xpos, model.ncam, 3)
 *         self._cam_xmat = _wrap_mjtNum_2d(p.cam_xmat, model.ncam, 9)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nsite); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2592, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->site_xmat, __pyx_t_2, 9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_site_xmat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_site_xmat));
  __pyx_v_self->_site_xmat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2593
 *         self._site_xpos = _wrap_mjtNum_2d(p.site_xpos, model.nsite, 3)
 *         self._site_xmat = _wrap_mjtNum_2d(p.site_xmat, model.nsite, 9)
 *         self._cam_xpos = _wrap_mjtNum_2d(p.cam_xpos, model.ncam, 3)             # <<<<<<<<<<<<<<
 *         self._cam_xmat = _wrap_mjtNum_2d(p.cam_xmat, model.ncam, 9)
 *         self._light_xpos = _wrap_mjtNum_2d(p.light_xpos, model.nlight, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_ncam); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cam_xpos, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_xpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_xpos));
  __pyx_v_self->_cam_xpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2594
 *         self._site_xmat = _wrap_mjtNum_2d(p.site_xmat, model.nsite, 9)
 *         self._cam_xpos = _wrap_mjtNum_2d(p.cam_xpos, model.ncam, 3)
 *         self._cam_xmat = _wrap_mjtNum_2d(p.cam_xmat, model.ncam, 9)             # <<<<<<<<<<<<<<
 *         self._light_xpos = _wrap_mjtNum_2d(p.light_xpos, model.nlight, 3)
 *         self._light_xdir = _wrap_mjtNum_2d(p.light_xdir, model.nlight, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_ncam); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2594, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cam_xmat, __pyx_t_2, 9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cam_xmat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cam_xmat));
  __pyx_v_self->_cam_xmat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2595
 *         self._cam_xpos = _wrap_mjtNum_2d(p.cam_xpos, model.ncam, 3)
 *         self._cam_xmat = _wrap_mjtNum_2d(p.cam_xmat, model.ncam, 9)
 *         self._light_xpos = _wrap_mjtNum_2d(p.light_xpos, model.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._light_xdir = _wrap_mjtNum_2d(p.light_xdir, model.nlight, 3)
 *         self._subtree_com = _wrap_mjtNum_2d(p.subtree_com, model.nbody, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nlight); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2595, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->light_xpos, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_xpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_xpos));
  __pyx_v_self->_light_xpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2596
 *         self._cam_xmat = _wrap_mjtNum_2d(p.cam_xmat, model.ncam, 9)
 *         self._light_xpos = _wrap_mjtNum_2d(p.light_xpos, model.nlight, 3)
 *         self._light_xdir = _wrap_mjtNum_2d(p.light_xdir, model.nlight, 3)             # <<<<<<<<<<<<<<
 *         self._subtree_com = _wrap_mjtNum_2d(p.subtree_com, model.nbody, 3)
 *         self._cdof = _wrap_mjtNum_2d(p.cdof, model.nv, 6)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nlight); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->light_xdir, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_light_xdir);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_light_xdir));
  __pyx_v_self->_light_xdir = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2597
 *         self._light_xpos = _wrap_mjtNum_2d(p.light_xpos, model.nlight, 3)
 *         self._light_xdir = _wrap_mjtNum_2d(p.light_xdir, model.nlight, 3)
 *         self._subtree_com = _wrap_mjtNum_2d(p.subtree_com, model.nbody, 3)             # <<<<<<<<<<<<<<
 *         self._cdof = _wrap_mjtNum_2d(p.cdof, model.nv, 6)
 *         self._cinert = _wrap_mjtNum_2d(p.cinert, model.nbody, 10)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2597, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->subtree_com, __pyx_t_2, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_subtree_com);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_subtree_com));
  __pyx_v_self->_subtree_com = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2598
 *         self._light_xdir = _wrap_mjtNum_2d(p.light_xdir, model.nlight, 3)
 *         self._subtree_com = _wrap_mjtNum_2d(p.subtree_com, model.nbody, 3)
 *         self._cdof = _wrap_mjtNum_2d(p.cdof, model.nv, 6)             # <<<<<<<<<<<<<<
 *         self._cinert = _wrap_mjtNum_2d(p.cinert, model.nbody, 10)
 *         self._ten_wrapadr = _wrap_int_1d(p.ten_wrapadr, model.ntendon)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2598, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cdof, __pyx_t_2, 6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cdof);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cdof));
  __pyx_v_self->_cdof = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2599
 *         self._subtree_com = _wrap_mjtNum_2d(p.subtree_com, model.nbody, 3)
 *         self._cdof = _wrap_mjtNum_2d(p.cdof, model.nv, 6)
 *         self._cinert = _wrap_mjtNum_2d(p.cinert, model.nbody, 10)             # <<<<<<<<<<<<<<
 *         self._ten_wrapadr = _wrap_int_1d(p.ten_wrapadr, model.ntendon)
 *         self._ten_wrapnum = _wrap_int_1d(p.ten_wrapnum, model.ntendon)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2599, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cinert, __pyx_t_2, 10)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cinert);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cinert));
  __pyx_v_self->_cinert = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2600
 *         self._cdof = _wrap_mjtNum_2d(p.cdof, model.nv, 6)
 *         self._cinert = _wrap_mjtNum_2d(p.cinert, model.nbody, 10)
 *         self._ten_wrapadr = _wrap_int_1d(p.ten_wrapadr, model.ntendon)             # <<<<<<<<<<<<<<
 *         self._ten_wrapnum = _wrap_int_1d(p.ten_wrapnum, model.ntendon)
 *         self._ten_length = _wrap_mjtNum_1d(p.ten_length, model.ntendon)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_ntendon); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->ten_wrapadr, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_ten_wrapadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_ten_wrapadr));
  __pyx_v_self->_ten_wrapadr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2601
 *         self._cinert = _wrap_mjtNum_2d(p.cinert, model.nbody, 10)
 *         self._ten_wrapadr = _wrap_int_1d(p.ten_wrapadr, model.ntendon)
 *         self._ten_wrapnum = _wrap_int_1d(p.ten_wrapnum, model.ntendon)             # <<<<<<<<<<<<<<
 *         self._ten_length = _wrap_mjtNum_1d(p.ten_length, model.ntendon)
 *         self._ten_moment = _wrap_mjtNum_2d(p.ten_moment, model.ntendon, model.nv)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_ntendon); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2601, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->ten_wrapnum, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_ten_wrapnum);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_ten_wrapnum));
  __pyx_v_self->_ten_wrapnum = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2602
 *         self._ten_wrapadr = _wrap_int_1d(p.ten_wrapadr, model.ntendon)
 *         self._ten_wrapnum = _wrap_int_1d(p.ten_wrapnum, model.ntendon)
 *         self._ten_length = _wrap_mjtNum_1d(p.ten_length, model.ntendon)             # <<<<<<<<<<<<<<
 *         self._ten_moment = _wrap_mjtNum_2d(p.ten_moment, model.ntendon, model.nv)
 *         self._wrap_obj = _wrap_int_1d(p.wrap_obj, model.nwrap*2)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_ntendon); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2602, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->ten_length, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_ten_length);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_ten_length));
  __pyx_v_self->_ten_length = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2603
 *         self._ten_wrapnum = _wrap_int_1d(p.ten_wrapnum, model.ntendon)
 *         self._ten_length = _wrap_mjtNum_1d(p.ten_length, model.ntendon)
 *         self._ten_moment = _wrap_mjtNum_2d(p.ten_moment, model.ntendon, model.nv)             # <<<<<<<<<<<<<<
 *         self._wrap_obj = _wrap_int_1d(p.wrap_obj, model.nwrap*2)
 *         self._wrap_xpos = _wrap_mjtNum_2d(p.wrap_xpos, model.nwrap*2, 3)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_ntendon); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2603, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2603, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->ten_moment, __pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_ten_moment);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_ten_moment));
  __pyx_v_self->_ten_moment = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2604
 *         self._ten_length = _wrap_mjtNum_1d(p.ten_length, model.ntendon)
 *         self._ten_moment = _wrap_mjtNum_2d(p.ten_moment, model.ntendon, model.nv)
 *         self._wrap_obj = _wrap_int_1d(p.wrap_obj, model.nwrap*2)             # <<<<<<<<<<<<<<
 *         self._wrap_xpos = _wrap_mjtNum_2d(p.wrap_xpos, model.nwrap*2, 3)
 *         self._actuator_length = _wrap_mjtNum_1d(p.actuator_length, model.nu)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nwrap); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_int_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2604, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->wrap_obj, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->_wrap_obj);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_wrap_obj));
  __pyx_v_self->_wrap_obj = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2605
 *         self._ten_moment = _wrap_mjtNum_2d(p.ten_moment, model.ntendon, model.nv)
 *         self._wrap_obj = _wrap_int_1d(p.wrap_obj, model.nwrap*2)
 *         self._wrap_xpos = _wrap_mjtNum_2d(p.wrap_xpos, model.nwrap*2, 3)             # <<<<<<<<<<<<<<
 *         self._actuator_length = _wrap_mjtNum_1d(p.actuator_length, model.nu)
 *         self._actuator_moment = _wrap_mjtNum_2d(p.actuator_moment, model.nu, model.nv)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nwrap); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyNumber_Multiply(__pyx_t_4, __pyx_int_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2605, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->wrap_xpos, __pyx_t_3, 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_wrap_xpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_wrap_xpos));
  __pyx_v_self->_wrap_xpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2606
 *         self._wrap_obj = _wrap_int_1d(p.wrap_obj, model.nwrap*2)
 *         self._wrap_xpos = _wrap_mjtNum_2d(p.wrap_xpos, model.nwrap*2, 3)
 *         self._actuator_length = _wrap_mjtNum_1d(p.actuator_length, model.nu)             # <<<<<<<<<<<<<<
 *         self._actuator_moment = _wrap_mjtNum_2d(p.actuator_moment, model.nu, model.nv)
 *         self._crb = _wrap_mjtNum_2d(p.crb, model.nbody, 10)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nu); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2606, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->actuator_length, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_length);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_length));
  __pyx_v_self->_actuator_length = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2607
 *         self._wrap_xpos = _wrap_mjtNum_2d(p.wrap_xpos, model.nwrap*2, 3)
 *         self._actuator_length = _wrap_mjtNum_1d(p.actuator_length, model.nu)
 *         self._actuator_moment = _wrap_mjtNum_2d(p.actuator_moment, model.nu, model.nv)             # <<<<<<<<<<<<<<
 *         self._crb = _wrap_mjtNum_2d(p.crb, model.nbody, 10)
 *         self._qM = _wrap_mjtNum_1d(p.qM, model.nM)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nu); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2607, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2607, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->actuator_moment, __pyx_t_3, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_actuator_moment);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_moment));
  __pyx_v_self->_actuator_moment = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2608
 *         self._actuator_length = _wrap_mjtNum_1d(p.actuator_length, model.nu)
 *         self._actuator_moment = _wrap_mjtNum_2d(p.actuator_moment, model.nu, model.nv)
 *         self._crb = _wrap_mjtNum_2d(p.crb, model.nbody, 10)             # <<<<<<<<<<<<<<
 *         self._qM = _wrap_mjtNum_1d(p.qM, model.nM)
 *         self._qLD = _wrap_mjtNum_1d(p.qLD, model.nM)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2608, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->crb, __pyx_t_2, 10)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_crb);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_crb));
  __pyx_v_self->_crb = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2609
 *         self._actuator_moment = _wrap_mjtNum_2d(p.actuator_moment, model.nu, model.nv)
 *         self._crb = _wrap_mjtNum_2d(p.crb, model.nbody, 10)
 *         self._qM = _wrap_mjtNum_1d(p.qM, model.nM)             # <<<<<<<<<<<<<<
 *         self._qLD = _wrap_mjtNum_1d(p.qLD, model.nM)
 *         self._qLDiagInv = _wrap_mjtNum_1d(p.qLDiagInv, model.nv)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nM); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2609, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qM, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qM);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qM));
  __pyx_v_self->_qM = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2610
 *         self._crb = _wrap_mjtNum_2d(p.crb, model.nbody, 10)
 *         self._qM = _wrap_mjtNum_1d(p.qM, model.nM)
 *         self._qLD = _wrap_mjtNum_1d(p.qLD, model.nM)             # <<<<<<<<<<<<<<
 *         self._qLDiagInv = _wrap_mjtNum_1d(p.qLDiagInv, model.nv)
 *         self._qLDiagSqrtInv = _wrap_mjtNum_1d(p.qLDiagSqrtInv, model.nv)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nM); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2610, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qLD, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qLD);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qLD));
  __pyx_v_self->_qLD = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2611
 *         self._qM = _wrap_mjtNum_1d(p.qM, model.nM)
 *         self._qLD = _wrap_mjtNum_1d(p.qLD, model.nM)
 *         self._qLDiagInv = _wrap_mjtNum_1d(p.qLDiagInv, model.nv)             # <<<<<<<<<<<<<<
 *         self._qLDiagSqrtInv = _wrap_mjtNum_1d(p.qLDiagSqrtInv, model.nv)
 *         self._contact = tuple([WrapMjContact(&p.contact[i]) for i in range(model.nconmax)])
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2611, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qLDiagInv, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qLDiagInv);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qLDiagInv));
  __pyx_v_self->_qLDiagInv = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2612
 *         self._qLD = _wrap_mjtNum_1d(p.qLD, model.nM)
 *         self._qLDiagInv = _wrap_mjtNum_1d(p.qLDiagInv, model.nv)
 *         self._qLDiagSqrtInv = _wrap_mjtNum_1d(p.qLDiagSqrtInv, model.nv)             # <<<<<<<<<<<<<<
 *         self._contact = tuple([WrapMjContact(&p.contact[i]) for i in range(model.nconmax)])
 *         self._efc_type = _wrap_int_1d(p.efc_type, model.njmax)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2612, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qLDiagSqrtInv, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_qLDiagSqrtInv);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qLDiagSqrtInv));
  __pyx_v_self->_qLDiagSqrtInv = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2613
 *         self._qLDiagInv = _wrap_mjtNum_1d(p.qLDiagInv, model.nv)
 *         self._qLDiagSqrtInv = _wrap_mjtNum_1d(p.qLDiagSqrtInv, model.nv)
 *         self._contact = tuple([WrapMjContact(&p.contact[i]) for i in range(model.nconmax)])             # <<<<<<<<<<<<<<
 *         self._efc_type = _wrap_int_1d(p.efc_type, model.njmax)
 *         self._efc_id = _wrap_int_1d(p.efc_id, model.njmax)
 */
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2613, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nconmax); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2613, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2613, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2613, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
    } else {
      __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2613, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2613, __pyx_L5_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_7)) {
        if (likely(PyList_CheckExact(__pyx_t_5))) {
          if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2613, __pyx_L5_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2613, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2613, __pyx_L5_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2613, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_7(__pyx_t_5);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 2613, __pyx_L5_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_i, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_8genexpr2__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 2613, __pyx_L5_error)
      __pyx_t_4 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjContact((&(__pyx_v_p->contact[__pyx_t_8])))); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2613, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 2613, __pyx_L5_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_i); __pyx_8genexpr2__pyx_v_i = 0;
    goto __pyx_L8_exit_scope;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_i); __pyx_8genexpr2__pyx_v_i = 0;
    goto __pyx_L1_error;
    __pyx_L8_exit_scope:;
  } /* exit inner scope */
  __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_contact);
  __Pyx_DECREF(__pyx_v_self->_contact);
  __pyx_v_self->_contact = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2614
 *         self._qLDiagSqrtInv = _wrap_mjtNum_1d(p.qLDiagSqrtInv, model.nv)
 *         self._contact = tuple([WrapMjContact(&p.contact[i]) for i in range(model.nconmax)])
 *         self._efc_type = _wrap_int_1d(p.efc_type, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_id = _wrap_int_1d(p.efc_id, model.njmax)
 *         self._efc_J_rownnz = _wrap_int_1d(p.efc_J_rownnz, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2614, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->efc_type, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_type);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_type));
  __pyx_v_self->_efc_type = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2615
 *         self._contact = tuple([WrapMjContact(&p.contact[i]) for i in range(model.nconmax)])
 *         self._efc_type = _wrap_int_1d(p.efc_type, model.njmax)
 *         self._efc_id = _wrap_int_1d(p.efc_id, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_J_rownnz = _wrap_int_1d(p.efc_J_rownnz, model.njmax)
 *         self._efc_J_rowadr = _wrap_int_1d(p.efc_J_rowadr, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->efc_id, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_id);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_id));
  __pyx_v_self->_efc_id = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2616
 *         self._efc_type = _wrap_int_1d(p.efc_type, model.njmax)
 *         self._efc_id = _wrap_int_1d(p.efc_id, model.njmax)
 *         self._efc_J_rownnz = _wrap_int_1d(p.efc_J_rownnz, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_J_rowadr = _wrap_int_1d(p.efc_J_rowadr, model.njmax)
 *         self._efc_J_colind = _wrap_int_2d(p.efc_J_colind, model.njmax, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2616, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2616, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->efc_J_rownnz, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2616, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_J_rownnz);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_J_rownnz));
  __pyx_v_self->_efc_J_rownnz = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2617
 *         self._efc_id = _wrap_int_1d(p.efc_id, model.njmax)
 *         self._efc_J_rownnz = _wrap_int_1d(p.efc_J_rownnz, model.njmax)
 *         self._efc_J_rowadr = _wrap_int_1d(p.efc_J_rowadr, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_J_colind = _wrap_int_2d(p.efc_J_colind, model.njmax, model.nv)
 *         self._efc_JT_rownnz = _wrap_int_1d(p.efc_JT_rownnz, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2617, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->efc_J_rowadr, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_J_rowadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_J_rowadr));
  __pyx_v_self->_efc_J_rowadr = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2618
 *         self._efc_J_rownnz = _wrap_int_1d(p.efc_J_rownnz, model.njmax)
 *         self._efc_J_rowadr = _wrap_int_1d(p.efc_J_rowadr, model.njmax)
 *         self._efc_J_colind = _wrap_int_2d(p.efc_J_colind, model.njmax, model.nv)             # <<<<<<<<<<<<<<
 *         self._efc_JT_rownnz = _wrap_int_1d(p.efc_JT_rownnz, model.nv)
 *         self._efc_JT_rowadr = _wrap_int_1d(p.efc_JT_rowadr, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2618, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2618, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_2d(__pyx_v_p->efc_J_colind, __pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_J_colind);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_J_colind));
  __pyx_v_self->_efc_J_colind = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2619
 *         self._efc_J_rowadr = _wrap_int_1d(p.efc_J_rowadr, model.njmax)
 *         self._efc_J_colind = _wrap_int_2d(p.efc_J_colind, model.njmax, model.nv)
 *         self._efc_JT_rownnz = _wrap_int_1d(p.efc_JT_rownnz, model.nv)             # <<<<<<<<<<<<<<
 *         self._efc_JT_rowadr = _wrap_int_1d(p.efc_JT_rowadr, model.nv)
 *         self._efc_JT_colind = _wrap_int_2d(p.efc_JT_colind, model.nv, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2619, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->efc_JT_rownnz, __pyx_t_3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_JT_rownnz);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_JT_rownnz));
  __pyx_v_self->_efc_JT_rownnz = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2620
 *         self._efc_J_colind = _wrap_int_2d(p.efc_J_colind, model.njmax, model.nv)
 *         self._efc_JT_rownnz = _wrap_int_1d(p.efc_JT_rownnz, model.nv)
 *         self._efc_JT_rowadr = _wrap_int_1d(p.efc_JT_rowadr, model.nv)             # <<<<<<<<<<<<<<
 *         self._efc_JT_colind = _wrap_int_2d(p.efc_JT_colind, model.nv, model.njmax)
 *         self._efc_solref = _wrap_mjtNum_2d(p.efc_solref, model.njmax, mjNREF)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2620, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->efc_JT_rowadr, __pyx_t_3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_JT_rowadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_JT_rowadr));
  __pyx_v_self->_efc_JT_rowadr = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2621
 *         self._efc_JT_rownnz = _wrap_int_1d(p.efc_JT_rownnz, model.nv)
 *         self._efc_JT_rowadr = _wrap_int_1d(p.efc_JT_rowadr, model.nv)
 *         self._efc_JT_colind = _wrap_int_2d(p.efc_JT_colind, model.nv, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_solref = _wrap_mjtNum_2d(p.efc_solref, model.njmax, mjNREF)
 *         self._efc_solimp = _wrap_mjtNum_2d(p.efc_solimp, model.njmax, mjNIMP)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2621, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2621, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_2d(__pyx_v_p->efc_JT_colind, __pyx_t_3, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_JT_colind);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_JT_colind));
  __pyx_v_self->_efc_JT_colind = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2622
 *         self._efc_JT_rowadr = _wrap_int_1d(p.efc_JT_rowadr, model.nv)
 *         self._efc_JT_colind = _wrap_int_2d(p.efc_JT_colind, model.nv, model.njmax)
 *         self._efc_solref = _wrap_mjtNum_2d(p.efc_solref, model.njmax, mjNREF)             # <<<<<<<<<<<<<<
 *         self._efc_solimp = _wrap_mjtNum_2d(p.efc_solimp, model.njmax, mjNIMP)
 *         self._efc_margin = _wrap_mjtNum_1d(p.efc_margin, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2622, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->efc_solref, __pyx_t_2, mjNREF)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_solref);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_solref));
  __pyx_v_self->_efc_solref = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2623
 *         self._efc_JT_colind = _wrap_int_2d(p.efc_JT_colind, model.nv, model.njmax)
 *         self._efc_solref = _wrap_mjtNum_2d(p.efc_solref, model.njmax, mjNREF)
 *         self._efc_solimp = _wrap_mjtNum_2d(p.efc_solimp, model.njmax, mjNIMP)             # <<<<<<<<<<<<<<
 *         self._efc_margin = _wrap_mjtNum_1d(p.efc_margin, model.njmax)
 *         self._efc_frictionloss = _wrap_mjtNum_1d(p.efc_frictionloss, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2623, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->efc_solimp, __pyx_t_2, mjNIMP)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_solimp);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_solimp));
  __pyx_v_self->_efc_solimp = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2624
 *         self._efc_solref = _wrap_mjtNum_2d(p.efc_solref, model.njmax, mjNREF)
 *         self._efc_solimp = _wrap_mjtNum_2d(p.efc_solimp, model.njmax, mjNIMP)
 *         self._efc_margin = _wrap_mjtNum_1d(p.efc_margin, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_frictionloss = _wrap_mjtNum_1d(p.efc_frictionloss, model.njmax)
 *         self._efc_pos = _wrap_mjtNum_1d(p.efc_pos, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_margin, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_margin);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_margin));
  __pyx_v_self->_efc_margin = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2625
 *         self._efc_solimp = _wrap_mjtNum_2d(p.efc_solimp, model.njmax, mjNIMP)
 *         self._efc_margin = _wrap_mjtNum_1d(p.efc_margin, model.njmax)
 *         self._efc_frictionloss = _wrap_mjtNum_1d(p.efc_frictionloss, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_pos = _wrap_mjtNum_1d(p.efc_pos, model.njmax)
 *         self._efc_J = _wrap_mjtNum_2d(p.efc_J, model.njmax, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2625, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_frictionloss, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_frictionloss);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_frictionloss));
  __pyx_v_self->_efc_frictionloss = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2626
 *         self._efc_margin = _wrap_mjtNum_1d(p.efc_margin, model.njmax)
 *         self._efc_frictionloss = _wrap_mjtNum_1d(p.efc_frictionloss, model.njmax)
 *         self._efc_pos = _wrap_mjtNum_1d(p.efc_pos, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_J = _wrap_mjtNum_2d(p.efc_J, model.njmax, model.nv)
 *         self._efc_JT = _wrap_mjtNum_2d(p.efc_JT, model.nv, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2626, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_pos, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_pos));
  __pyx_v_self->_efc_pos = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2627
 *         self._efc_frictionloss = _wrap_mjtNum_1d(p.efc_frictionloss, model.njmax)
 *         self._efc_pos = _wrap_mjtNum_1d(p.efc_pos, model.njmax)
 *         self._efc_J = _wrap_mjtNum_2d(p.efc_J, model.njmax, model.nv)             # <<<<<<<<<<<<<<
 *         self._efc_JT = _wrap_mjtNum_2d(p.efc_JT, model.nv, model.njmax)
 *         self._efc_diagApprox = _wrap_mjtNum_1d(p.efc_diagApprox, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2627, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2627, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->efc_J, __pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_J);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_J));
  __pyx_v_self->_efc_J = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2628
 *         self._efc_pos = _wrap_mjtNum_1d(p.efc_pos, model.njmax)
 *         self._efc_J = _wrap_mjtNum_2d(p.efc_J, model.njmax, model.nv)
 *         self._efc_JT = _wrap_mjtNum_2d(p.efc_JT, model.nv, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_diagApprox = _wrap_mjtNum_1d(p.efc_diagApprox, model.njmax)
 *         self._efc_D = _wrap_mjtNum_1d(p.efc_D, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2628, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2628, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->efc_JT, __pyx_t_3, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_JT);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_JT));
  __pyx_v_self->_efc_JT = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2629
 *         self._efc_J = _wrap_mjtNum_2d(p.efc_J, model.njmax, model.nv)
 *         self._efc_JT = _wrap_mjtNum_2d(p.efc_JT, model.nv, model.njmax)
 *         self._efc_diagApprox = _wrap_mjtNum_1d(p.efc_diagApprox, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_D = _wrap_mjtNum_1d(p.efc_D, model.njmax)
 *         self._efc_R = _wrap_mjtNum_1d(p.efc_R, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2629, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_diagApprox, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_diagApprox);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_diagApprox));
  __pyx_v_self->_efc_diagApprox = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2630
 *         self._efc_JT = _wrap_mjtNum_2d(p.efc_JT, model.nv, model.njmax)
 *         self._efc_diagApprox = _wrap_mjtNum_1d(p.efc_diagApprox, model.njmax)
 *         self._efc_D = _wrap_mjtNum_1d(p.efc_D, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_R = _wrap_mjtNum_1d(p.efc_R, model.njmax)
 *         self._efc_AR_rownnz = _wrap_int_1d(p.efc_AR_rownnz, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_D, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_D);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_D));
  __pyx_v_self->_efc_D = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2631
 *         self._efc_diagApprox = _wrap_mjtNum_1d(p.efc_diagApprox, model.njmax)
 *         self._efc_D = _wrap_mjtNum_1d(p.efc_D, model.njmax)
 *         self._efc_R = _wrap_mjtNum_1d(p.efc_R, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_AR_rownnz = _wrap_int_1d(p.efc_AR_rownnz, model.njmax)
 *         self._efc_AR_rowadr = _wrap_int_1d(p.efc_AR_rowadr, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2631, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_R, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_R);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_R));
  __pyx_v_self->_efc_R = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2632
 *         self._efc_D = _wrap_mjtNum_1d(p.efc_D, model.njmax)
 *         self._efc_R = _wrap_mjtNum_1d(p.efc_R, model.njmax)
 *         self._efc_AR_rownnz = _wrap_int_1d(p.efc_AR_rownnz, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_AR_rowadr = _wrap_int_1d(p.efc_AR_rowadr, model.njmax)
 *         self._efc_AR_colind = _wrap_int_2d(p.efc_AR_colind, model.njmax, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->efc_AR_rownnz, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_AR_rownnz);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_AR_rownnz));
  __pyx_v_self->_efc_AR_rownnz = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2633
 *         self._efc_R = _wrap_mjtNum_1d(p.efc_R, model.njmax)
 *         self._efc_AR_rownnz = _wrap_int_1d(p.efc_AR_rownnz, model.njmax)
 *         self._efc_AR_rowadr = _wrap_int_1d(p.efc_AR_rowadr, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_AR_colind = _wrap_int_2d(p.efc_AR_colind, model.njmax, model.njmax)
 *         self._efc_AR = _wrap_mjtNum_2d(p.efc_AR, model.njmax, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2633, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->efc_AR_rowadr, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_AR_rowadr);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_AR_rowadr));
  __pyx_v_self->_efc_AR_rowadr = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2634
 *         self._efc_AR_rownnz = _wrap_int_1d(p.efc_AR_rownnz, model.njmax)
 *         self._efc_AR_rowadr = _wrap_int_1d(p.efc_AR_rowadr, model.njmax)
 *         self._efc_AR_colind = _wrap_int_2d(p.efc_AR_colind, model.njmax, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_AR = _wrap_mjtNum_2d(p.efc_AR, model.njmax, model.njmax)
 *         self._ten_velocity = _wrap_mjtNum_1d(p.ten_velocity, model.ntendon)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2634, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2634, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_2d(__pyx_v_p->efc_AR_colind, __pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_AR_colind);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_AR_colind));
  __pyx_v_self->_efc_AR_colind = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2635
 *         self._efc_AR_rowadr = _wrap_int_1d(p.efc_AR_rowadr, model.njmax)
 *         self._efc_AR_colind = _wrap_int_2d(p.efc_AR_colind, model.njmax, model.njmax)
 *         self._efc_AR = _wrap_mjtNum_2d(p.efc_AR, model.njmax, model.njmax)             # <<<<<<<<<<<<<<
 *         self._ten_velocity = _wrap_mjtNum_1d(p.ten_velocity, model.ntendon)
 *         self._actuator_velocity = _wrap_mjtNum_1d(p.actuator_velocity, model.nu)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2635, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2635, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->efc_AR, __pyx_t_3, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_AR);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_AR));
  __pyx_v_self->_efc_AR = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2636
 *         self._efc_AR_colind = _wrap_int_2d(p.efc_AR_colind, model.njmax, model.njmax)
 *         self._efc_AR = _wrap_mjtNum_2d(p.efc_AR, model.njmax, model.njmax)
 *         self._ten_velocity = _wrap_mjtNum_1d(p.ten_velocity, model.ntendon)             # <<<<<<<<<<<<<<
 *         self._actuator_velocity = _wrap_mjtNum_1d(p.actuator_velocity, model.nu)
 *         self._cvel = _wrap_mjtNum_2d(p.cvel, model.nbody, 6)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_ntendon); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->ten_velocity, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_ten_velocity);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_ten_velocity));
  __pyx_v_self->_ten_velocity = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2637
 *         self._efc_AR = _wrap_mjtNum_2d(p.efc_AR, model.njmax, model.njmax)
 *         self._ten_velocity = _wrap_mjtNum_1d(p.ten_velocity, model.ntendon)
 *         self._actuator_velocity = _wrap_mjtNum_1d(p.actuator_velocity, model.nu)             # <<<<<<<<<<<<<<
 *         self._cvel = _wrap_mjtNum_2d(p.cvel, model.nbody, 6)
 *         self._cdof_dot = _wrap_mjtNum_2d(p.cdof_dot, model.nv, 6)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nu); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2637, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->actuator_velocity, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_actuator_velocity);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_velocity));
  __pyx_v_self->_actuator_velocity = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2638
 *         self._ten_velocity = _wrap_mjtNum_1d(p.ten_velocity, model.ntendon)
 *         self._actuator_velocity = _wrap_mjtNum_1d(p.actuator_velocity, model.nu)
 *         self._cvel = _wrap_mjtNum_2d(p.cvel, model.nbody, 6)             # <<<<<<<<<<<<<<
 *         self._cdof_dot = _wrap_mjtNum_2d(p.cdof_dot, model.nv, 6)
 *         self._qfrc_bias = _wrap_mjtNum_1d(p.qfrc_bias, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2638, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cvel, __pyx_t_2, 6)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_cvel);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cvel));
  __pyx_v_self->_cvel = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2639
 *         self._actuator_velocity = _wrap_mjtNum_1d(p.actuator_velocity, model.nu)
 *         self._cvel = _wrap_mjtNum_2d(p.cvel, model.nbody, 6)
 *         self._cdof_dot = _wrap_mjtNum_2d(p.cdof_dot, model.nv, 6)             # <<<<<<<<<<<<<<
 *         self._qfrc_bias = _wrap_mjtNum_1d(p.qfrc_bias, model.nv)
 *         self._qfrc_passive = _wrap_mjtNum_1d(p.qfrc_passive, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2639, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cdof_dot, __pyx_t_2, 6)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_cdof_dot);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cdof_dot));
  __pyx_v_self->_cdof_dot = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2640
 *         self._cvel = _wrap_mjtNum_2d(p.cvel, model.nbody, 6)
 *         self._cdof_dot = _wrap_mjtNum_2d(p.cdof_dot, model.nv, 6)
 *         self._qfrc_bias = _wrap_mjtNum_1d(p.qfrc_bias, model.nv)             # <<<<<<<<<<<<<<
 *         self._qfrc_passive = _wrap_mjtNum_1d(p.qfrc_passive, model.nv)
 *         self._efc_vel = _wrap_mjtNum_1d(p.efc_vel, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2640, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qfrc_bias, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_qfrc_bias);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qfrc_bias));
  __pyx_v_self->_qfrc_bias = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2641
 *         self._cdof_dot = _wrap_mjtNum_2d(p.cdof_dot, model.nv, 6)
 *         self._qfrc_bias = _wrap_mjtNum_1d(p.qfrc_bias, model.nv)
 *         self._qfrc_passive = _wrap_mjtNum_1d(p.qfrc_passive, model.nv)             # <<<<<<<<<<<<<<
 *         self._efc_vel = _wrap_mjtNum_1d(p.efc_vel, model.njmax)
 *         self._efc_aref = _wrap_mjtNum_1d(p.efc_aref, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2641, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qfrc_passive, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_qfrc_passive);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qfrc_passive));
  __pyx_v_self->_qfrc_passive = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2642
 *         self._qfrc_bias = _wrap_mjtNum_1d(p.qfrc_bias, model.nv)
 *         self._qfrc_passive = _wrap_mjtNum_1d(p.qfrc_passive, model.nv)
 *         self._efc_vel = _wrap_mjtNum_1d(p.efc_vel, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_aref = _wrap_mjtNum_1d(p.efc_aref, model.njmax)
 *         self._subtree_linvel = _wrap_mjtNum_2d(p.subtree_linvel, model.nbody, 3)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2642, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_vel, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_vel);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_vel));
  __pyx_v_self->_efc_vel = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2643
 *         self._qfrc_passive = _wrap_mjtNum_1d(p.qfrc_passive, model.nv)
 *         self._efc_vel = _wrap_mjtNum_1d(p.efc_vel, model.njmax)
 *         self._efc_aref = _wrap_mjtNum_1d(p.efc_aref, model.njmax)             # <<<<<<<<<<<<<<
 *         self._subtree_linvel = _wrap_mjtNum_2d(p.subtree_linvel, model.nbody, 3)
 *         self._subtree_angmom = _wrap_mjtNum_2d(p.subtree_angmom, model.nbody, 3)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2643, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_aref, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_aref);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_aref));
  __pyx_v_self->_efc_aref = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2644
 *         self._efc_vel = _wrap_mjtNum_1d(p.efc_vel, model.njmax)
 *         self._efc_aref = _wrap_mjtNum_1d(p.efc_aref, model.njmax)
 *         self._subtree_linvel = _wrap_mjtNum_2d(p.subtree_linvel, model.nbody, 3)             # <<<<<<<<<<<<<<
 *         self._subtree_angmom = _wrap_mjtNum_2d(p.subtree_angmom, model.nbody, 3)
 *         self._actuator_force = _wrap_mjtNum_1d(p.actuator_force, model.nu)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2644, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->subtree_linvel, __pyx_t_2, 3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_subtree_linvel);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_subtree_linvel));
  __pyx_v_self->_subtree_linvel = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2645
 *         self._efc_aref = _wrap_mjtNum_1d(p.efc_aref, model.njmax)
 *         self._subtree_linvel = _wrap_mjtNum_2d(p.subtree_linvel, model.nbody, 3)
 *         self._subtree_angmom = _wrap_mjtNum_2d(p.subtree_angmom, model.nbody, 3)             # <<<<<<<<<<<<<<
 *         self._actuator_force = _wrap_mjtNum_1d(p.actuator_force, model.nu)
 *         self._qfrc_actuator = _wrap_mjtNum_1d(p.qfrc_actuator, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2645, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->subtree_angmom, __pyx_t_2, 3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_subtree_angmom);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_subtree_angmom));
  __pyx_v_self->_subtree_angmom = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2646
 *         self._subtree_linvel = _wrap_mjtNum_2d(p.subtree_linvel, model.nbody, 3)
 *         self._subtree_angmom = _wrap_mjtNum_2d(p.subtree_angmom, model.nbody, 3)
 *         self._actuator_force = _wrap_mjtNum_1d(p.actuator_force, model.nu)             # <<<<<<<<<<<<<<
 *         self._qfrc_actuator = _wrap_mjtNum_1d(p.qfrc_actuator, model.nv)
 *         self._qfrc_unc = _wrap_mjtNum_1d(p.qfrc_unc, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nu); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2646, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->actuator_force, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_actuator_force);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_actuator_force));
  __pyx_v_self->_actuator_force = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2647
 *         self._subtree_angmom = _wrap_mjtNum_2d(p.subtree_angmom, model.nbody, 3)
 *         self._actuator_force = _wrap_mjtNum_1d(p.actuator_force, model.nu)
 *         self._qfrc_actuator = _wrap_mjtNum_1d(p.qfrc_actuator, model.nv)             # <<<<<<<<<<<<<<
 *         self._qfrc_unc = _wrap_mjtNum_1d(p.qfrc_unc, model.nv)
 *         self._qacc_unc = _wrap_mjtNum_1d(p.qacc_unc, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2647, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qfrc_actuator, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_qfrc_actuator);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qfrc_actuator));
  __pyx_v_self->_qfrc_actuator = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2648
 *         self._actuator_force = _wrap_mjtNum_1d(p.actuator_force, model.nu)
 *         self._qfrc_actuator = _wrap_mjtNum_1d(p.qfrc_actuator, model.nv)
 *         self._qfrc_unc = _wrap_mjtNum_1d(p.qfrc_unc, model.nv)             # <<<<<<<<<<<<<<
 *         self._qacc_unc = _wrap_mjtNum_1d(p.qacc_unc, model.nv)
 *         self._efc_b = _wrap_mjtNum_1d(p.efc_b, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2648, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qfrc_unc, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_qfrc_unc);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qfrc_unc));
  __pyx_v_self->_qfrc_unc = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2649
 *         self._qfrc_actuator = _wrap_mjtNum_1d(p.qfrc_actuator, model.nv)
 *         self._qfrc_unc = _wrap_mjtNum_1d(p.qfrc_unc, model.nv)
 *         self._qacc_unc = _wrap_mjtNum_1d(p.qacc_unc, model.nv)             # <<<<<<<<<<<<<<
 *         self._efc_b = _wrap_mjtNum_1d(p.efc_b, model.njmax)
 *         self._efc_force = _wrap_mjtNum_1d(p.efc_force, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2649, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qacc_unc, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_qacc_unc);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qacc_unc));
  __pyx_v_self->_qacc_unc = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2650
 *         self._qfrc_unc = _wrap_mjtNum_1d(p.qfrc_unc, model.nv)
 *         self._qacc_unc = _wrap_mjtNum_1d(p.qacc_unc, model.nv)
 *         self._efc_b = _wrap_mjtNum_1d(p.efc_b, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_force = _wrap_mjtNum_1d(p.efc_force, model.njmax)
 *         self._efc_state = _wrap_int_1d(p.efc_state, model.njmax)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_b, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_b);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_b));
  __pyx_v_self->_efc_b = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2651
 *         self._qacc_unc = _wrap_mjtNum_1d(p.qacc_unc, model.nv)
 *         self._efc_b = _wrap_mjtNum_1d(p.efc_b, model.njmax)
 *         self._efc_force = _wrap_mjtNum_1d(p.efc_force, model.njmax)             # <<<<<<<<<<<<<<
 *         self._efc_state = _wrap_int_1d(p.efc_state, model.njmax)
 *         self._qfrc_constraint = _wrap_mjtNum_1d(p.qfrc_constraint, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2651, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->efc_force, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_force);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_force));
  __pyx_v_self->_efc_force = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2652
 *         self._efc_b = _wrap_mjtNum_1d(p.efc_b, model.njmax)
 *         self._efc_force = _wrap_mjtNum_1d(p.efc_force, model.njmax)
 *         self._efc_state = _wrap_int_1d(p.efc_state, model.njmax)             # <<<<<<<<<<<<<<
 *         self._qfrc_constraint = _wrap_mjtNum_1d(p.qfrc_constraint, model.nv)
 *         self._qacc_warmstart = _wrap_mjtNum_1d(p.qacc_warmstart, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_njmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2652, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d(__pyx_v_p->efc_state, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_efc_state);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_efc_state));
  __pyx_v_self->_efc_state = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2653
 *         self._efc_force = _wrap_mjtNum_1d(p.efc_force, model.njmax)
 *         self._efc_state = _wrap_int_1d(p.efc_state, model.njmax)
 *         self._qfrc_constraint = _wrap_mjtNum_1d(p.qfrc_constraint, model.nv)             # <<<<<<<<<<<<<<
 *         self._qacc_warmstart = _wrap_mjtNum_1d(p.qacc_warmstart, model.nv)
 *         self._qfrc_inverse = _wrap_mjtNum_1d(p.qfrc_inverse, model.nv)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2653, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qfrc_constraint, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_qfrc_constraint);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qfrc_constraint));
  __pyx_v_self->_qfrc_constraint = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2654
 *         self._efc_state = _wrap_int_1d(p.efc_state, model.njmax)
 *         self._qfrc_constraint = _wrap_mjtNum_1d(p.qfrc_constraint, model.nv)
 *         self._qacc_warmstart = _wrap_mjtNum_1d(p.qacc_warmstart, model.nv)             # <<<<<<<<<<<<<<
 *         self._qfrc_inverse = _wrap_mjtNum_1d(p.qfrc_inverse, model.nv)
 *         self._cacc = _wrap_mjtNum_2d(p.cacc, model.nbody, 6)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2654, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qacc_warmstart, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_qacc_warmstart);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qacc_warmstart));
  __pyx_v_self->_qacc_warmstart = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2655
 *         self._qfrc_constraint = _wrap_mjtNum_1d(p.qfrc_constraint, model.nv)
 *         self._qacc_warmstart = _wrap_mjtNum_1d(p.qacc_warmstart, model.nv)
 *         self._qfrc_inverse = _wrap_mjtNum_1d(p.qfrc_inverse, model.nv)             # <<<<<<<<<<<<<<
 *         self._cacc = _wrap_mjtNum_2d(p.cacc, model.nbody, 6)
 *         self._cfrc_int = _wrap_mjtNum_2d(p.cfrc_int, model.nbody, 6)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2655, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(__pyx_v_p->qfrc_inverse, __pyx_t_2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_qfrc_inverse);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_qfrc_inverse));
  __pyx_v_self->_qfrc_inverse = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2656
 *         self._qacc_warmstart = _wrap_mjtNum_1d(p.qacc_warmstart, model.nv)
 *         self._qfrc_inverse = _wrap_mjtNum_1d(p.qfrc_inverse, model.nv)
 *         self._cacc = _wrap_mjtNum_2d(p.cacc, model.nbody, 6)             # <<<<<<<<<<<<<<
 *         self._cfrc_int = _wrap_mjtNum_2d(p.cfrc_int, model.nbody, 6)
 *         self._cfrc_ext = _wrap_mjtNum_2d(p.cfrc_ext, model.nbody, 6)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2656, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cacc, __pyx_t_2, 6)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_cacc);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cacc));
  __pyx_v_self->_cacc = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2657
 *         self._qfrc_inverse = _wrap_mjtNum_1d(p.qfrc_inverse, model.nv)
 *         self._cacc = _wrap_mjtNum_2d(p.cacc, model.nbody, 6)
 *         self._cfrc_int = _wrap_mjtNum_2d(p.cfrc_int, model.nbody, 6)             # <<<<<<<<<<<<<<
 *         self._cfrc_ext = _wrap_mjtNum_2d(p.cfrc_ext, model.nbody, 6)
 *         self._warning = [WrapMjWarningStat(&p.warning[i]) for i in range(mjNWARNING)]
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2657, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cfrc_int, __pyx_t_2, 6)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_cfrc_int);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cfrc_int));
  __pyx_v_self->_cfrc_int = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2658
 *         self._cacc = _wrap_mjtNum_2d(p.cacc, model.nbody, 6)
 *         self._cfrc_int = _wrap_mjtNum_2d(p.cfrc_int, model.nbody, 6)
 *         self._cfrc_ext = _wrap_mjtNum_2d(p.cfrc_ext, model.nbody, 6)             # <<<<<<<<<<<<<<
 *         self._warning = [WrapMjWarningStat(&p.warning[i]) for i in range(mjNWARNING)]
 *         self._timer = [WrapMjTimerStat(&p.timer[i]) for i in range(mjNTIMER)]
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2658, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(__pyx_v_p->cfrc_ext, __pyx_t_2, 6)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_cfrc_ext);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_cfrc_ext));
  __pyx_v_self->_cfrc_ext = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2659
 *         self._cfrc_int = _wrap_mjtNum_2d(p.cfrc_int, model.nbody, 6)
 *         self._cfrc_ext = _wrap_mjtNum_2d(p.cfrc_ext, model.nbody, 6)
 *         self._warning = [WrapMjWarningStat(&p.warning[i]) for i in range(mjNWARNING)]             # <<<<<<<<<<<<<<
 *         self._timer = [WrapMjTimerStat(&p.timer[i]) for i in range(mjNTIMER)]
 *         self._solver = [WrapMjSolverStat(&p.solver[i]) for i in range(1000)]
 */
  { /* enter inner scope */
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2659, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = mjNWARNING;
    for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
      __pyx_8genexpr3__pyx_v_i = (int)__pyx_t_10;
      __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjWarningStat((&(__pyx_v_p->warning[__pyx_8genexpr3__pyx_v_i])))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2659, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_1))) __PYX_ERR(3, 2659, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
  } /* exit inner scope */
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_warning);
  __Pyx_DECREF(__pyx_v_self->_warning);
  __pyx_v_self->_warning = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2660
 *         self._cfrc_ext = _wrap_mjtNum_2d(p.cfrc_ext, model.nbody, 6)
 *         self._warning = [WrapMjWarningStat(&p.warning[i]) for i in range(mjNWARNING)]
 *         self._timer = [WrapMjTimerStat(&p.timer[i]) for i in range(mjNTIMER)]             # <<<<<<<<<<<<<<
 *         self._solver = [WrapMjSolverStat(&p.solver[i]) for i in range(1000)]
 *         self._solver_fwdinv = _wrap_mjtNum_1d(&p.solver_fwdinv[0], 2)
 */
  { /* enter inner scope */
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = mjNTIMER;
    for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
      __pyx_8genexpr4__pyx_v_i = (int)__pyx_t_10;
      __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjTimerStat((&(__pyx_v_p->timer[__pyx_8genexpr4__pyx_v_i])))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2660, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_1))) __PYX_ERR(3, 2660, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
  } /* exit inner scope */
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_timer);
  __Pyx_DECREF(__pyx_v_self->_timer);
  __pyx_v_self->_timer = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2661
 *         self._warning = [WrapMjWarningStat(&p.warning[i]) for i in range(mjNWARNING)]
 *         self._timer = [WrapMjTimerStat(&p.timer[i]) for i in range(mjNTIMER)]
 *         self._solver = [WrapMjSolverStat(&p.solver[i]) for i in range(1000)]             # <<<<<<<<<<<<<<
 *         self._solver_fwdinv = _wrap_mjtNum_1d(&p.solver_fwdinv[0], 2)
 *         self._energy = _wrap_mjtNum_1d(&p.energy[0], 2)
 */
  { /* enter inner scope */
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2661, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    for (__pyx_t_10 = 0; __pyx_t_10 < 0x3E8; __pyx_t_10+=1) {
      __pyx_8genexpr5__pyx_v_i = __pyx_t_10;
      __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjSolverStat((&(__pyx_v_p->solver[__pyx_8genexpr5__pyx_v_i])))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2661, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_1))) __PYX_ERR(3, 2661, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
  } /* exit inner scope */
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_solver);
  __Pyx_DECREF(__pyx_v_self->_solver);
  __pyx_v_self->_solver = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2662
 *         self._timer = [WrapMjTimerStat(&p.timer[i]) for i in range(mjNTIMER)]
 *         self._solver = [WrapMjSolverStat(&p.solver[i]) for i in range(1000)]
 *         self._solver_fwdinv = _wrap_mjtNum_1d(&p.solver_fwdinv[0], 2)             # <<<<<<<<<<<<<<
 *         self._energy = _wrap_mjtNum_1d(&p.energy[0], 2)
 * 
 */
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->solver_fwdinv[0])), 2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_solver_fwdinv);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_solver_fwdinv));
  __pyx_v_self->_solver_fwdinv = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2663
 *         self._solver = [WrapMjSolverStat(&p.solver[i]) for i in range(1000)]
 *         self._solver_fwdinv = _wrap_mjtNum_1d(&p.solver_fwdinv[0], 2)
 *         self._energy = _wrap_mjtNum_1d(&p.energy[0], 2)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->energy[0])), 2)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_energy);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_energy));
  __pyx_v_self->_energy = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2565
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjData* p, PyMjModel model):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjData._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_i);
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":2666
 * 
 *     @property
 *     def nstack(self): return self.ptr.nstack             # <<<<<<<<<<<<<<
 *     @nstack.setter
 *     def nstack(self, int x): self.ptr.nstack = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6nstack_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6nstack_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6nstack___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6nstack___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nstack); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.nstack.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2668
 *     def nstack(self): return self.ptr.nstack
 *     @nstack.setter
 *     def nstack(self, int x): self.ptr.nstack = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nbuffer(self): return self.ptr.nbuffer
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_6nstack_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_6nstack_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2668, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.nstack.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6nstack_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_6nstack_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nstack = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2670
 *     def nstack(self, int x): self.ptr.nstack = x
 *     @property
 *     def nbuffer(self): return self.ptr.nbuffer             # <<<<<<<<<<<<<<
 *     @nbuffer.setter
 *     def nbuffer(self, int x): self.ptr.nbuffer = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7nbuffer_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7nbuffer_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_7nbuffer___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7nbuffer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nbuffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2670, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.nbuffer.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2672
 *     def nbuffer(self): return self.ptr.nbuffer
 *     @nbuffer.setter
 *     def nbuffer(self, int x): self.ptr.nbuffer = x             # <<<<<<<<<<<<<<
 *     @property
 *     def pstack(self): return self.ptr.pstack
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_7nbuffer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_7nbuffer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2672, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.nbuffer.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_7nbuffer_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_7nbuffer_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nbuffer = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2674
 *     def nbuffer(self, int x): self.ptr.nbuffer = x
 *     @property
 *     def pstack(self): return self.ptr.pstack             # <<<<<<<<<<<<<<
 *     @pstack.setter
 *     def pstack(self, int x): self.ptr.pstack = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6pstack_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6pstack_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6pstack___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6pstack___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->pstack); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2674, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.pstack.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2676
 *     def pstack(self): return self.ptr.pstack
 *     @pstack.setter
 *     def pstack(self, int x): self.ptr.pstack = x             # <<<<<<<<<<<<<<
 *     @property
 *     def maxuse_stack(self): return self.ptr.maxuse_stack
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_6pstack_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_6pstack_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2676, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.pstack.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6pstack_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_6pstack_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->pstack = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2678
 *     def pstack(self, int x): self.ptr.pstack = x
 *     @property
 *     def maxuse_stack(self): return self.ptr.maxuse_stack             # <<<<<<<<<<<<<<
 *     @maxuse_stack.setter
 *     def maxuse_stack(self, int x): self.ptr.maxuse_stack = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12maxuse_stack_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12maxuse_stack_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12maxuse_stack___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12maxuse_stack___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->maxuse_stack); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.maxuse_stack.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2680
 *     def maxuse_stack(self): return self.ptr.maxuse_stack
 *     @maxuse_stack.setter
 *     def maxuse_stack(self, int x): self.ptr.maxuse_stack = x             # <<<<<<<<<<<<<<
 *     @property
 *     def maxuse_con(self): return self.ptr.maxuse_con
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_12maxuse_stack_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_12maxuse_stack_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2680, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.maxuse_stack.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12maxuse_stack_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_12maxuse_stack_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->maxuse_stack = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2682
 *     def maxuse_stack(self, int x): self.ptr.maxuse_stack = x
 *     @property
 *     def maxuse_con(self): return self.ptr.maxuse_con             # <<<<<<<<<<<<<<
 *     @maxuse_con.setter
 *     def maxuse_con(self, int x): self.ptr.maxuse_con = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_con_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_con_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_con___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_con___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->maxuse_con); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.maxuse_con.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2684
 *     def maxuse_con(self): return self.ptr.maxuse_con
 *     @maxuse_con.setter
 *     def maxuse_con(self, int x): self.ptr.maxuse_con = x             # <<<<<<<<<<<<<<
 *     @property
 *     def maxuse_efc(self): return self.ptr.maxuse_efc
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_con_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_con_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2684, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.maxuse_con.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_con_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_con_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->maxuse_con = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2686
 *     def maxuse_con(self, int x): self.ptr.maxuse_con = x
 *     @property
 *     def maxuse_efc(self): return self.ptr.maxuse_efc             # <<<<<<<<<<<<<<
 *     @maxuse_efc.setter
 *     def maxuse_efc(self, int x): self.ptr.maxuse_efc = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_efc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_efc_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_efc___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_efc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->maxuse_efc); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.maxuse_efc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2688
 *     def maxuse_efc(self): return self.ptr.maxuse_efc
 *     @maxuse_efc.setter
 *     def maxuse_efc(self, int x): self.ptr.maxuse_efc = x             # <<<<<<<<<<<<<<
 *     @property
 *     def solver_iter(self): return self.ptr.solver_iter
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_efc_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_efc_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2688, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.maxuse_efc.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_efc_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_10maxuse_efc_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->maxuse_efc = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2690
 *     def maxuse_efc(self, int x): self.ptr.maxuse_efc = x
 *     @property
 *     def solver_iter(self): return self.ptr.solver_iter             # <<<<<<<<<<<<<<
 *     @solver_iter.setter
 *     def solver_iter(self, int x): self.ptr.solver_iter = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11solver_iter_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11solver_iter_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_11solver_iter___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_11solver_iter___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->solver_iter); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.solver_iter.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2692
 *     def solver_iter(self): return self.ptr.solver_iter
 *     @solver_iter.setter
 *     def solver_iter(self, int x): self.ptr.solver_iter = x             # <<<<<<<<<<<<<<
 *     @property
 *     def solver_nnz(self): return self.ptr.solver_nnz
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_11solver_iter_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_11solver_iter_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2692, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.solver_iter.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_11solver_iter_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_11solver_iter_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->solver_iter = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2694
 *     def solver_iter(self, int x): self.ptr.solver_iter = x
 *     @property
 *     def solver_nnz(self): return self.ptr.solver_nnz             # <<<<<<<<<<<<<<
 *     @solver_nnz.setter
 *     def solver_nnz(self, int x): self.ptr.solver_nnz = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10solver_nnz_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10solver_nnz_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10solver_nnz___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10solver_nnz___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->solver_nnz); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.solver_nnz.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2696
 *     def solver_nnz(self): return self.ptr.solver_nnz
 *     @solver_nnz.setter
 *     def solver_nnz(self, int x): self.ptr.solver_nnz = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ne(self): return self.ptr.ne
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_10solver_nnz_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_10solver_nnz_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2696, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.solver_nnz.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10solver_nnz_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_10solver_nnz_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->solver_nnz = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2698
 *     def solver_nnz(self, int x): self.ptr.solver_nnz = x
 *     @property
 *     def ne(self): return self.ptr.ne             # <<<<<<<<<<<<<<
 *     @ne.setter
 *     def ne(self, int x): self.ptr.ne = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_2ne_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_2ne_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_2ne___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_2ne___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ne); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.ne.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2700
 *     def ne(self): return self.ptr.ne
 *     @ne.setter
 *     def ne(self, int x): self.ptr.ne = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nf(self): return self.ptr.nf
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_2ne_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_2ne_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2700, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.ne.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_2ne_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_2ne_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ne = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2702
 *     def ne(self, int x): self.ptr.ne = x
 *     @property
 *     def nf(self): return self.ptr.nf             # <<<<<<<<<<<<<<
 *     @nf.setter
 *     def nf(self, int x): self.ptr.nf = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_2nf_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_2nf_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_2nf___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_2nf___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.nf.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2704
 *     def nf(self): return self.ptr.nf
 *     @nf.setter
 *     def nf(self, int x): self.ptr.nf = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nefc(self): return self.ptr.nefc
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_2nf_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_2nf_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2704, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.nf.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_2nf_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_2nf_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nf = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2706
 *     def nf(self, int x): self.ptr.nf = x
 *     @property
 *     def nefc(self): return self.ptr.nefc             # <<<<<<<<<<<<<<
 *     @nefc.setter
 *     def nefc(self, int x): self.ptr.nefc = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4nefc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4nefc_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4nefc___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4nefc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nefc); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.nefc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2708
 *     def nefc(self): return self.ptr.nefc
 *     @nefc.setter
 *     def nefc(self, int x): self.ptr.nefc = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ncon(self): return self.ptr.ncon
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_4nefc_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_4nefc_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2708, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.nefc.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4nefc_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_4nefc_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nefc = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2710
 *     def nefc(self, int x): self.ptr.nefc = x
 *     @property
 *     def ncon(self): return self.ptr.ncon             # <<<<<<<<<<<<<<
 *     @ncon.setter
 *     def ncon(self, int x): self.ptr.ncon = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4ncon_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4ncon_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4ncon___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4ncon___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ncon); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.ncon.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2712
 *     def ncon(self): return self.ptr.ncon
 *     @ncon.setter
 *     def ncon(self, int x): self.ptr.ncon = x             # <<<<<<<<<<<<<<
 *     @property
 *     def time(self): return self.ptr.time
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_4ncon_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_4ncon_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2712, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.ncon.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4ncon_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_4ncon_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ncon = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2714
 *     def ncon(self, int x): self.ptr.ncon = x
 *     @property
 *     def time(self): return self.ptr.time             # <<<<<<<<<<<<<<
 *     @time.setter
 *     def time(self, mjtNum x): self.ptr.time = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4time_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4time_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4time___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4time___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->time); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2716
 *     def time(self): return self.ptr.time
 *     @time.setter
 *     def time(self, mjtNum x): self.ptr.time = x             # <<<<<<<<<<<<<<
 *     @property
 *     def qpos(self): return self._qpos
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_4time_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_8PyMjData_4time_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 2716, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.time.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4time_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_8PyMjData_4time_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->time = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2718
 *     def time(self, mjtNum x): self.ptr.time = x
 *     @property
 *     def qpos(self): return self._qpos             # <<<<<<<<<<<<<<
 *     @property
 *     def qvel(self): return self._qvel
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4qpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4qpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4qpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4qpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_qpos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2720
 *     def qpos(self): return self._qpos
 *     @property
 *     def qvel(self): return self._qvel             # <<<<<<<<<<<<<<
 *     @property
 *     def act(self): return self._act
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4qvel_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4qvel_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4qvel___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4qvel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qvel));
  __pyx_r = ((PyObject *)__pyx_v_self->_qvel);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2722
 *     def qvel(self): return self._qvel
 *     @property
 *     def act(self): return self._act             # <<<<<<<<<<<<<<
 *     @property
 *     def ctrl(self): return self._ctrl
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_3act_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_3act_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_3act___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_3act___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_act));
  __pyx_r = ((PyObject *)__pyx_v_self->_act);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2724
 *     def act(self): return self._act
 *     @property
 *     def ctrl(self): return self._ctrl             # <<<<<<<<<<<<<<
 *     @property
 *     def qfrc_applied(self): return self._qfrc_applied
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4ctrl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4ctrl_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4ctrl___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4ctrl___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_ctrl));
  __pyx_r = ((PyObject *)__pyx_v_self->_ctrl);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2726
 *     def ctrl(self): return self._ctrl
 *     @property
 *     def qfrc_applied(self): return self._qfrc_applied             # <<<<<<<<<<<<<<
 *     @property
 *     def xfrc_applied(self): return self._xfrc_applied
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12qfrc_applied_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12qfrc_applied_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12qfrc_applied___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12qfrc_applied___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qfrc_applied));
  __pyx_r = ((PyObject *)__pyx_v_self->_qfrc_applied);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2728
 *     def qfrc_applied(self): return self._qfrc_applied
 *     @property
 *     def xfrc_applied(self): return self._xfrc_applied             # <<<<<<<<<<<<<<
 *     @property
 *     def qacc(self): return self._qacc
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12xfrc_applied_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12xfrc_applied_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12xfrc_applied___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12xfrc_applied___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_xfrc_applied));
  __pyx_r = ((PyObject *)__pyx_v_self->_xfrc_applied);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2730
 *     def xfrc_applied(self): return self._xfrc_applied
 *     @property
 *     def qacc(self): return self._qacc             # <<<<<<<<<<<<<<
 *     @property
 *     def act_dot(self): return self._act_dot
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4qacc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4qacc_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4qacc___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4qacc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qacc));
  __pyx_r = ((PyObject *)__pyx_v_self->_qacc);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2732
 *     def qacc(self): return self._qacc
 *     @property
 *     def act_dot(self): return self._act_dot             # <<<<<<<<<<<<<<
 *     @property
 *     def mocap_pos(self): return self._mocap_pos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7act_dot_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7act_dot_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_7act_dot___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7act_dot___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_act_dot));
  __pyx_r = ((PyObject *)__pyx_v_self->_act_dot);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2734
 *     def act_dot(self): return self._act_dot
 *     @property
 *     def mocap_pos(self): return self._mocap_pos             # <<<<<<<<<<<<<<
 *     @property
 *     def mocap_quat(self): return self._mocap_quat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9mocap_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9mocap_pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9mocap_pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9mocap_pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mocap_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_mocap_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2736
 *     def mocap_pos(self): return self._mocap_pos
 *     @property
 *     def mocap_quat(self): return self._mocap_quat             # <<<<<<<<<<<<<<
 *     @property
 *     def userdata(self): return self._userdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10mocap_quat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10mocap_quat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10mocap_quat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10mocap_quat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mocap_quat));
  __pyx_r = ((PyObject *)__pyx_v_self->_mocap_quat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2738
 *     def mocap_quat(self): return self._mocap_quat
 *     @property
 *     def userdata(self): return self._userdata             # <<<<<<<<<<<<<<
 *     @property
 *     def sensordata(self): return self._sensordata
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8userdata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8userdata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8userdata___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8userdata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_userdata));
  __pyx_r = ((PyObject *)__pyx_v_self->_userdata);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2740
 *     def userdata(self): return self._userdata
 *     @property
 *     def sensordata(self): return self._sensordata             # <<<<<<<<<<<<<<
 * 
 *     @property
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10sensordata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10sensordata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10sensordata___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10sensordata___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sensordata));
  __pyx_r = ((PyObject *)__pyx_v_self->_sensordata);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2743
 * 
 *     @property
 *     def xpos(self):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("body_xpos should be used instead of xpos")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4xpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4xpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4xpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4xpos___get__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2744
 *     @property
 *     def xpos(self):
 *         raise RuntimeError("body_xpos should be used instead of xpos")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2744, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2743
 * 
 *     @property
 *     def xpos(self):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("body_xpos should be used instead of xpos")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.xpos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2748
 * 
 *     @property
 *     def xquat(self):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("body_xquat should be used instead of xquat")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5xquat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5xquat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_5xquat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5xquat___get__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2749
 *     @property
 *     def xquat(self):
 *         raise RuntimeError("body_xquat should be used instead of xquat")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2749, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2748
 * 
 *     @property
 *     def xquat(self):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("body_xquat should be used instead of xquat")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.xquat.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2753
 * 
 *     @property
 *     def xmat(self):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("body_xmat should be used instead of xmat")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4xmat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4xmat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4xmat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4xmat___get__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2754
 *     @property
 *     def xmat(self):
 *         raise RuntimeError("body_xmat should be used instead of xmat")             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2754, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2753
 * 
 *     @property
 *     def xmat(self):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("body_xmat should be used instead of xmat")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.xmat.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2757
 * 
 *     @property
 *     def xipos(self): return self._xipos             # <<<<<<<<<<<<<<
 *     @property
 *     def ximat(self): return self._ximat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5xipos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5xipos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_5xipos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5xipos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_xipos));
  __pyx_r = ((PyObject *)__pyx_v_self->_xipos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2759
 *     def xipos(self): return self._xipos
 *     @property
 *     def ximat(self): return self._ximat             # <<<<<<<<<<<<<<
 *     @property
 *     def xanchor(self): return self._xanchor
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5ximat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5ximat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_5ximat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5ximat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_ximat));
  __pyx_r = ((PyObject *)__pyx_v_self->_ximat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2761
 *     def ximat(self): return self._ximat
 *     @property
 *     def xanchor(self): return self._xanchor             # <<<<<<<<<<<<<<
 *     @property
 *     def xaxis(self): return self._xaxis
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7xanchor_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7xanchor_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_7xanchor___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7xanchor___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_xanchor));
  __pyx_r = ((PyObject *)__pyx_v_self->_xanchor);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2763
 *     def xanchor(self): return self._xanchor
 *     @property
 *     def xaxis(self): return self._xaxis             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_xpos(self): return self._geom_xpos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5xaxis_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5xaxis_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_5xaxis___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5xaxis___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_xaxis));
  __pyx_r = ((PyObject *)__pyx_v_self->_xaxis);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2765
 *     def xaxis(self): return self._xaxis
 *     @property
 *     def geom_xpos(self): return self._geom_xpos             # <<<<<<<<<<<<<<
 *     @property
 *     def geom_xmat(self): return self._geom_xmat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_xpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_xpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_xpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_xpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_xpos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2767
 *     def geom_xpos(self): return self._geom_xpos
 *     @property
 *     def geom_xmat(self): return self._geom_xmat             # <<<<<<<<<<<<<<
 *     @property
 *     def site_xpos(self): return self._site_xpos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_xmat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_xmat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_xmat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_xmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geom_xmat));
  __pyx_r = ((PyObject *)__pyx_v_self->_geom_xmat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2769
 *     def geom_xmat(self): return self._geom_xmat
 *     @property
 *     def site_xpos(self): return self._site_xpos             # <<<<<<<<<<<<<<
 *     @property
 *     def site_xmat(self): return self._site_xmat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_xpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_xpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_xpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_xpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_xpos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2771
 *     def site_xpos(self): return self._site_xpos
 *     @property
 *     def site_xmat(self): return self._site_xmat             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_xpos(self): return self._cam_xpos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_xmat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_xmat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_xmat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_xmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_site_xmat));
  __pyx_r = ((PyObject *)__pyx_v_self->_site_xmat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2773
 *     def site_xmat(self): return self._site_xmat
 *     @property
 *     def cam_xpos(self): return self._cam_xpos             # <<<<<<<<<<<<<<
 *     @property
 *     def cam_xmat(self): return self._cam_xmat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cam_xpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cam_xpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8cam_xpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cam_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_xpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_xpos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2775
 *     def cam_xpos(self): return self._cam_xpos
 *     @property
 *     def cam_xmat(self): return self._cam_xmat             # <<<<<<<<<<<<<<
 *     @property
 *     def light_xpos(self): return self._light_xpos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cam_xmat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cam_xmat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8cam_xmat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cam_xmat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cam_xmat));
  __pyx_r = ((PyObject *)__pyx_v_self->_cam_xmat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2777
 *     def cam_xmat(self): return self._cam_xmat
 *     @property
 *     def light_xpos(self): return self._light_xpos             # <<<<<<<<<<<<<<
 *     @property
 *     def light_xdir(self): return self._light_xdir
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10light_xpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10light_xpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10light_xpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10light_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_xpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_xpos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2779
 *     def light_xpos(self): return self._light_xpos
 *     @property
 *     def light_xdir(self): return self._light_xdir             # <<<<<<<<<<<<<<
 *     @property
 *     def subtree_com(self): return self._subtree_com
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10light_xdir_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10light_xdir_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10light_xdir___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10light_xdir___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_light_xdir));
  __pyx_r = ((PyObject *)__pyx_v_self->_light_xdir);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2781
 *     def light_xdir(self): return self._light_xdir
 *     @property
 *     def subtree_com(self): return self._subtree_com             # <<<<<<<<<<<<<<
 *     @property
 *     def cdof(self): return self._cdof
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11subtree_com_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11subtree_com_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_11subtree_com___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_11subtree_com___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_subtree_com));
  __pyx_r = ((PyObject *)__pyx_v_self->_subtree_com);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2783
 *     def subtree_com(self): return self._subtree_com
 *     @property
 *     def cdof(self): return self._cdof             # <<<<<<<<<<<<<<
 *     @property
 *     def cinert(self): return self._cinert
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4cdof_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4cdof_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4cdof___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4cdof___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cdof));
  __pyx_r = ((PyObject *)__pyx_v_self->_cdof);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2785
 *     def cdof(self): return self._cdof
 *     @property
 *     def cinert(self): return self._cinert             # <<<<<<<<<<<<<<
 *     @property
 *     def ten_wrapadr(self): return self._ten_wrapadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6cinert_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6cinert_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6cinert___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6cinert___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cinert));
  __pyx_r = ((PyObject *)__pyx_v_self->_cinert);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2787
 *     def cinert(self): return self._cinert
 *     @property
 *     def ten_wrapadr(self): return self._ten_wrapadr             # <<<<<<<<<<<<<<
 *     @property
 *     def ten_wrapnum(self): return self._ten_wrapnum
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11ten_wrapadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11ten_wrapadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_11ten_wrapadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_11ten_wrapadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_ten_wrapadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_ten_wrapadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2789
 *     def ten_wrapadr(self): return self._ten_wrapadr
 *     @property
 *     def ten_wrapnum(self): return self._ten_wrapnum             # <<<<<<<<<<<<<<
 *     @property
 *     def ten_length(self): return self._ten_length
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11ten_wrapnum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_11ten_wrapnum_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_11ten_wrapnum___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_11ten_wrapnum___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_ten_wrapnum));
  __pyx_r = ((PyObject *)__pyx_v_self->_ten_wrapnum);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2791
 *     def ten_wrapnum(self): return self._ten_wrapnum
 *     @property
 *     def ten_length(self): return self._ten_length             # <<<<<<<<<<<<<<
 *     @property
 *     def ten_moment(self): return self._ten_moment
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10ten_length_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10ten_length_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10ten_length___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10ten_length___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_ten_length));
  __pyx_r = ((PyObject *)__pyx_v_self->_ten_length);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2793
 *     def ten_length(self): return self._ten_length
 *     @property
 *     def ten_moment(self): return self._ten_moment             # <<<<<<<<<<<<<<
 *     @property
 *     def wrap_obj(self): return self._wrap_obj
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10ten_moment_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10ten_moment_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10ten_moment___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10ten_moment___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_ten_moment));
  __pyx_r = ((PyObject *)__pyx_v_self->_ten_moment);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2795
 *     def ten_moment(self): return self._ten_moment
 *     @property
 *     def wrap_obj(self): return self._wrap_obj             # <<<<<<<<<<<<<<
 *     @property
 *     def wrap_xpos(self): return self._wrap_xpos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8wrap_obj_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8wrap_obj_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8wrap_obj___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8wrap_obj___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_wrap_obj));
  __pyx_r = ((PyObject *)__pyx_v_self->_wrap_obj);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2797
 *     def wrap_obj(self): return self._wrap_obj
 *     @property
 *     def wrap_xpos(self): return self._wrap_xpos             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_length(self): return self._actuator_length
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9wrap_xpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9wrap_xpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9wrap_xpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9wrap_xpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_wrap_xpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_wrap_xpos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2799
 *     def wrap_xpos(self): return self._wrap_xpos
 *     @property
 *     def actuator_length(self): return self._actuator_length             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_moment(self): return self._actuator_moment
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_15actuator_length_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_15actuator_length_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_15actuator_length___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_15actuator_length___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_length));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_length);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2801
 *     def actuator_length(self): return self._actuator_length
 *     @property
 *     def actuator_moment(self): return self._actuator_moment             # <<<<<<<<<<<<<<
 *     @property
 *     def crb(self): return self._crb
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_15actuator_moment_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_15actuator_moment_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_15actuator_moment___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_15actuator_moment___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_moment));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_moment);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2803
 *     def actuator_moment(self): return self._actuator_moment
 *     @property
 *     def crb(self): return self._crb             # <<<<<<<<<<<<<<
 *     @property
 *     def qM(self): return self._qM
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_3crb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_3crb_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_3crb___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_3crb___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_crb));
  __pyx_r = ((PyObject *)__pyx_v_self->_crb);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2805
 *     def crb(self): return self._crb
 *     @property
 *     def qM(self): return self._qM             # <<<<<<<<<<<<<<
 *     @property
 *     def qLD(self): return self._qLD
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_2qM_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_2qM_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_2qM___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_2qM___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qM));
  __pyx_r = ((PyObject *)__pyx_v_self->_qM);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2807
 *     def qM(self): return self._qM
 *     @property
 *     def qLD(self): return self._qLD             # <<<<<<<<<<<<<<
 *     @property
 *     def qLDiagInv(self): return self._qLDiagInv
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_3qLD_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_3qLD_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_3qLD___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_3qLD___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qLD));
  __pyx_r = ((PyObject *)__pyx_v_self->_qLD);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2809
 *     def qLD(self): return self._qLD
 *     @property
 *     def qLDiagInv(self): return self._qLDiagInv             # <<<<<<<<<<<<<<
 *     @property
 *     def qLDiagSqrtInv(self): return self._qLDiagSqrtInv
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9qLDiagInv_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9qLDiagInv_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9qLDiagInv___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9qLDiagInv___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qLDiagInv));
  __pyx_r = ((PyObject *)__pyx_v_self->_qLDiagInv);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2811
 *     def qLDiagInv(self): return self._qLDiagInv
 *     @property
 *     def qLDiagSqrtInv(self): return self._qLDiagSqrtInv             # <<<<<<<<<<<<<<
 *     @property
 *     def contact(self): return self._contact
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13qLDiagSqrtInv_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13qLDiagSqrtInv_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_13qLDiagSqrtInv___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13qLDiagSqrtInv___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qLDiagSqrtInv));
  __pyx_r = ((PyObject *)__pyx_v_self->_qLDiagSqrtInv);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2813
 *     def qLDiagSqrtInv(self): return self._qLDiagSqrtInv
 *     @property
 *     def contact(self): return self._contact             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_type(self): return self._efc_type
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7contact_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7contact_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_7contact___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7contact___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_contact);
  __pyx_r = __pyx_v_self->_contact;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2815
 *     def contact(self): return self._contact
 *     @property
 *     def efc_type(self): return self._efc_type             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_id(self): return self._efc_id
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8efc_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8efc_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8efc_type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8efc_type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_type));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_type);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2817
 *     def efc_type(self): return self._efc_type
 *     @property
 *     def efc_id(self): return self._efc_id             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_J_rownnz(self): return self._efc_J_rownnz
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6efc_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6efc_id_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6efc_id___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6efc_id___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_id));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_id);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2819
 *     def efc_id(self): return self._efc_id
 *     @property
 *     def efc_J_rownnz(self): return self._efc_J_rownnz             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_J_rowadr(self): return self._efc_J_rowadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12efc_J_rownnz_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12efc_J_rownnz_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12efc_J_rownnz___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12efc_J_rownnz___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_J_rownnz));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_J_rownnz);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2821
 *     def efc_J_rownnz(self): return self._efc_J_rownnz
 *     @property
 *     def efc_J_rowadr(self): return self._efc_J_rowadr             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_J_colind(self): return self._efc_J_colind
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12efc_J_rowadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12efc_J_rowadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12efc_J_rowadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12efc_J_rowadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_J_rowadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_J_rowadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2823
 *     def efc_J_rowadr(self): return self._efc_J_rowadr
 *     @property
 *     def efc_J_colind(self): return self._efc_J_colind             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_JT_rownnz(self): return self._efc_JT_rownnz
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12efc_J_colind_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12efc_J_colind_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12efc_J_colind___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12efc_J_colind___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_J_colind));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_J_colind);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2825
 *     def efc_J_colind(self): return self._efc_J_colind
 *     @property
 *     def efc_JT_rownnz(self): return self._efc_JT_rownnz             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_JT_rowadr(self): return self._efc_JT_rowadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_JT_rownnz_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_JT_rownnz_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_JT_rownnz___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_JT_rownnz___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_JT_rownnz));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_JT_rownnz);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2827
 *     def efc_JT_rownnz(self): return self._efc_JT_rownnz
 *     @property
 *     def efc_JT_rowadr(self): return self._efc_JT_rowadr             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_JT_colind(self): return self._efc_JT_colind
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_JT_rowadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_JT_rowadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_JT_rowadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_JT_rowadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_JT_rowadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_JT_rowadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2829
 *     def efc_JT_rowadr(self): return self._efc_JT_rowadr
 *     @property
 *     def efc_JT_colind(self): return self._efc_JT_colind             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_solref(self): return self._efc_solref
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_JT_colind_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_JT_colind_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_JT_colind___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_JT_colind___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_JT_colind));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_JT_colind);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2831
 *     def efc_JT_colind(self): return self._efc_JT_colind
 *     @property
 *     def efc_solref(self): return self._efc_solref             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_solimp(self): return self._efc_solimp
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10efc_solref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10efc_solref_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10efc_solref___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10efc_solref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_solref));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_solref);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2833
 *     def efc_solref(self): return self._efc_solref
 *     @property
 *     def efc_solimp(self): return self._efc_solimp             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_margin(self): return self._efc_margin
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10efc_solimp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10efc_solimp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10efc_solimp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10efc_solimp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_solimp));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_solimp);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2835
 *     def efc_solimp(self): return self._efc_solimp
 *     @property
 *     def efc_margin(self): return self._efc_margin             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_frictionloss(self): return self._efc_frictionloss
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10efc_margin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10efc_margin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10efc_margin___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10efc_margin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_margin));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_margin);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2837
 *     def efc_margin(self): return self._efc_margin
 *     @property
 *     def efc_frictionloss(self): return self._efc_frictionloss             # <<<<<<<<<<<<<<
 * 
 *     @property
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_16efc_frictionloss_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_16efc_frictionloss_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_16efc_frictionloss___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_16efc_frictionloss___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_frictionloss));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_frictionloss);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2840
 * 
 *     @property
 *     def efc_pos(self):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("active_contacts_efc_pos should be used instead of efc_pos")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7efc_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7efc_pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_7efc_pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7efc_pos___get__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2841
 *     @property
 *     def efc_pos(self):
 *         raise RuntimeError("active_contacts_efc_pos should be used instead of efc_pos")             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(3, 2841, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":2840
 * 
 *     @property
 *     def efc_pos(self):             # <<<<<<<<<<<<<<
 *         raise RuntimeError("active_contacts_efc_pos should be used instead of efc_pos")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.efc_pos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2844
 * 
 *     @property
 *     def efc_J(self): return self._efc_J             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_JT(self): return self._efc_JT
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_J_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_J_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_J___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_J___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_J));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_J);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2846
 *     def efc_J(self): return self._efc_J
 *     @property
 *     def efc_JT(self): return self._efc_JT             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_diagApprox(self): return self._efc_diagApprox
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6efc_JT_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6efc_JT_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6efc_JT___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6efc_JT___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_JT));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_JT);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2848
 *     def efc_JT(self): return self._efc_JT
 *     @property
 *     def efc_diagApprox(self): return self._efc_diagApprox             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_D(self): return self._efc_D
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14efc_diagApprox_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14efc_diagApprox_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_14efc_diagApprox___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14efc_diagApprox___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_diagApprox));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_diagApprox);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2850
 *     def efc_diagApprox(self): return self._efc_diagApprox
 *     @property
 *     def efc_D(self): return self._efc_D             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_R(self): return self._efc_R
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_D_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_D_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_D___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_D___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_D));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_D);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2852
 *     def efc_D(self): return self._efc_D
 *     @property
 *     def efc_R(self): return self._efc_R             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_AR_rownnz(self): return self._efc_AR_rownnz
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_R_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_R_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_R___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_R___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_R));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_R);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2854
 *     def efc_R(self): return self._efc_R
 *     @property
 *     def efc_AR_rownnz(self): return self._efc_AR_rownnz             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_AR_rowadr(self): return self._efc_AR_rowadr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_AR_rownnz_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_AR_rownnz_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_AR_rownnz___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_AR_rownnz___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_AR_rownnz));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_AR_rownnz);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2856
 *     def efc_AR_rownnz(self): return self._efc_AR_rownnz
 *     @property
 *     def efc_AR_rowadr(self): return self._efc_AR_rowadr             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_AR_colind(self): return self._efc_AR_colind
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_AR_rowadr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_AR_rowadr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_AR_rowadr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_AR_rowadr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_AR_rowadr));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_AR_rowadr);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2858
 *     def efc_AR_rowadr(self): return self._efc_AR_rowadr
 *     @property
 *     def efc_AR_colind(self): return self._efc_AR_colind             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_AR(self): return self._efc_AR
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_AR_colind_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_AR_colind_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_AR_colind___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13efc_AR_colind___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_AR_colind));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_AR_colind);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2860
 *     def efc_AR_colind(self): return self._efc_AR_colind
 *     @property
 *     def efc_AR(self): return self._efc_AR             # <<<<<<<<<<<<<<
 *     @property
 *     def ten_velocity(self): return self._ten_velocity
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6efc_AR_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6efc_AR_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6efc_AR___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6efc_AR___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_AR));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_AR);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2862
 *     def efc_AR(self): return self._efc_AR
 *     @property
 *     def ten_velocity(self): return self._ten_velocity             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_velocity(self): return self._actuator_velocity
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12ten_velocity_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12ten_velocity_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12ten_velocity___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12ten_velocity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_ten_velocity));
  __pyx_r = ((PyObject *)__pyx_v_self->_ten_velocity);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2864
 *     def ten_velocity(self): return self._ten_velocity
 *     @property
 *     def actuator_velocity(self): return self._actuator_velocity             # <<<<<<<<<<<<<<
 *     @property
 *     def cvel(self): return self._cvel
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_17actuator_velocity_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_17actuator_velocity_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_17actuator_velocity___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_17actuator_velocity___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_velocity));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_velocity);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2866
 *     def actuator_velocity(self): return self._actuator_velocity
 *     @property
 *     def cvel(self): return self._cvel             # <<<<<<<<<<<<<<
 *     @property
 *     def cdof_dot(self): return self._cdof_dot
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4cvel_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4cvel_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4cvel___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4cvel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cvel));
  __pyx_r = ((PyObject *)__pyx_v_self->_cvel);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2868
 *     def cvel(self): return self._cvel
 *     @property
 *     def cdof_dot(self): return self._cdof_dot             # <<<<<<<<<<<<<<
 *     @property
 *     def qfrc_bias(self): return self._qfrc_bias
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cdof_dot_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cdof_dot_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8cdof_dot___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cdof_dot___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cdof_dot));
  __pyx_r = ((PyObject *)__pyx_v_self->_cdof_dot);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2870
 *     def cdof_dot(self): return self._cdof_dot
 *     @property
 *     def qfrc_bias(self): return self._qfrc_bias             # <<<<<<<<<<<<<<
 *     @property
 *     def qfrc_passive(self): return self._qfrc_passive
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9qfrc_bias_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9qfrc_bias_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9qfrc_bias___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9qfrc_bias___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qfrc_bias));
  __pyx_r = ((PyObject *)__pyx_v_self->_qfrc_bias);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2872
 *     def qfrc_bias(self): return self._qfrc_bias
 *     @property
 *     def qfrc_passive(self): return self._qfrc_passive             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_vel(self): return self._efc_vel
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12qfrc_passive_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12qfrc_passive_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12qfrc_passive___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12qfrc_passive___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qfrc_passive));
  __pyx_r = ((PyObject *)__pyx_v_self->_qfrc_passive);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2874
 *     def qfrc_passive(self): return self._qfrc_passive
 *     @property
 *     def efc_vel(self): return self._efc_vel             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_aref(self): return self._efc_aref
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7efc_vel_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7efc_vel_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_7efc_vel___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7efc_vel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_vel));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_vel);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2876
 *     def efc_vel(self): return self._efc_vel
 *     @property
 *     def efc_aref(self): return self._efc_aref             # <<<<<<<<<<<<<<
 *     @property
 *     def subtree_linvel(self): return self._subtree_linvel
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8efc_aref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8efc_aref_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8efc_aref___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8efc_aref___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_aref));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_aref);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2878
 *     def efc_aref(self): return self._efc_aref
 *     @property
 *     def subtree_linvel(self): return self._subtree_linvel             # <<<<<<<<<<<<<<
 *     @property
 *     def subtree_angmom(self): return self._subtree_angmom
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14subtree_linvel_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14subtree_linvel_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_14subtree_linvel___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14subtree_linvel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_subtree_linvel));
  __pyx_r = ((PyObject *)__pyx_v_self->_subtree_linvel);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2880
 *     def subtree_linvel(self): return self._subtree_linvel
 *     @property
 *     def subtree_angmom(self): return self._subtree_angmom             # <<<<<<<<<<<<<<
 *     @property
 *     def actuator_force(self): return self._actuator_force
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14subtree_angmom_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14subtree_angmom_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_14subtree_angmom___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14subtree_angmom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_subtree_angmom));
  __pyx_r = ((PyObject *)__pyx_v_self->_subtree_angmom);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2882
 *     def subtree_angmom(self): return self._subtree_angmom
 *     @property
 *     def actuator_force(self): return self._actuator_force             # <<<<<<<<<<<<<<
 *     @property
 *     def qfrc_actuator(self): return self._qfrc_actuator
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14actuator_force_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14actuator_force_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_14actuator_force___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14actuator_force___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_actuator_force));
  __pyx_r = ((PyObject *)__pyx_v_self->_actuator_force);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2884
 *     def actuator_force(self): return self._actuator_force
 *     @property
 *     def qfrc_actuator(self): return self._qfrc_actuator             # <<<<<<<<<<<<<<
 *     @property
 *     def qfrc_unc(self): return self._qfrc_unc
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13qfrc_actuator_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13qfrc_actuator_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_13qfrc_actuator___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13qfrc_actuator___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qfrc_actuator));
  __pyx_r = ((PyObject *)__pyx_v_self->_qfrc_actuator);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2886
 *     def qfrc_actuator(self): return self._qfrc_actuator
 *     @property
 *     def qfrc_unc(self): return self._qfrc_unc             # <<<<<<<<<<<<<<
 *     @property
 *     def qacc_unc(self): return self._qacc_unc
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8qfrc_unc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8qfrc_unc_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8qfrc_unc___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8qfrc_unc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qfrc_unc));
  __pyx_r = ((PyObject *)__pyx_v_self->_qfrc_unc);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2888
 *     def qfrc_unc(self): return self._qfrc_unc
 *     @property
 *     def qacc_unc(self): return self._qacc_unc             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_b(self): return self._efc_b
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8qacc_unc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8qacc_unc_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8qacc_unc___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8qacc_unc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qacc_unc));
  __pyx_r = ((PyObject *)__pyx_v_self->_qacc_unc);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2890
 *     def qacc_unc(self): return self._qacc_unc
 *     @property
 *     def efc_b(self): return self._efc_b             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_force(self): return self._efc_force
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_b_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_b_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_b___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5efc_b___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_b));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_b);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2892
 *     def efc_b(self): return self._efc_b
 *     @property
 *     def efc_force(self): return self._efc_force             # <<<<<<<<<<<<<<
 *     @property
 *     def efc_state(self): return self._efc_state
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9efc_force_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9efc_force_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9efc_force___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9efc_force___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_force));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_force);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2894
 *     def efc_force(self): return self._efc_force
 *     @property
 *     def efc_state(self): return self._efc_state             # <<<<<<<<<<<<<<
 *     @property
 *     def qfrc_constraint(self): return self._qfrc_constraint
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9efc_state_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9efc_state_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9efc_state___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9efc_state___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_efc_state));
  __pyx_r = ((PyObject *)__pyx_v_self->_efc_state);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2896
 *     def efc_state(self): return self._efc_state
 *     @property
 *     def qfrc_constraint(self): return self._qfrc_constraint             # <<<<<<<<<<<<<<
 *     @property
 *     def qacc_warmstart(self): return self._qacc_warmstart
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_15qfrc_constraint_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_15qfrc_constraint_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_15qfrc_constraint___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_15qfrc_constraint___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qfrc_constraint));
  __pyx_r = ((PyObject *)__pyx_v_self->_qfrc_constraint);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2898
 *     def qfrc_constraint(self): return self._qfrc_constraint
 *     @property
 *     def qacc_warmstart(self): return self._qacc_warmstart             # <<<<<<<<<<<<<<
 *     @property
 *     def qfrc_inverse(self): return self._qfrc_inverse
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14qacc_warmstart_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_14qacc_warmstart_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_14qacc_warmstart___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_14qacc_warmstart___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qacc_warmstart));
  __pyx_r = ((PyObject *)__pyx_v_self->_qacc_warmstart);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2900
 *     def qacc_warmstart(self): return self._qacc_warmstart
 *     @property
 *     def qfrc_inverse(self): return self._qfrc_inverse             # <<<<<<<<<<<<<<
 *     @property
 *     def cacc(self): return self._cacc
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12qfrc_inverse_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_12qfrc_inverse_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_12qfrc_inverse___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_12qfrc_inverse___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_qfrc_inverse));
  __pyx_r = ((PyObject *)__pyx_v_self->_qfrc_inverse);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2902
 *     def qfrc_inverse(self): return self._qfrc_inverse
 *     @property
 *     def cacc(self): return self._cacc             # <<<<<<<<<<<<<<
 *     @property
 *     def cfrc_int(self): return self._cfrc_int
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4cacc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_4cacc_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_4cacc___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_4cacc___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cacc));
  __pyx_r = ((PyObject *)__pyx_v_self->_cacc);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2904
 *     def cacc(self): return self._cacc
 *     @property
 *     def cfrc_int(self): return self._cfrc_int             # <<<<<<<<<<<<<<
 *     @property
 *     def cfrc_ext(self): return self._cfrc_ext
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cfrc_int_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cfrc_int_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8cfrc_int___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cfrc_int___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cfrc_int));
  __pyx_r = ((PyObject *)__pyx_v_self->_cfrc_int);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2906
 *     def cfrc_int(self): return self._cfrc_int
 *     @property
 *     def cfrc_ext(self): return self._cfrc_ext             # <<<<<<<<<<<<<<
 *     @property
 *     def warning(self): return self._warning
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cfrc_ext_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_8cfrc_ext_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_8cfrc_ext___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_8cfrc_ext___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_cfrc_ext));
  __pyx_r = ((PyObject *)__pyx_v_self->_cfrc_ext);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2908
 *     def cfrc_ext(self): return self._cfrc_ext
 *     @property
 *     def warning(self): return self._warning             # <<<<<<<<<<<<<<
 *     @property
 *     def timer(self): return self._timer
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7warning_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_7warning_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_7warning___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_7warning___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_warning);
  __pyx_r = __pyx_v_self->_warning;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2910
 *     def warning(self): return self._warning
 *     @property
 *     def timer(self): return self._timer             # <<<<<<<<<<<<<<
 *     @property
 *     def solver(self): return self._solver
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5timer_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_5timer_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_5timer___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_5timer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_timer);
  __pyx_r = __pyx_v_self->_timer;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2912
 *     def timer(self): return self._timer
 *     @property
 *     def solver(self): return self._solver             # <<<<<<<<<<<<<<
 *     @property
 *     def solver_fwdinv(self): return self._solver_fwdinv
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6solver_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6solver_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6solver___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6solver___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_solver);
  __pyx_r = __pyx_v_self->_solver;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2914
 *     def solver(self): return self._solver
 *     @property
 *     def solver_fwdinv(self): return self._solver_fwdinv             # <<<<<<<<<<<<<<
 *     @property
 *     def energy(self): return self._energy
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13solver_fwdinv_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_13solver_fwdinv_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_13solver_fwdinv___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_13solver_fwdinv___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_solver_fwdinv));
  __pyx_r = ((PyObject *)__pyx_v_self->_solver_fwdinv);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2916
 *     def solver_fwdinv(self): return self._solver_fwdinv
 *     @property
 *     def energy(self): return self._energy             # <<<<<<<<<<<<<<
 *     @property
 *     def body_jacp(self):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6energy_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_6energy_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_6energy___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_6energy___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_energy));
  __pyx_r = ((PyObject *)__pyx_v_self->_energy);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2918
 *     def energy(self): return self._energy
 *     @property
 *     def body_jacp(self):             # <<<<<<<<<<<<<<
 *         jacps = np.zeros((self._model.nbody, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_jacp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_jacp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_jacp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_jacp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacps = NULL;
  __Pyx_memviewslice __pyx_v_jacp_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_jacp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2919
 *     @property
 *     def body_jacp(self):
 *         jacps = np.zeros((self._model.nbody, 3 * self._model.nv))             # <<<<<<<<<<<<<<
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Multiply(__pyx_int_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2919, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2919, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2919, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2919, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2919, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacps = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2921
 *         jacps = np.zeros((self._model.nbody, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):             # <<<<<<<<<<<<<<
 *             jacp_view = jacp
 *             mj_jacBody(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_v_jacps)) || PyTuple_CheckExact(__pyx_v_jacps)) {
    __pyx_t_3 = __pyx_v_jacps; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_jacps); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2921, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2921, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2921, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2921, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2921, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2921, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_7(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 2921, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_jacp, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2921, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2922
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):
 *             jacp_view = jacp             # <<<<<<<<<<<<<<
 *             mj_jacBody(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 *         return jacps
 */
    __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_jacp);
    if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(3, 2922, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_jacp_view, 1);
    __pyx_v_jacp_view = __pyx_t_8;
    __pyx_t_8.memview = NULL;
    __pyx_t_8.data = NULL;

    /* "mujoco_py/generated/wrappers.pxi":2923
 *         for i, jacp in enumerate(jacps):
 *             jacp_view = jacp
 *             mj_jacBody(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)             # <<<<<<<<<<<<<<
 *         return jacps
 * 
 */
    __pyx_t_9 = 0;
    __pyx_t_10 = -1;
    if (__pyx_t_9 < 0) {
      __pyx_t_9 += __pyx_v_jacp_view.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
    } else if (unlikely(__pyx_t_9 >= __pyx_v_jacp_view.shape[0])) __pyx_t_10 = 0;
    if (unlikely(__pyx_t_10 != -1)) {
      __Pyx_RaiseBufferIndexError(__pyx_t_10);
      __PYX_ERR(3, 2923, __pyx_L1_error)
    }
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2923, __pyx_L1_error)
    mj_jacBody(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, (&(*((double *) ( /* dim=0 */ (__pyx_v_jacp_view.data + __pyx_t_9 * __pyx_v_jacp_view.strides[0]) )))), NULL, __pyx_t_10);

    /* "mujoco_py/generated/wrappers.pxi":2921
 *         jacps = np.zeros((self._model.nbody, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):             # <<<<<<<<<<<<<<
 *             jacp_view = jacp
 *             mj_jacBody(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2924
 *             jacp_view = jacp
 *             mj_jacBody(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 *         return jacps             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_jacps);
  __pyx_r = __pyx_v_jacps;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2918
 *     def energy(self): return self._energy
 *     @property
 *     def body_jacp(self):             # <<<<<<<<<<<<<<
 *         jacps = np.zeros((self._model.nbody, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.body_jacp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacps);
  __PYX_XDEC_MEMVIEW(&__pyx_v_jacp_view, 1);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_jacp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2927
 * 
 *     @property
 *     def body_jacr(self):             # <<<<<<<<<<<<<<
 *         jacrs = np.zeros((self._model.nbody, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_jacr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_jacr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_jacr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9body_jacr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacrs = NULL;
  __Pyx_memviewslice __pyx_v_jacr_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_jacr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2928
 *     @property
 *     def body_jacr(self):
 *         jacrs = np.zeros((self._model.nbody, 3 * self._model.nv))             # <<<<<<<<<<<<<<
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Multiply(__pyx_int_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2928, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2928, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2928, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2928, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2928, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacrs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2930
 *         jacrs = np.zeros((self._model.nbody, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):             # <<<<<<<<<<<<<<
 *             jacr_view = jacr
 *             mj_jacBody(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_v_jacrs)) || PyTuple_CheckExact(__pyx_v_jacrs)) {
    __pyx_t_3 = __pyx_v_jacrs; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_jacrs); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2930, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2930, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2930, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2930, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2930, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2930, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_7(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 2930, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_jacr, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2930, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2931
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):
 *             jacr_view = jacr             # <<<<<<<<<<<<<<
 *             mj_jacBody(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 *         return jacrs
 */
    __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_jacr);
    if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(3, 2931, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_jacr_view, 1);
    __pyx_v_jacr_view = __pyx_t_8;
    __pyx_t_8.memview = NULL;
    __pyx_t_8.data = NULL;

    /* "mujoco_py/generated/wrappers.pxi":2932
 *         for i, jacr in enumerate(jacrs):
 *             jacr_view = jacr
 *             mj_jacBody(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)             # <<<<<<<<<<<<<<
 *         return jacrs
 * 
 */
    __pyx_t_9 = 0;
    __pyx_t_10 = -1;
    if (__pyx_t_9 < 0) {
      __pyx_t_9 += __pyx_v_jacr_view.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
    } else if (unlikely(__pyx_t_9 >= __pyx_v_jacr_view.shape[0])) __pyx_t_10 = 0;
    if (unlikely(__pyx_t_10 != -1)) {
      __Pyx_RaiseBufferIndexError(__pyx_t_10);
      __PYX_ERR(3, 2932, __pyx_L1_error)
    }
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2932, __pyx_L1_error)
    mj_jacBody(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, NULL, (&(*((double *) ( /* dim=0 */ (__pyx_v_jacr_view.data + __pyx_t_9 * __pyx_v_jacr_view.strides[0]) )))), __pyx_t_10);

    /* "mujoco_py/generated/wrappers.pxi":2930
 *         jacrs = np.zeros((self._model.nbody, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):             # <<<<<<<<<<<<<<
 *             jacr_view = jacr
 *             mj_jacBody(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2933
 *             jacr_view = jacr
 *             mj_jacBody(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 *         return jacrs             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_jacrs);
  __pyx_r = __pyx_v_jacrs;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2927
 * 
 *     @property
 *     def body_jacr(self):             # <<<<<<<<<<<<<<
 *         jacrs = np.zeros((self._model.nbody, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.body_jacr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacrs);
  __PYX_XDEC_MEMVIEW(&__pyx_v_jacr_view, 1);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_jacr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2936
 * 
 *     @property
 *     def body_xvelp(self):             # <<<<<<<<<<<<<<
 *         jacp = self.body_jacp.reshape((self._model.nbody, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10body_xvelp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10body_xvelp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10body_xvelp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10body_xvelp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacp = NULL;
  PyObject *__pyx_v_xvelp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2937
 *     @property
 *     def body_xvelp(self):
 *         jacp = self.body_jacp.reshape((self._model.nbody, 3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_body_jacp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2937, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2937, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2937, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2937, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2937, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2938
 *     def body_xvelp(self):
 *         jacp = self.body_jacp.reshape((self._model.nbody, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelp
 * 
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2938, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2938, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2938, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_v_jacp);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2938, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_xvelp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2939
 *         jacp = self.body_jacp.reshape((self._model.nbody, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelp);
  __pyx_r = __pyx_v_xvelp;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2936
 * 
 *     @property
 *     def body_xvelp(self):             # <<<<<<<<<<<<<<
 *         jacp = self.body_jacp.reshape((self._model.nbody, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.body_xvelp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacp);
  __Pyx_XDECREF(__pyx_v_xvelp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2942
 * 
 *     @property
 *     def body_xvelr(self):             # <<<<<<<<<<<<<<
 *         jacr = self.body_jacr.reshape((self._model.nbody, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10body_xvelr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10body_xvelr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10body_xvelr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10body_xvelr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacr = NULL;
  PyObject *__pyx_v_xvelr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2943
 *     @property
 *     def body_xvelr(self):
 *         jacr = self.body_jacr.reshape((self._model.nbody, 3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_body_jacr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nbody); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2943, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2943, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2943, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2943, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2943, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2944
 *     def body_xvelr(self):
 *         jacr = self.body_jacr.reshape((self._model.nbody, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelr
 * 
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2944, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2944, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_v_jacr);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_xvelr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2945
 *         jacr = self.body_jacr.reshape((self._model.nbody, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelr);
  __pyx_r = __pyx_v_xvelr;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2942
 * 
 *     @property
 *     def body_xvelr(self):             # <<<<<<<<<<<<<<
 *         jacr = self.body_jacr.reshape((self._model.nbody, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.body_xvelr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacr);
  __Pyx_XDECREF(__pyx_v_xvelr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2948
 * 
 *     @property
 *     def geom_jacp(self):             # <<<<<<<<<<<<<<
 *         jacps = np.zeros((self._model.ngeom, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_jacp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_jacp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_jacp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_jacp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacps = NULL;
  __Pyx_memviewslice __pyx_v_jacp_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_jacp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2949
 *     @property
 *     def geom_jacp(self):
 *         jacps = np.zeros((self._model.ngeom, 3 * self._model.nv))             # <<<<<<<<<<<<<<
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_ngeom); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Multiply(__pyx_int_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2949, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2949, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2949, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2949, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2949, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacps = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2951
 *         jacps = np.zeros((self._model.ngeom, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):             # <<<<<<<<<<<<<<
 *             jacp_view = jacp
 *             mj_jacGeom(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_v_jacps)) || PyTuple_CheckExact(__pyx_v_jacps)) {
    __pyx_t_3 = __pyx_v_jacps; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_jacps); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2951, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2951, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2951, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2951, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2951, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_7(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 2951, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_jacp, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2952
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):
 *             jacp_view = jacp             # <<<<<<<<<<<<<<
 *             mj_jacGeom(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 *         return jacps
 */
    __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_jacp);
    if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(3, 2952, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_jacp_view, 1);
    __pyx_v_jacp_view = __pyx_t_8;
    __pyx_t_8.memview = NULL;
    __pyx_t_8.data = NULL;

    /* "mujoco_py/generated/wrappers.pxi":2953
 *         for i, jacp in enumerate(jacps):
 *             jacp_view = jacp
 *             mj_jacGeom(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)             # <<<<<<<<<<<<<<
 *         return jacps
 * 
 */
    __pyx_t_9 = 0;
    __pyx_t_10 = -1;
    if (__pyx_t_9 < 0) {
      __pyx_t_9 += __pyx_v_jacp_view.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
    } else if (unlikely(__pyx_t_9 >= __pyx_v_jacp_view.shape[0])) __pyx_t_10 = 0;
    if (unlikely(__pyx_t_10 != -1)) {
      __Pyx_RaiseBufferIndexError(__pyx_t_10);
      __PYX_ERR(3, 2953, __pyx_L1_error)
    }
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2953, __pyx_L1_error)
    mj_jacGeom(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, (&(*((double *) ( /* dim=0 */ (__pyx_v_jacp_view.data + __pyx_t_9 * __pyx_v_jacp_view.strides[0]) )))), NULL, __pyx_t_10);

    /* "mujoco_py/generated/wrappers.pxi":2951
 *         jacps = np.zeros((self._model.ngeom, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):             # <<<<<<<<<<<<<<
 *             jacp_view = jacp
 *             mj_jacGeom(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2954
 *             jacp_view = jacp
 *             mj_jacGeom(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 *         return jacps             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_jacps);
  __pyx_r = __pyx_v_jacps;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2948
 * 
 *     @property
 *     def geom_jacp(self):             # <<<<<<<<<<<<<<
 *         jacps = np.zeros((self._model.ngeom, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.geom_jacp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacps);
  __PYX_XDEC_MEMVIEW(&__pyx_v_jacp_view, 1);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_jacp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2957
 * 
 *     @property
 *     def geom_jacr(self):             # <<<<<<<<<<<<<<
 *         jacrs = np.zeros((self._model.ngeom, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_jacr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_jacr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_jacr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9geom_jacr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacrs = NULL;
  __Pyx_memviewslice __pyx_v_jacr_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_jacr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2958
 *     @property
 *     def geom_jacr(self):
 *         jacrs = np.zeros((self._model.ngeom, 3 * self._model.nv))             # <<<<<<<<<<<<<<
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_ngeom); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Multiply(__pyx_int_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2958, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2958, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2958, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2958, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2958, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacrs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2960
 *         jacrs = np.zeros((self._model.ngeom, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):             # <<<<<<<<<<<<<<
 *             jacr_view = jacr
 *             mj_jacGeom(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_v_jacrs)) || PyTuple_CheckExact(__pyx_v_jacrs)) {
    __pyx_t_3 = __pyx_v_jacrs; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_jacrs); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2960, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2960, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2960, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_7(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 2960, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_jacr, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2961
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):
 *             jacr_view = jacr             # <<<<<<<<<<<<<<
 *             mj_jacGeom(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 *         return jacrs
 */
    __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_jacr);
    if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(3, 2961, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_jacr_view, 1);
    __pyx_v_jacr_view = __pyx_t_8;
    __pyx_t_8.memview = NULL;
    __pyx_t_8.data = NULL;

    /* "mujoco_py/generated/wrappers.pxi":2962
 *         for i, jacr in enumerate(jacrs):
 *             jacr_view = jacr
 *             mj_jacGeom(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)             # <<<<<<<<<<<<<<
 *         return jacrs
 * 
 */
    __pyx_t_9 = 0;
    __pyx_t_10 = -1;
    if (__pyx_t_9 < 0) {
      __pyx_t_9 += __pyx_v_jacr_view.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
    } else if (unlikely(__pyx_t_9 >= __pyx_v_jacr_view.shape[0])) __pyx_t_10 = 0;
    if (unlikely(__pyx_t_10 != -1)) {
      __Pyx_RaiseBufferIndexError(__pyx_t_10);
      __PYX_ERR(3, 2962, __pyx_L1_error)
    }
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2962, __pyx_L1_error)
    mj_jacGeom(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, NULL, (&(*((double *) ( /* dim=0 */ (__pyx_v_jacr_view.data + __pyx_t_9 * __pyx_v_jacr_view.strides[0]) )))), __pyx_t_10);

    /* "mujoco_py/generated/wrappers.pxi":2960
 *         jacrs = np.zeros((self._model.ngeom, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):             # <<<<<<<<<<<<<<
 *             jacr_view = jacr
 *             mj_jacGeom(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2963
 *             jacr_view = jacr
 *             mj_jacGeom(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 *         return jacrs             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_jacrs);
  __pyx_r = __pyx_v_jacrs;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2957
 * 
 *     @property
 *     def geom_jacr(self):             # <<<<<<<<<<<<<<
 *         jacrs = np.zeros((self._model.ngeom, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.geom_jacr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacrs);
  __PYX_XDEC_MEMVIEW(&__pyx_v_jacr_view, 1);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_jacr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2966
 * 
 *     @property
 *     def geom_xvelp(self):             # <<<<<<<<<<<<<<
 *         jacp = self.geom_jacp.reshape((self._model.ngeom, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10geom_xvelp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10geom_xvelp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10geom_xvelp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10geom_xvelp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacp = NULL;
  PyObject *__pyx_v_xvelp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2967
 *     @property
 *     def geom_xvelp(self):
 *         jacp = self.geom_jacp.reshape((self._model.ngeom, 3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_geom_jacp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_ngeom); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2967, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2967, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2967, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2968
 *     def geom_xvelp(self):
 *         jacp = self.geom_jacp.reshape((self._model.ngeom, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelp
 * 
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2968, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2968, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2968, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_v_jacp);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2968, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_xvelp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2969
 *         jacp = self.geom_jacp.reshape((self._model.ngeom, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelp);
  __pyx_r = __pyx_v_xvelp;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2966
 * 
 *     @property
 *     def geom_xvelp(self):             # <<<<<<<<<<<<<<
 *         jacp = self.geom_jacp.reshape((self._model.ngeom, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.geom_xvelp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacp);
  __Pyx_XDECREF(__pyx_v_xvelp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2972
 * 
 *     @property
 *     def geom_xvelr(self):             # <<<<<<<<<<<<<<
 *         jacr = self.geom_jacr.reshape((self._model.ngeom, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10geom_xvelr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10geom_xvelr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10geom_xvelr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10geom_xvelr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacr = NULL;
  PyObject *__pyx_v_xvelr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2973
 *     @property
 *     def geom_xvelr(self):
 *         jacr = self.geom_jacr.reshape((self._model.ngeom, 3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_geom_jacr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_ngeom); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2973, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2973, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2973, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2973, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2973, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2974
 *     def geom_xvelr(self):
 *         jacr = self.geom_jacr.reshape((self._model.ngeom, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelr
 * 
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2974, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2974, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_v_jacr);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_xvelr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2975
 *         jacr = self.geom_jacr.reshape((self._model.ngeom, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelr);
  __pyx_r = __pyx_v_xvelr;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2972
 * 
 *     @property
 *     def geom_xvelr(self):             # <<<<<<<<<<<<<<
 *         jacr = self.geom_jacr.reshape((self._model.ngeom, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.geom_xvelr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacr);
  __Pyx_XDECREF(__pyx_v_xvelr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2978
 * 
 *     @property
 *     def site_jacp(self):             # <<<<<<<<<<<<<<
 *         jacps = np.zeros((self._model.nsite, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_jacp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_jacp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_jacp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_jacp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacps = NULL;
  __Pyx_memviewslice __pyx_v_jacp_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_jacp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2979
 *     @property
 *     def site_jacp(self):
 *         jacps = np.zeros((self._model.nsite, 3 * self._model.nv))             # <<<<<<<<<<<<<<
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nsite); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Multiply(__pyx_int_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2979, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2979, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2979, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2979, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2979, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacps = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2981
 *         jacps = np.zeros((self._model.nsite, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):             # <<<<<<<<<<<<<<
 *             jacp_view = jacp
 *             mj_jacSite(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_v_jacps)) || PyTuple_CheckExact(__pyx_v_jacps)) {
    __pyx_t_3 = __pyx_v_jacps; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_jacps); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2981, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2981, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2981, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2981, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2981, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2981, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_7(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 2981, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_jacp, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2981, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2982
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):
 *             jacp_view = jacp             # <<<<<<<<<<<<<<
 *             mj_jacSite(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 *         return jacps
 */
    __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_jacp);
    if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(3, 2982, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_jacp_view, 1);
    __pyx_v_jacp_view = __pyx_t_8;
    __pyx_t_8.memview = NULL;
    __pyx_t_8.data = NULL;

    /* "mujoco_py/generated/wrappers.pxi":2983
 *         for i, jacp in enumerate(jacps):
 *             jacp_view = jacp
 *             mj_jacSite(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)             # <<<<<<<<<<<<<<
 *         return jacps
 * 
 */
    __pyx_t_9 = 0;
    __pyx_t_10 = -1;
    if (__pyx_t_9 < 0) {
      __pyx_t_9 += __pyx_v_jacp_view.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
    } else if (unlikely(__pyx_t_9 >= __pyx_v_jacp_view.shape[0])) __pyx_t_10 = 0;
    if (unlikely(__pyx_t_10 != -1)) {
      __Pyx_RaiseBufferIndexError(__pyx_t_10);
      __PYX_ERR(3, 2983, __pyx_L1_error)
    }
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2983, __pyx_L1_error)
    mj_jacSite(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, (&(*((double *) ( /* dim=0 */ (__pyx_v_jacp_view.data + __pyx_t_9 * __pyx_v_jacp_view.strides[0]) )))), NULL, __pyx_t_10);

    /* "mujoco_py/generated/wrappers.pxi":2981
 *         jacps = np.zeros((self._model.nsite, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 *         for i, jacp in enumerate(jacps):             # <<<<<<<<<<<<<<
 *             jacp_view = jacp
 *             mj_jacSite(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2984
 *             jacp_view = jacp
 *             mj_jacSite(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
 *         return jacps             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_jacps);
  __pyx_r = __pyx_v_jacps;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2978
 * 
 *     @property
 *     def site_jacp(self):             # <<<<<<<<<<<<<<
 *         jacps = np.zeros((self._model.nsite, 3 * self._model.nv))
 *         cdef double [:] jacp_view
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.site_jacp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacps);
  __PYX_XDEC_MEMVIEW(&__pyx_v_jacp_view, 1);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_jacp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2987
 * 
 *     @property
 *     def site_jacr(self):             # <<<<<<<<<<<<<<
 *         jacrs = np.zeros((self._model.nsite, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_jacr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_jacr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_jacr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_9site_jacr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacrs = NULL;
  __Pyx_memviewslice __pyx_v_jacr_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_jacr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2988
 *     @property
 *     def site_jacr(self):
 *         jacrs = np.zeros((self._model.nsite, 3 * self._model.nv))             # <<<<<<<<<<<<<<
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nsite); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Multiply(__pyx_int_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2988, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2988, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2988, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2988, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2988, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacrs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2990
 *         jacrs = np.zeros((self._model.nsite, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):             # <<<<<<<<<<<<<<
 *             jacr_view = jacr
 *             mj_jacSite(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_v_jacrs)) || PyTuple_CheckExact(__pyx_v_jacrs)) {
    __pyx_t_3 = __pyx_v_jacrs; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_jacrs); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2990, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 2990, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2990, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2990, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(3, 2990, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2990, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_7(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 2990, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_jacr, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2990, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/generated/wrappers.pxi":2991
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):
 *             jacr_view = jacr             # <<<<<<<<<<<<<<
 *             mj_jacSite(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 *         return jacrs
 */
    __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_jacr);
    if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(3, 2991, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_jacr_view, 1);
    __pyx_v_jacr_view = __pyx_t_8;
    __pyx_t_8.memview = NULL;
    __pyx_t_8.data = NULL;

    /* "mujoco_py/generated/wrappers.pxi":2992
 *         for i, jacr in enumerate(jacrs):
 *             jacr_view = jacr
 *             mj_jacSite(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)             # <<<<<<<<<<<<<<
 *         return jacrs
 * 
 */
    __pyx_t_9 = 0;
    __pyx_t_10 = -1;
    if (__pyx_t_9 < 0) {
      __pyx_t_9 += __pyx_v_jacr_view.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
    } else if (unlikely(__pyx_t_9 >= __pyx_v_jacr_view.shape[0])) __pyx_t_10 = 0;
    if (unlikely(__pyx_t_10 != -1)) {
      __Pyx_RaiseBufferIndexError(__pyx_t_10);
      __PYX_ERR(3, 2992, __pyx_L1_error)
    }
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 2992, __pyx_L1_error)
    mj_jacSite(__pyx_v_self->_model->ptr, __pyx_v_self->ptr, NULL, (&(*((double *) ( /* dim=0 */ (__pyx_v_jacr_view.data + __pyx_t_9 * __pyx_v_jacr_view.strides[0]) )))), __pyx_t_10);

    /* "mujoco_py/generated/wrappers.pxi":2990
 *         jacrs = np.zeros((self._model.nsite, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 *         for i, jacr in enumerate(jacrs):             # <<<<<<<<<<<<<<
 *             jacr_view = jacr
 *             mj_jacSite(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2993
 *             jacr_view = jacr
 *             mj_jacSite(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
 *         return jacrs             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_jacrs);
  __pyx_r = __pyx_v_jacrs;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2987
 * 
 *     @property
 *     def site_jacr(self):             # <<<<<<<<<<<<<<
 *         jacrs = np.zeros((self._model.nsite, 3 * self._model.nv))
 *         cdef double [:] jacr_view
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.site_jacr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacrs);
  __PYX_XDEC_MEMVIEW(&__pyx_v_jacr_view, 1);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_jacr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":2996
 * 
 *     @property
 *     def site_xvelp(self):             # <<<<<<<<<<<<<<
 *         jacp = self.site_jacp.reshape((self._model.nsite, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10site_xvelp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10site_xvelp_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10site_xvelp___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10site_xvelp___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacp = NULL;
  PyObject *__pyx_v_xvelp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":2997
 *     @property
 *     def site_xvelp(self):
 *         jacp = self.site_jacp.reshape((self._model.nsite, 3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_site_jacp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nsite); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 2997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2997, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2997, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2997, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2997, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2997, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2998
 *     def site_xvelp(self):
 *         jacp = self.site_jacp.reshape((self._model.nsite, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelp
 * 
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 2998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2998, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacp, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2998, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 2998, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_v_jacp);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_jacp);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 2998, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_xvelp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":2999
 *         jacp = self.site_jacp.reshape((self._model.nsite, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 *         return xvelp             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelp);
  __pyx_r = __pyx_v_xvelp;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":2996
 * 
 *     @property
 *     def site_xvelp(self):             # <<<<<<<<<<<<<<
 *         jacp = self.site_jacp.reshape((self._model.nsite, 3, self._model.nv))
 *         xvelp = np.dot(jacp, self.qvel)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.site_xvelp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacp);
  __Pyx_XDECREF(__pyx_v_xvelp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3002
 * 
 *     @property
 *     def site_xvelr(self):             # <<<<<<<<<<<<<<
 *         jacr = self.site_jacr.reshape((self._model.nsite, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10site_xvelr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_10site_xvelr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_10site_xvelr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_10site_xvelr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_v_jacr = NULL;
  PyObject *__pyx_v_xvelr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3003
 *     @property
 *     def site_xvelr(self):
 *         jacr = self.site_jacr.reshape((self._model.nsite, 3, self._model.nv))             # <<<<<<<<<<<<<<
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_site_jacr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nsite); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_model), __pyx_n_s_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 3003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3003, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3003, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3003, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_jacr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3004
 *     def site_xvelr(self):
 *         jacr = self.site_jacr.reshape((self._model.nsite, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)             # <<<<<<<<<<<<<<
 *         return xvelr
 * 
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3004, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_jacr, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3004, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3004, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_v_jacr);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_jacr);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3004, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_xvelr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3005
 *         jacr = self.site_jacr.reshape((self._model.nsite, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 *         return xvelr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xvelr);
  __pyx_r = __pyx_v_xvelr;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3002
 * 
 *     @property
 *     def site_xvelr(self):             # <<<<<<<<<<<<<<
 *         jacr = self.site_jacr.reshape((self._model.nsite, 3, self._model.nv))
 *         xvelr = np.dot(jacr, self.qvel)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.site_xvelr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_jacr);
  __Pyx_XDECREF(__pyx_v_xvelr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_97__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_97__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_96__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_96__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_99__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_8PyMjData_99__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8PyMjData_98__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8PyMjData_98__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjData.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3008
 * 
 * 
 * cdef PyMjData WrapMjData(mjData* p, PyMjModel model):             # <<<<<<<<<<<<<<
 *     cdef PyMjData o = PyMjData()
 *     o._set(p, model)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_f_9mujoco_py_4cymj_WrapMjData(mjData *__pyx_v_p, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_model) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjData", 0);

  /* "mujoco_py/generated/wrappers.pxi":3009
 * 
 * cdef PyMjData WrapMjData(mjData* p, PyMjModel model):
 *     cdef PyMjData o = PyMjData()             # <<<<<<<<<<<<<<
 *     o._set(p, model)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjData), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3010
 * cdef PyMjData WrapMjData(mjData* p, PyMjModel model):
 *     cdef PyMjData o = PyMjData()
 *     o._set(p, model)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjData *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p, __pyx_v_model);

  /* "mujoco_py/generated/wrappers.pxi":3011
 *     cdef PyMjData o = PyMjData()
 *     o._set(p, model)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjvPerturb(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3008
 * 
 * 
 * cdef PyMjData WrapMjData(mjData* p, PyMjModel model):             # <<<<<<<<<<<<<<
 *     cdef PyMjData o = PyMjData()
 *     o._set(p, model)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjData", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3021
 *     cdef np.ndarray _localpos
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3022
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3021
 *     cdef np.ndarray _localpos
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3026
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjvPerturb* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvPerturb.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3028
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvPerturb* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_12PyMjvPerturb__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, mjvPerturb *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3030
 *     cdef void _set(self, mjvPerturb* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3033
 * 
 * 
 *         self._refpos = _wrap_mjtNum_1d(&p.refpos[0], 3)             # <<<<<<<<<<<<<<
 *         self._refquat = _wrap_mjtNum_1d(&p.refquat[0], 4)
 *         self._localpos = _wrap_mjtNum_1d(&p.localpos[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->refpos[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_refpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_refpos));
  __pyx_v_self->_refpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3034
 * 
 *         self._refpos = _wrap_mjtNum_1d(&p.refpos[0], 3)
 *         self._refquat = _wrap_mjtNum_1d(&p.refquat[0], 4)             # <<<<<<<<<<<<<<
 *         self._localpos = _wrap_mjtNum_1d(&p.localpos[0], 3)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->refquat[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_refquat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_refquat));
  __pyx_v_self->_refquat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3035
 *         self._refpos = _wrap_mjtNum_1d(&p.refpos[0], 3)
 *         self._refquat = _wrap_mjtNum_1d(&p.refquat[0], 4)
 *         self._localpos = _wrap_mjtNum_1d(&p.localpos[0], 3)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->localpos[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_localpos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_localpos));
  __pyx_v_self->_localpos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3028
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvPerturb* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjvPerturb._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3038
 * 
 *     @property
 *     def select(self): return self.ptr.select             # <<<<<<<<<<<<<<
 *     @select.setter
 *     def select(self, int x): self.ptr.select = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6select_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6select_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6select___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6select___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->select); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvPerturb.select.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3040
 *     def select(self): return self.ptr.select
 *     @select.setter
 *     def select(self, int x): self.ptr.select = x             # <<<<<<<<<<<<<<
 *     @property
 *     def active(self): return self.ptr.active
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6select_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6select_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3040, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvPerturb.select.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6select_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6select_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->select = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3042
 *     def select(self, int x): self.ptr.select = x
 *     @property
 *     def active(self): return self.ptr.active             # <<<<<<<<<<<<<<
 *     @active.setter
 *     def active(self, int x): self.ptr.active = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6active_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6active_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6active___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6active___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->active); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvPerturb.active.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3044
 *     def active(self): return self.ptr.active
 *     @active.setter
 *     def active(self, int x): self.ptr.active = x             # <<<<<<<<<<<<<<
 *     @property
 *     def scale(self): return self.ptr.scale
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6active_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6active_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3044, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvPerturb.active.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6active_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6active_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->active = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3046
 *     def active(self, int x): self.ptr.active = x
 *     @property
 *     def scale(self): return self.ptr.scale             # <<<<<<<<<<<<<<
 *     @scale.setter
 *     def scale(self, mjtNum x): self.ptr.scale = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_5scale_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_5scale_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_5scale___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_5scale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->scale); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvPerturb.scale.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3048
 *     def scale(self): return self.ptr.scale
 *     @scale.setter
 *     def scale(self, mjtNum x): self.ptr.scale = x             # <<<<<<<<<<<<<<
 *     @property
 *     def refpos(self): return self._refpos
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_5scale_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_5scale_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 3048, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvPerturb.scale.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_5scale_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_5scale_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->scale = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3050
 *     def scale(self, mjtNum x): self.ptr.scale = x
 *     @property
 *     def refpos(self): return self._refpos             # <<<<<<<<<<<<<<
 *     @property
 *     def refquat(self): return self._refquat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6refpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6refpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6refpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_6refpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_refpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_refpos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3052
 *     def refpos(self): return self._refpos
 *     @property
 *     def refquat(self): return self._refquat             # <<<<<<<<<<<<<<
 *     @property
 *     def localpos(self): return self._localpos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_7refquat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_7refquat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_7refquat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_7refquat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_refquat));
  __pyx_r = ((PyObject *)__pyx_v_self->_refquat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3054
 *     def refquat(self): return self._refquat
 *     @property
 *     def localpos(self): return self._localpos             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjvPerturb WrapMjvPerturb(mjvPerturb* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_8localpos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_8localpos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_8localpos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_8localpos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_localpos));
  __pyx_r = ((PyObject *)__pyx_v_self->_localpos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvPerturb.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjvPerturb_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvPerturb.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3056
 *     def localpos(self): return self._localpos
 * 
 * cdef PyMjvPerturb WrapMjvPerturb(mjvPerturb* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvPerturb o = PyMjvPerturb()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_f_9mujoco_py_4cymj_WrapMjvPerturb(mjvPerturb *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjvPerturb", 0);

  /* "mujoco_py/generated/wrappers.pxi":3057
 * 
 * cdef PyMjvPerturb WrapMjvPerturb(mjvPerturb* p):
 *     cdef PyMjvPerturb o = PyMjvPerturb()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3058
 * cdef PyMjvPerturb WrapMjvPerturb(mjvPerturb* p):
 *     cdef PyMjvPerturb o = PyMjvPerturb()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3059
 *     cdef PyMjvPerturb o = PyMjvPerturb()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjvCamera(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3056
 *     def localpos(self): return self._localpos
 * 
 * cdef PyMjvPerturb WrapMjvPerturb(mjvPerturb* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvPerturb o = PyMjvPerturb()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjvPerturb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3067
 *     cdef np.ndarray _lookat
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3068
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3067
 *     cdef np.ndarray _lookat
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3072
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjvCamera* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3074
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvCamera* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_11PyMjvCamera__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, mjvCamera *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3076
 *     cdef void _set(self, mjvCamera* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3079
 * 
 * 
 *         self._lookat = _wrap_mjtNum_1d(&p.lookat[0], 3)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d((&(__pyx_v_p->lookat[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_lookat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_lookat));
  __pyx_v_self->_lookat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3074
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvCamera* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjvCamera._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3082
 * 
 *     @property
 *     def type(self): return self.ptr.type             # <<<<<<<<<<<<<<
 *     @type.setter
 *     def type(self, int x): self.ptr.type = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_4type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_4type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_4type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_4type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->type); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3084
 *     def type(self): return self.ptr.type
 *     @type.setter
 *     def type(self, int x): self.ptr.type = x             # <<<<<<<<<<<<<<
 *     @property
 *     def fixedcamid(self): return self.ptr.fixedcamid
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3084, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_4type_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_4type_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->type = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3086
 *     def type(self, int x): self.ptr.type = x
 *     @property
 *     def fixedcamid(self): return self.ptr.fixedcamid             # <<<<<<<<<<<<<<
 *     @fixedcamid.setter
 *     def fixedcamid(self, int x): self.ptr.fixedcamid = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->fixedcamid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.fixedcamid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3088
 *     def fixedcamid(self): return self.ptr.fixedcamid
 *     @fixedcamid.setter
 *     def fixedcamid(self, int x): self.ptr.fixedcamid = x             # <<<<<<<<<<<<<<
 *     @property
 *     def trackbodyid(self): return self.ptr.trackbodyid
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3088, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.fixedcamid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->fixedcamid = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3090
 *     def fixedcamid(self, int x): self.ptr.fixedcamid = x
 *     @property
 *     def trackbodyid(self): return self.ptr.trackbodyid             # <<<<<<<<<<<<<<
 *     @trackbodyid.setter
 *     def trackbodyid(self, int x): self.ptr.trackbodyid = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->trackbodyid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.trackbodyid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3092
 *     def trackbodyid(self): return self.ptr.trackbodyid
 *     @trackbodyid.setter
 *     def trackbodyid(self, int x): self.ptr.trackbodyid = x             # <<<<<<<<<<<<<<
 *     @property
 *     def distance(self): return self.ptr.distance
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3092, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.trackbodyid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->trackbodyid = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3094
 *     def trackbodyid(self, int x): self.ptr.trackbodyid = x
 *     @property
 *     def distance(self): return self.ptr.distance             # <<<<<<<<<<<<<<
 *     @distance.setter
 *     def distance(self, mjtNum x): self.ptr.distance = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_8distance_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_8distance_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_8distance___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_8distance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->distance); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.distance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3096
 *     def distance(self): return self.ptr.distance
 *     @distance.setter
 *     def distance(self, mjtNum x): self.ptr.distance = x             # <<<<<<<<<<<<<<
 *     @property
 *     def azimuth(self): return self.ptr.azimuth
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_8distance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_8distance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 3096, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.distance.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_8distance_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_8distance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->distance = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3098
 *     def distance(self, mjtNum x): self.ptr.distance = x
 *     @property
 *     def azimuth(self): return self.ptr.azimuth             # <<<<<<<<<<<<<<
 *     @azimuth.setter
 *     def azimuth(self, mjtNum x): self.ptr.azimuth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_7azimuth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_7azimuth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_7azimuth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_7azimuth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->azimuth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3098, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.azimuth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3100
 *     def azimuth(self): return self.ptr.azimuth
 *     @azimuth.setter
 *     def azimuth(self, mjtNum x): self.ptr.azimuth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def elevation(self): return self.ptr.elevation
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_7azimuth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_7azimuth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 3100, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.azimuth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_7azimuth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_7azimuth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->azimuth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3102
 *     def azimuth(self, mjtNum x): self.ptr.azimuth = x
 *     @property
 *     def elevation(self): return self.ptr.elevation             # <<<<<<<<<<<<<<
 *     @elevation.setter
 *     def elevation(self, mjtNum x): self.ptr.elevation = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_9elevation_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_9elevation_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_9elevation___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_9elevation___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->elevation); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.elevation.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3104
 *     def elevation(self): return self.ptr.elevation
 *     @elevation.setter
 *     def elevation(self, mjtNum x): self.ptr.elevation = x             # <<<<<<<<<<<<<<
 *     @property
 *     def lookat(self): return self._lookat
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_9elevation_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_9elevation_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtNum __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsDouble(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtNum)-1)) && PyErr_Occurred())) __PYX_ERR(3, 3104, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.elevation.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_9elevation_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self), ((mjtNum)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_9elevation_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, mjtNum __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->elevation = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3106
 *     def elevation(self, mjtNum x): self.ptr.elevation = x
 *     @property
 *     def lookat(self): return self._lookat             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjvCamera WrapMjvCamera(mjvCamera* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_6lookat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_6lookat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_6lookat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_6lookat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_lookat));
  __pyx_r = ((PyObject *)__pyx_v_self->_lookat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvCamera_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvCamera.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3108
 *     def lookat(self): return self._lookat
 * 
 * cdef PyMjvCamera WrapMjvCamera(mjvCamera* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvCamera o = PyMjvCamera()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_f_9mujoco_py_4cymj_WrapMjvCamera(mjvCamera *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjvCamera", 0);

  /* "mujoco_py/generated/wrappers.pxi":3109
 * 
 * cdef PyMjvCamera WrapMjvCamera(mjvCamera* p):
 *     cdef PyMjvCamera o = PyMjvCamera()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjvCamera), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3110
 * cdef PyMjvCamera WrapMjvCamera(mjvCamera* p):
 *     cdef PyMjvCamera o = PyMjvCamera()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3111
 *     cdef PyMjvCamera o = PyMjvCamera()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjvGLCamera(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3108
 *     def lookat(self): return self._lookat
 * 
 * cdef PyMjvCamera WrapMjvCamera(mjvCamera* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvCamera o = PyMjvCamera()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjvCamera", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3121
 *     cdef np.ndarray _up
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3122
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3121
 *     cdef np.ndarray _up
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3126
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjvGLCamera* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3128
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvGLCamera* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_13PyMjvGLCamera__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, mjvGLCamera *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3130
 *     cdef void _set(self, mjvGLCamera* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3133
 * 
 * 
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)             # <<<<<<<<<<<<<<
 *         self._forward = _wrap_float_1d(&p.forward[0], 3)
 *         self._up = _wrap_float_1d(&p.up[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->pos[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pos));
  __pyx_v_self->_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3134
 * 
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)
 *         self._forward = _wrap_float_1d(&p.forward[0], 3)             # <<<<<<<<<<<<<<
 *         self._up = _wrap_float_1d(&p.up[0], 3)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->forward[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_forward);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_forward));
  __pyx_v_self->_forward = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3135
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)
 *         self._forward = _wrap_float_1d(&p.forward[0], 3)
 *         self._up = _wrap_float_1d(&p.up[0], 3)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->up[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_up);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_up));
  __pyx_v_self->_up = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3128
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvGLCamera* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjvGLCamera._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3138
 * 
 *     @property
 *     def frustum_center(self): return self.ptr.frustum_center             # <<<<<<<<<<<<<<
 *     @frustum_center.setter
 *     def frustum_center(self, float x): self.ptr.frustum_center = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->frustum_center); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_center.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3140
 *     def frustum_center(self): return self.ptr.frustum_center
 *     @frustum_center.setter
 *     def frustum_center(self, float x): self.ptr.frustum_center = x             # <<<<<<<<<<<<<<
 *     @property
 *     def frustum_bottom(self): return self.ptr.frustum_bottom
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3140, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_center.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->frustum_center = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3142
 *     def frustum_center(self, float x): self.ptr.frustum_center = x
 *     @property
 *     def frustum_bottom(self): return self.ptr.frustum_bottom             # <<<<<<<<<<<<<<
 *     @frustum_bottom.setter
 *     def frustum_bottom(self, float x): self.ptr.frustum_bottom = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->frustum_bottom); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_bottom.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3144
 *     def frustum_bottom(self): return self.ptr.frustum_bottom
 *     @frustum_bottom.setter
 *     def frustum_bottom(self, float x): self.ptr.frustum_bottom = x             # <<<<<<<<<<<<<<
 *     @property
 *     def frustum_top(self): return self.ptr.frustum_top
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3144, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_bottom.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->frustum_bottom = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3146
 *     def frustum_bottom(self, float x): self.ptr.frustum_bottom = x
 *     @property
 *     def frustum_top(self): return self.ptr.frustum_top             # <<<<<<<<<<<<<<
 *     @frustum_top.setter
 *     def frustum_top(self, float x): self.ptr.frustum_top = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->frustum_top); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_top.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3148
 *     def frustum_top(self): return self.ptr.frustum_top
 *     @frustum_top.setter
 *     def frustum_top(self, float x): self.ptr.frustum_top = x             # <<<<<<<<<<<<<<
 *     @property
 *     def frustum_near(self): return self.ptr.frustum_near
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3148, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_top.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->frustum_top = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3150
 *     def frustum_top(self, float x): self.ptr.frustum_top = x
 *     @property
 *     def frustum_near(self): return self.ptr.frustum_near             # <<<<<<<<<<<<<<
 *     @frustum_near.setter
 *     def frustum_near(self, float x): self.ptr.frustum_near = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->frustum_near); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_near.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3152
 *     def frustum_near(self): return self.ptr.frustum_near
 *     @frustum_near.setter
 *     def frustum_near(self, float x): self.ptr.frustum_near = x             # <<<<<<<<<<<<<<
 *     @property
 *     def frustum_far(self): return self.ptr.frustum_far
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3152, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_near.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->frustum_near = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3154
 *     def frustum_near(self, float x): self.ptr.frustum_near = x
 *     @property
 *     def frustum_far(self): return self.ptr.frustum_far             # <<<<<<<<<<<<<<
 *     @frustum_far.setter
 *     def frustum_far(self, float x): self.ptr.frustum_far = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->frustum_far); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_far.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3156
 *     def frustum_far(self): return self.ptr.frustum_far
 *     @frustum_far.setter
 *     def frustum_far(self, float x): self.ptr.frustum_far = x             # <<<<<<<<<<<<<<
 *     @property
 *     def pos(self): return self._pos
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3156, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.frustum_far.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->frustum_far = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3158
 *     def frustum_far(self, float x): self.ptr.frustum_far = x
 *     @property
 *     def pos(self): return self._pos             # <<<<<<<<<<<<<<
 *     @property
 *     def forward(self): return self._forward
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_3pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_3pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_3pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_3pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3160
 *     def pos(self): return self._pos
 *     @property
 *     def forward(self): return self._forward             # <<<<<<<<<<<<<<
 *     @property
 *     def up(self): return self._up
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_7forward_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_7forward_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_7forward___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_7forward___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_forward));
  __pyx_r = ((PyObject *)__pyx_v_self->_forward);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3162
 *     def forward(self): return self._forward
 *     @property
 *     def up(self): return self._up             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjvGLCamera WrapMjvGLCamera(mjvGLCamera* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_2up_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_2up_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_2up___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_2up___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_up));
  __pyx_r = ((PyObject *)__pyx_v_self->_up);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13PyMjvGLCamera_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGLCamera.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3164
 *     def up(self): return self._up
 * 
 * cdef PyMjvGLCamera WrapMjvGLCamera(mjvGLCamera* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvGLCamera o = PyMjvGLCamera()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_f_9mujoco_py_4cymj_WrapMjvGLCamera(mjvGLCamera *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjvGLCamera", 0);

  /* "mujoco_py/generated/wrappers.pxi":3165
 * 
 * cdef PyMjvGLCamera WrapMjvGLCamera(mjvGLCamera* p):
 *     cdef PyMjvGLCamera o = PyMjvGLCamera()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjvGLCamera), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3166
 * cdef PyMjvGLCamera WrapMjvGLCamera(mjvGLCamera* p):
 *     cdef PyMjvGLCamera o = PyMjvGLCamera()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGLCamera *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3167
 *     cdef PyMjvGLCamera o = PyMjvGLCamera()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjvGeom(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3164
 *     def up(self): return self._up
 * 
 * cdef PyMjvGLCamera WrapMjvGLCamera(mjvGLCamera* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvGLCamera o = PyMjvGLCamera()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjvGLCamera", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3180
 *     cdef np.ndarray _label
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3181
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3180
 *     cdef np.ndarray _label
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3185
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjvGeom* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3187
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvGeom* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_9PyMjvGeom__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, mjvGeom *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3189
 *     cdef void _set(self, mjvGeom* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3192
 * 
 * 
 *         self._texrepeat = _wrap_float_1d(&p.texrepeat[0], 2)             # <<<<<<<<<<<<<<
 *         self._size = _wrap_float_1d(&p.size[0], 3)
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->texrepeat[0])), 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_texrepeat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_texrepeat));
  __pyx_v_self->_texrepeat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3193
 * 
 *         self._texrepeat = _wrap_float_1d(&p.texrepeat[0], 2)
 *         self._size = _wrap_float_1d(&p.size[0], 3)             # <<<<<<<<<<<<<<
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)
 *         self._mat = _wrap_float_1d(&p.mat[0], 9)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->size[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_size);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_size));
  __pyx_v_self->_size = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3194
 *         self._texrepeat = _wrap_float_1d(&p.texrepeat[0], 2)
 *         self._size = _wrap_float_1d(&p.size[0], 3)
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)             # <<<<<<<<<<<<<<
 *         self._mat = _wrap_float_1d(&p.mat[0], 9)
 *         self._rgba = _wrap_float_1d(&p.rgba[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->pos[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pos));
  __pyx_v_self->_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3195
 *         self._size = _wrap_float_1d(&p.size[0], 3)
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)
 *         self._mat = _wrap_float_1d(&p.mat[0], 9)             # <<<<<<<<<<<<<<
 *         self._rgba = _wrap_float_1d(&p.rgba[0], 4)
 *         self._label = _wrap_char_1d(&p.label[0], 100)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->mat[0])), 9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_mat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_mat));
  __pyx_v_self->_mat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3196
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)
 *         self._mat = _wrap_float_1d(&p.mat[0], 9)
 *         self._rgba = _wrap_float_1d(&p.rgba[0], 4)             # <<<<<<<<<<<<<<
 *         self._label = _wrap_char_1d(&p.label[0], 100)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->rgba[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_rgba);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_rgba));
  __pyx_v_self->_rgba = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3197
 *         self._mat = _wrap_float_1d(&p.mat[0], 9)
 *         self._rgba = _wrap_float_1d(&p.rgba[0], 4)
 *         self._label = _wrap_char_1d(&p.label[0], 100)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_char_1d((&(__pyx_v_p->label[0])), 0x64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_label);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_label));
  __pyx_v_self->_label = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3187
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvGeom* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjvGeom._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3200
 * 
 *     @property
 *     def type(self): return self.ptr.type             # <<<<<<<<<<<<<<
 *     @type.setter
 *     def type(self, int x): self.ptr.type = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4type___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4type___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->type); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3202
 *     def type(self): return self.ptr.type
 *     @type.setter
 *     def type(self, int x): self.ptr.type = x             # <<<<<<<<<<<<<<
 *     @property
 *     def dataid(self): return self.ptr.dataid
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3202, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4type_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4type_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->type = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3204
 *     def type(self, int x): self.ptr.type = x
 *     @property
 *     def dataid(self): return self.ptr.dataid             # <<<<<<<<<<<<<<
 *     @dataid.setter
 *     def dataid(self, int x): self.ptr.dataid = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_6dataid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_6dataid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_6dataid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_6dataid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->dataid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.dataid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3206
 *     def dataid(self): return self.ptr.dataid
 *     @dataid.setter
 *     def dataid(self, int x): self.ptr.dataid = x             # <<<<<<<<<<<<<<
 *     @property
 *     def objtype(self): return self.ptr.objtype
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_6dataid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_6dataid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3206, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.dataid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_6dataid_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_6dataid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->dataid = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3208
 *     def dataid(self, int x): self.ptr.dataid = x
 *     @property
 *     def objtype(self): return self.ptr.objtype             # <<<<<<<<<<<<<<
 *     @objtype.setter
 *     def objtype(self, int x): self.ptr.objtype = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7objtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7objtype_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7objtype___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7objtype___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->objtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.objtype.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3210
 *     def objtype(self): return self.ptr.objtype
 *     @objtype.setter
 *     def objtype(self, int x): self.ptr.objtype = x             # <<<<<<<<<<<<<<
 *     @property
 *     def objid(self): return self.ptr.objid
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7objtype_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7objtype_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3210, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.objtype.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7objtype_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7objtype_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->objtype = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3212
 *     def objtype(self, int x): self.ptr.objtype = x
 *     @property
 *     def objid(self): return self.ptr.objid             # <<<<<<<<<<<<<<
 *     @objid.setter
 *     def objid(self, int x): self.ptr.objid = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5objid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5objid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5objid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5objid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->objid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.objid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3214
 *     def objid(self): return self.ptr.objid
 *     @objid.setter
 *     def objid(self, int x): self.ptr.objid = x             # <<<<<<<<<<<<<<
 *     @property
 *     def category(self): return self.ptr.category
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5objid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5objid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3214, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.objid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5objid_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5objid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->objid = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3216
 *     def objid(self, int x): self.ptr.objid = x
 *     @property
 *     def category(self): return self.ptr.category             # <<<<<<<<<<<<<<
 *     @category.setter
 *     def category(self, int x): self.ptr.category = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8category_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8category_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8category___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8category___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->category); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.category.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3218
 *     def category(self): return self.ptr.category
 *     @category.setter
 *     def category(self, int x): self.ptr.category = x             # <<<<<<<<<<<<<<
 *     @property
 *     def texid(self): return self.ptr.texid
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8category_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8category_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3218, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.category.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8category_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8category_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->category = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3220
 *     def category(self, int x): self.ptr.category = x
 *     @property
 *     def texid(self): return self.ptr.texid             # <<<<<<<<<<<<<<
 *     @texid.setter
 *     def texid(self, int x): self.ptr.texid = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5texid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5texid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5texid___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5texid___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->texid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.texid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3222
 *     def texid(self): return self.ptr.texid
 *     @texid.setter
 *     def texid(self, int x): self.ptr.texid = x             # <<<<<<<<<<<<<<
 *     @property
 *     def texuniform(self): return self.ptr.texuniform
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5texid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5texid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3222, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.texid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5texid_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5texid_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->texid = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3224
 *     def texid(self, int x): self.ptr.texid = x
 *     @property
 *     def texuniform(self): return self.ptr.texuniform             # <<<<<<<<<<<<<<
 *     @texuniform.setter
 *     def texuniform(self, int x): self.ptr.texuniform = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_10texuniform_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_10texuniform_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_10texuniform___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_10texuniform___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->texuniform); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.texuniform.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3226
 *     def texuniform(self): return self.ptr.texuniform
 *     @texuniform.setter
 *     def texuniform(self, int x): self.ptr.texuniform = x             # <<<<<<<<<<<<<<
 *     @property
 *     def emission(self): return self.ptr.emission
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_10texuniform_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_10texuniform_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3226, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.texuniform.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_10texuniform_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_10texuniform_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->texuniform = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3228
 *     def texuniform(self, int x): self.ptr.texuniform = x
 *     @property
 *     def emission(self): return self.ptr.emission             # <<<<<<<<<<<<<<
 *     @emission.setter
 *     def emission(self, float x): self.ptr.emission = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8emission_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8emission_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8emission___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8emission___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->emission); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.emission.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3230
 *     def emission(self): return self.ptr.emission
 *     @emission.setter
 *     def emission(self, float x): self.ptr.emission = x             # <<<<<<<<<<<<<<
 *     @property
 *     def specular(self): return self.ptr.specular
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8emission_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8emission_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3230, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.emission.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8emission_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8emission_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->emission = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3232
 *     def emission(self, float x): self.ptr.emission = x
 *     @property
 *     def specular(self): return self.ptr.specular             # <<<<<<<<<<<<<<
 *     @specular.setter
 *     def specular(self, float x): self.ptr.specular = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8specular_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8specular_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8specular___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->specular); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.specular.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3234
 *     def specular(self): return self.ptr.specular
 *     @specular.setter
 *     def specular(self, float x): self.ptr.specular = x             # <<<<<<<<<<<<<<
 *     @property
 *     def shininess(self): return self.ptr.shininess
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8specular_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8specular_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3234, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.specular.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8specular_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_8specular_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->specular = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3236
 *     def specular(self, float x): self.ptr.specular = x
 *     @property
 *     def shininess(self): return self.ptr.shininess             # <<<<<<<<<<<<<<
 *     @shininess.setter
 *     def shininess(self, float x): self.ptr.shininess = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_9shininess_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_9shininess_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_9shininess___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_9shininess___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->shininess); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.shininess.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3238
 *     def shininess(self): return self.ptr.shininess
 *     @shininess.setter
 *     def shininess(self, float x): self.ptr.shininess = x             # <<<<<<<<<<<<<<
 *     @property
 *     def reflectance(self): return self.ptr.reflectance
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_9shininess_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_9shininess_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3238, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.shininess.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_9shininess_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_9shininess_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->shininess = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3240
 *     def shininess(self, float x): self.ptr.shininess = x
 *     @property
 *     def reflectance(self): return self.ptr.reflectance             # <<<<<<<<<<<<<<
 *     @reflectance.setter
 *     def reflectance(self, float x): self.ptr.reflectance = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11reflectance_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11reflectance_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11reflectance___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11reflectance___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->reflectance); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.reflectance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3242
 *     def reflectance(self): return self.ptr.reflectance
 *     @reflectance.setter
 *     def reflectance(self, float x): self.ptr.reflectance = x             # <<<<<<<<<<<<<<
 *     @property
 *     def camdist(self): return self.ptr.camdist
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11reflectance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11reflectance_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3242, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.reflectance.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11reflectance_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11reflectance_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->reflectance = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3244
 *     def reflectance(self, float x): self.ptr.reflectance = x
 *     @property
 *     def camdist(self): return self.ptr.camdist             # <<<<<<<<<<<<<<
 *     @camdist.setter
 *     def camdist(self, float x): self.ptr.camdist = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7camdist_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7camdist_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7camdist___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7camdist___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->camdist); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.camdist.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3246
 *     def camdist(self): return self.ptr.camdist
 *     @camdist.setter
 *     def camdist(self, float x): self.ptr.camdist = x             # <<<<<<<<<<<<<<
 *     @property
 *     def modelrbound(self): return self.ptr.modelrbound
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7camdist_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7camdist_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3246, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.camdist.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7camdist_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_7camdist_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->camdist = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3248
 *     def camdist(self, float x): self.ptr.camdist = x
 *     @property
 *     def modelrbound(self): return self.ptr.modelrbound             # <<<<<<<<<<<<<<
 *     @modelrbound.setter
 *     def modelrbound(self, float x): self.ptr.modelrbound = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->modelrbound); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.modelrbound.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3250
 *     def modelrbound(self): return self.ptr.modelrbound
 *     @modelrbound.setter
 *     def modelrbound(self, float x): self.ptr.modelrbound = x             # <<<<<<<<<<<<<<
 *     @property
 *     def transparent(self): return self.ptr.transparent
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3250, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.modelrbound.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->modelrbound = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3252
 *     def modelrbound(self, float x): self.ptr.modelrbound = x
 *     @property
 *     def transparent(self): return self.ptr.transparent             # <<<<<<<<<<<<<<
 *     @transparent.setter
 *     def transparent(self, mjtByte x): self.ptr.transparent = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11transparent_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11transparent_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11transparent___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11transparent___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_mjtByte(__pyx_v_self->ptr->transparent); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.transparent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3254
 *     def transparent(self): return self.ptr.transparent
 *     @transparent.setter
 *     def transparent(self, mjtByte x): self.ptr.transparent = x             # <<<<<<<<<<<<<<
 *     @property
 *     def texrepeat(self): return self._texrepeat
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11transparent_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11transparent_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtByte __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_mjtByte(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtByte)-1)) && PyErr_Occurred())) __PYX_ERR(3, 3254, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.transparent.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11transparent_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((mjtByte)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_11transparent_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, mjtByte __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->transparent = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3256
 *     def transparent(self, mjtByte x): self.ptr.transparent = x
 *     @property
 *     def texrepeat(self): return self._texrepeat             # <<<<<<<<<<<<<<
 *     @property
 *     def size(self): return self._size
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_9texrepeat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_9texrepeat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_9texrepeat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_9texrepeat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_texrepeat));
  __pyx_r = ((PyObject *)__pyx_v_self->_texrepeat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3258
 *     def texrepeat(self): return self._texrepeat
 *     @property
 *     def size(self): return self._size             # <<<<<<<<<<<<<<
 *     @property
 *     def pos(self): return self._pos
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4size___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4size___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_size));
  __pyx_r = ((PyObject *)__pyx_v_self->_size);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3260
 *     def size(self): return self._size
 *     @property
 *     def pos(self): return self._pos             # <<<<<<<<<<<<<<
 *     @property
 *     def mat(self): return self._mat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_3pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_3pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_3pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_3pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3262
 *     def pos(self): return self._pos
 *     @property
 *     def mat(self): return self._mat             # <<<<<<<<<<<<<<
 *     @property
 *     def rgba(self): return self._rgba
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_3mat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_3mat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_3mat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_3mat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_mat));
  __pyx_r = ((PyObject *)__pyx_v_self->_mat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3264
 *     def mat(self): return self._mat
 *     @property
 *     def rgba(self): return self._rgba             # <<<<<<<<<<<<<<
 *     @property
 *     def label(self): return self._label
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4rgba_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4rgba_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4rgba___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4rgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_rgba));
  __pyx_r = ((PyObject *)__pyx_v_self->_rgba);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3266
 *     def rgba(self): return self._rgba
 *     @property
 *     def label(self): return self._label             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjvGeom WrapMjvGeom(mjvGeom* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5label_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5label_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5label___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_5label___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_label));
  __pyx_r = ((PyObject *)__pyx_v_self->_label);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjvGeom_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvGeom.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3268
 *     def label(self): return self._label
 * 
 * cdef PyMjvGeom WrapMjvGeom(mjvGeom* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvGeom o = PyMjvGeom()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_f_9mujoco_py_4cymj_WrapMjvGeom(mjvGeom *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjvGeom", 0);

  /* "mujoco_py/generated/wrappers.pxi":3269
 * 
 * cdef PyMjvGeom WrapMjvGeom(mjvGeom* p):
 *     cdef PyMjvGeom o = PyMjvGeom()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjvGeom), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3270
 * cdef PyMjvGeom WrapMjvGeom(mjvGeom* p):
 *     cdef PyMjvGeom o = PyMjvGeom()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGeom *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3271
 *     cdef PyMjvGeom o = PyMjvGeom()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjvLight(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3268
 *     def label(self): return self._label
 * 
 * cdef PyMjvGeom WrapMjvGeom(mjvGeom* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvGeom o = PyMjvGeom()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjvGeom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3284
 *     cdef np.ndarray _specular
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3285
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3284
 *     cdef np.ndarray _specular
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3289
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjvLight* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3291
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvLight* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_10PyMjvLight__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, mjvLight *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3293
 *     cdef void _set(self, mjvLight* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3296
 * 
 * 
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)             # <<<<<<<<<<<<<<
 *         self._dir = _wrap_float_1d(&p.dir[0], 3)
 *         self._attenuation = _wrap_float_1d(&p.attenuation[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->pos[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_pos);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_pos));
  __pyx_v_self->_pos = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3297
 * 
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)
 *         self._dir = _wrap_float_1d(&p.dir[0], 3)             # <<<<<<<<<<<<<<
 *         self._attenuation = _wrap_float_1d(&p.attenuation[0], 3)
 *         self._ambient = _wrap_float_1d(&p.ambient[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->dir[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_dir);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_dir));
  __pyx_v_self->_dir = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3298
 *         self._pos = _wrap_float_1d(&p.pos[0], 3)
 *         self._dir = _wrap_float_1d(&p.dir[0], 3)
 *         self._attenuation = _wrap_float_1d(&p.attenuation[0], 3)             # <<<<<<<<<<<<<<
 *         self._ambient = _wrap_float_1d(&p.ambient[0], 3)
 *         self._diffuse = _wrap_float_1d(&p.diffuse[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->attenuation[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_attenuation);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_attenuation));
  __pyx_v_self->_attenuation = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3299
 *         self._dir = _wrap_float_1d(&p.dir[0], 3)
 *         self._attenuation = _wrap_float_1d(&p.attenuation[0], 3)
 *         self._ambient = _wrap_float_1d(&p.ambient[0], 3)             # <<<<<<<<<<<<<<
 *         self._diffuse = _wrap_float_1d(&p.diffuse[0], 3)
 *         self._specular = _wrap_float_1d(&p.specular[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->ambient[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_ambient);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_ambient));
  __pyx_v_self->_ambient = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3300
 *         self._attenuation = _wrap_float_1d(&p.attenuation[0], 3)
 *         self._ambient = _wrap_float_1d(&p.ambient[0], 3)
 *         self._diffuse = _wrap_float_1d(&p.diffuse[0], 3)             # <<<<<<<<<<<<<<
 *         self._specular = _wrap_float_1d(&p.specular[0], 3)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->diffuse[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_diffuse);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_diffuse));
  __pyx_v_self->_diffuse = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3301
 *         self._ambient = _wrap_float_1d(&p.ambient[0], 3)
 *         self._diffuse = _wrap_float_1d(&p.diffuse[0], 3)
 *         self._specular = _wrap_float_1d(&p.specular[0], 3)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->specular[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_specular);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_specular));
  __pyx_v_self->_specular = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3291
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvLight* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjvLight._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3304
 * 
 *     @property
 *     def cutoff(self): return self.ptr.cutoff             # <<<<<<<<<<<<<<
 *     @cutoff.setter
 *     def cutoff(self, float x): self.ptr.cutoff = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_6cutoff_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_6cutoff_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_6cutoff___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_6cutoff___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->cutoff); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.cutoff.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3306
 *     def cutoff(self): return self.ptr.cutoff
 *     @cutoff.setter
 *     def cutoff(self, float x): self.ptr.cutoff = x             # <<<<<<<<<<<<<<
 *     @property
 *     def exponent(self): return self.ptr.exponent
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_6cutoff_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_6cutoff_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3306, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.cutoff.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_6cutoff_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_6cutoff_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->cutoff = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3308
 *     def cutoff(self, float x): self.ptr.cutoff = x
 *     @property
 *     def exponent(self): return self.ptr.exponent             # <<<<<<<<<<<<<<
 *     @exponent.setter
 *     def exponent(self, float x): self.ptr.exponent = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_8exponent_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_8exponent_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_8exponent___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_8exponent___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->exponent); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.exponent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3310
 *     def exponent(self): return self.ptr.exponent
 *     @exponent.setter
 *     def exponent(self, float x): self.ptr.exponent = x             # <<<<<<<<<<<<<<
 *     @property
 *     def headlight(self): return self.ptr.headlight
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_8exponent_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_8exponent_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3310, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.exponent.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_8exponent_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_8exponent_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->exponent = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3312
 *     def exponent(self, float x): self.ptr.exponent = x
 *     @property
 *     def headlight(self): return self.ptr.headlight             # <<<<<<<<<<<<<<
 *     @headlight.setter
 *     def headlight(self, mjtByte x): self.ptr.headlight = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_9headlight_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_9headlight_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_9headlight___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_9headlight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_mjtByte(__pyx_v_self->ptr->headlight); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.headlight.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3314
 *     def headlight(self): return self.ptr.headlight
 *     @headlight.setter
 *     def headlight(self, mjtByte x): self.ptr.headlight = x             # <<<<<<<<<<<<<<
 *     @property
 *     def directional(self): return self.ptr.directional
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_9headlight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_9headlight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtByte __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_mjtByte(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtByte)-1)) && PyErr_Occurred())) __PYX_ERR(3, 3314, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.headlight.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_9headlight_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self), ((mjtByte)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_9headlight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, mjtByte __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->headlight = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3316
 *     def headlight(self, mjtByte x): self.ptr.headlight = x
 *     @property
 *     def directional(self): return self.ptr.directional             # <<<<<<<<<<<<<<
 *     @directional.setter
 *     def directional(self, mjtByte x): self.ptr.directional = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_11directional_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_11directional_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_11directional___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_11directional___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_mjtByte(__pyx_v_self->ptr->directional); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.directional.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3318
 *     def directional(self): return self.ptr.directional
 *     @directional.setter
 *     def directional(self, mjtByte x): self.ptr.directional = x             # <<<<<<<<<<<<<<
 *     @property
 *     def castshadow(self): return self.ptr.castshadow
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_11directional_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_11directional_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtByte __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_mjtByte(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtByte)-1)) && PyErr_Occurred())) __PYX_ERR(3, 3318, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.directional.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_11directional_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self), ((mjtByte)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_11directional_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, mjtByte __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->directional = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3320
 *     def directional(self, mjtByte x): self.ptr.directional = x
 *     @property
 *     def castshadow(self): return self.ptr.castshadow             # <<<<<<<<<<<<<<
 *     @castshadow.setter
 *     def castshadow(self, mjtByte x): self.ptr.castshadow = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_10castshadow_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_10castshadow_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_10castshadow___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_10castshadow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_mjtByte(__pyx_v_self->ptr->castshadow); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.castshadow.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3322
 *     def castshadow(self): return self.ptr.castshadow
 *     @castshadow.setter
 *     def castshadow(self, mjtByte x): self.ptr.castshadow = x             # <<<<<<<<<<<<<<
 *     @property
 *     def pos(self): return self._pos
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_10castshadow_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_10castshadow_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtByte __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_mjtByte(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtByte)-1)) && PyErr_Occurred())) __PYX_ERR(3, 3322, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.castshadow.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_10castshadow_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self), ((mjtByte)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_10castshadow_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, mjtByte __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->castshadow = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3324
 *     def castshadow(self, mjtByte x): self.ptr.castshadow = x
 *     @property
 *     def pos(self): return self._pos             # <<<<<<<<<<<<<<
 *     @property
 *     def dir(self): return self._dir
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_3pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_3pos_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_3pos___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_3pos___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_pos));
  __pyx_r = ((PyObject *)__pyx_v_self->_pos);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3326
 *     def pos(self): return self._pos
 *     @property
 *     def dir(self): return self._dir             # <<<<<<<<<<<<<<
 *     @property
 *     def attenuation(self): return self._attenuation
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_3dir_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_3dir_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_3dir___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_3dir___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_dir));
  __pyx_r = ((PyObject *)__pyx_v_self->_dir);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3328
 *     def dir(self): return self._dir
 *     @property
 *     def attenuation(self): return self._attenuation             # <<<<<<<<<<<<<<
 *     @property
 *     def ambient(self): return self._ambient
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_11attenuation_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_11attenuation_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_11attenuation___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_11attenuation___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_attenuation));
  __pyx_r = ((PyObject *)__pyx_v_self->_attenuation);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3330
 *     def attenuation(self): return self._attenuation
 *     @property
 *     def ambient(self): return self._ambient             # <<<<<<<<<<<<<<
 *     @property
 *     def diffuse(self): return self._diffuse
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_7ambient_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_7ambient_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_7ambient___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_7ambient___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_ambient));
  __pyx_r = ((PyObject *)__pyx_v_self->_ambient);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3332
 *     def ambient(self): return self._ambient
 *     @property
 *     def diffuse(self): return self._diffuse             # <<<<<<<<<<<<<<
 *     @property
 *     def specular(self): return self._specular
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_7diffuse_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_7diffuse_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_7diffuse___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_7diffuse___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_diffuse));
  __pyx_r = ((PyObject *)__pyx_v_self->_diffuse);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3334
 *     def diffuse(self): return self._diffuse
 *     @property
 *     def specular(self): return self._specular             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjvLight WrapMjvLight(mjvLight* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_8specular_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_8specular_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_8specular___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_8specular___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_specular));
  __pyx_r = ((PyObject *)__pyx_v_self->_specular);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvLight_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvLight_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvLight.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3336
 *     def specular(self): return self._specular
 * 
 * cdef PyMjvLight WrapMjvLight(mjvLight* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvLight o = PyMjvLight()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_f_9mujoco_py_4cymj_WrapMjvLight(mjvLight *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjvLight", 0);

  /* "mujoco_py/generated/wrappers.pxi":3337
 * 
 * cdef PyMjvLight WrapMjvLight(mjvLight* p):
 *     cdef PyMjvLight o = PyMjvLight()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjvLight), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3338
 * cdef PyMjvLight WrapMjvLight(mjvLight* p):
 *     cdef PyMjvLight o = PyMjvLight()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvLight *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3339
 *     cdef PyMjvLight o = PyMjvLight()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjvOption(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3336
 *     def specular(self): return self._specular
 * 
 * cdef PyMjvLight WrapMjvLight(mjvLight* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvLight o = PyMjvLight()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjvLight", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3349
 *     cdef np.ndarray _flags
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvOption___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3350
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3349
 *     cdef np.ndarray _flags
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3354
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjvOption* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvOption.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3356
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvOption* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_11PyMjvOption__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self, mjvOption *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3358
 *     cdef void _set(self, mjvOption* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3361
 * 
 * 
 *         self._geomgroup = _wrap_mjtByte_1d(&p.geomgroup[0], 5)             # <<<<<<<<<<<<<<
 *         self._sitegroup = _wrap_mjtByte_1d(&p.sitegroup[0], 5)
 *         self._flags = _wrap_mjtByte_1d(&p.flags[0], mjNVISFLAG)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d((&(__pyx_v_p->geomgroup[0])), 5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_geomgroup);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_geomgroup));
  __pyx_v_self->_geomgroup = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3362
 * 
 *         self._geomgroup = _wrap_mjtByte_1d(&p.geomgroup[0], 5)
 *         self._sitegroup = _wrap_mjtByte_1d(&p.sitegroup[0], 5)             # <<<<<<<<<<<<<<
 *         self._flags = _wrap_mjtByte_1d(&p.flags[0], mjNVISFLAG)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d((&(__pyx_v_p->sitegroup[0])), 5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_sitegroup);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_sitegroup));
  __pyx_v_self->_sitegroup = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3363
 *         self._geomgroup = _wrap_mjtByte_1d(&p.geomgroup[0], 5)
 *         self._sitegroup = _wrap_mjtByte_1d(&p.sitegroup[0], 5)
 *         self._flags = _wrap_mjtByte_1d(&p.flags[0], mjNVISFLAG)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d((&(__pyx_v_p->flags[0])), mjNVISFLAG)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_flags);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_flags));
  __pyx_v_self->_flags = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3356
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvOption* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjvOption._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3366
 * 
 *     @property
 *     def label(self): return self.ptr.label             # <<<<<<<<<<<<<<
 *     @label.setter
 *     def label(self, int x): self.ptr.label = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5label_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5label_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5label___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5label___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->label); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvOption.label.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3368
 *     def label(self): return self.ptr.label
 *     @label.setter
 *     def label(self, int x): self.ptr.label = x             # <<<<<<<<<<<<<<
 *     @property
 *     def frame(self): return self.ptr.frame
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5label_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5label_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3368, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvOption.label.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5label_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5label_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->label = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3370
 *     def label(self, int x): self.ptr.label = x
 *     @property
 *     def frame(self): return self.ptr.frame             # <<<<<<<<<<<<<<
 *     @frame.setter
 *     def frame(self, int x): self.ptr.frame = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5frame_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5frame_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5frame___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5frame___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvOption.frame.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3372
 *     def frame(self): return self.ptr.frame
 *     @frame.setter
 *     def frame(self, int x): self.ptr.frame = x             # <<<<<<<<<<<<<<
 *     @property
 *     def geomgroup(self): return self._geomgroup
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3372, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvOption.frame.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5frame_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5frame_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->frame = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3374
 *     def frame(self, int x): self.ptr.frame = x
 *     @property
 *     def geomgroup(self): return self._geomgroup             # <<<<<<<<<<<<<<
 *     @property
 *     def sitegroup(self): return self._sitegroup
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_9geomgroup_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_9geomgroup_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_9geomgroup___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_9geomgroup___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_geomgroup));
  __pyx_r = ((PyObject *)__pyx_v_self->_geomgroup);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3376
 *     def geomgroup(self): return self._geomgroup
 *     @property
 *     def sitegroup(self): return self._sitegroup             # <<<<<<<<<<<<<<
 *     @property
 *     def flags(self): return self._flags
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_9sitegroup_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_9sitegroup_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_9sitegroup___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_9sitegroup___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_sitegroup));
  __pyx_r = ((PyObject *)__pyx_v_self->_sitegroup);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3378
 *     def sitegroup(self): return self._sitegroup
 *     @property
 *     def flags(self): return self._flags             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjvOption WrapMjvOption(mjvOption* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5flags___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_5flags___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_flags));
  __pyx_r = ((PyObject *)__pyx_v_self->_flags);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvOption.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvOption_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvOption_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvOption.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3380
 *     def flags(self): return self._flags
 * 
 * cdef PyMjvOption WrapMjvOption(mjvOption* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvOption o = PyMjvOption()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_f_9mujoco_py_4cymj_WrapMjvOption(mjvOption *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjvOption", 0);

  /* "mujoco_py/generated/wrappers.pxi":3381
 * 
 * cdef PyMjvOption WrapMjvOption(mjvOption* p):
 *     cdef PyMjvOption o = PyMjvOption()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjvOption), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3382
 * cdef PyMjvOption WrapMjvOption(mjvOption* p):
 *     cdef PyMjvOption o = PyMjvOption()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3383
 *     cdef PyMjvOption o = PyMjvOption()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjvScene(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3380
 *     def flags(self): return self._flags
 * 
 * cdef PyMjvOption WrapMjvOption(mjvOption* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvOption o = PyMjvOption()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjvOption", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3395
 *     cdef np.ndarray _flags
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3396
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3395
 *     cdef np.ndarray _flags
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3400
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjvScene* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3402
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvScene* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_10PyMjvScene__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, mjvScene *__pyx_v_p) {
  long __pyx_8genexpr6__pyx_v_i;
  long __pyx_8genexpr7__pyx_v_i;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  long __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3404
 *     cdef void _set(self, mjvScene* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3407
 * 
 * 
 *         self._lights = [WrapMjvLight(&p.lights[i]) for i in range(8)]             # <<<<<<<<<<<<<<
 *         self._camera = [WrapMjvGLCamera(&p.camera[i]) for i in range(2)]
 *         self._translate = _wrap_float_1d(&p.translate[0], 3)
 */
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    for (__pyx_t_2 = 0; __pyx_t_2 < 8; __pyx_t_2+=1) {
      __pyx_8genexpr6__pyx_v_i = __pyx_t_2;
      __pyx_t_3 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjvLight((&(__pyx_v_p->lights[__pyx_8genexpr6__pyx_v_i])))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3407, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(3, 3407, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  } /* exit inner scope */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_lights);
  __Pyx_DECREF(__pyx_v_self->_lights);
  __pyx_v_self->_lights = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3408
 * 
 *         self._lights = [WrapMjvLight(&p.lights[i]) for i in range(8)]
 *         self._camera = [WrapMjvGLCamera(&p.camera[i]) for i in range(2)]             # <<<<<<<<<<<<<<
 *         self._translate = _wrap_float_1d(&p.translate[0], 3)
 *         self._rotate = _wrap_float_1d(&p.rotate[0], 4)
 */
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    for (__pyx_t_2 = 0; __pyx_t_2 < 2; __pyx_t_2+=1) {
      __pyx_8genexpr7__pyx_v_i = __pyx_t_2;
      __pyx_t_3 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjvGLCamera((&(__pyx_v_p->camera[__pyx_8genexpr7__pyx_v_i])))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3408, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(3, 3408, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  } /* exit inner scope */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_camera);
  __Pyx_DECREF(__pyx_v_self->_camera);
  __pyx_v_self->_camera = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3409
 *         self._lights = [WrapMjvLight(&p.lights[i]) for i in range(8)]
 *         self._camera = [WrapMjvGLCamera(&p.camera[i]) for i in range(2)]
 *         self._translate = _wrap_float_1d(&p.translate[0], 3)             # <<<<<<<<<<<<<<
 *         self._rotate = _wrap_float_1d(&p.rotate[0], 4)
 *         self._flags = _wrap_mjtByte_1d(&p.flags[0], mjNRNDFLAG)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->translate[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_translate);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_translate));
  __pyx_v_self->_translate = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3410
 *         self._camera = [WrapMjvGLCamera(&p.camera[i]) for i in range(2)]
 *         self._translate = _wrap_float_1d(&p.translate[0], 3)
 *         self._rotate = _wrap_float_1d(&p.rotate[0], 4)             # <<<<<<<<<<<<<<
 *         self._flags = _wrap_mjtByte_1d(&p.flags[0], mjNRNDFLAG)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->rotate[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_rotate);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_rotate));
  __pyx_v_self->_rotate = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3411
 *         self._translate = _wrap_float_1d(&p.translate[0], 3)
 *         self._rotate = _wrap_float_1d(&p.rotate[0], 4)
 *         self._flags = _wrap_mjtByte_1d(&p.flags[0], mjNRNDFLAG)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d((&(__pyx_v_p->flags[0])), mjNRNDFLAG)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_flags);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_flags));
  __pyx_v_self->_flags = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3402
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvScene* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjvScene._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3414
 * 
 *     @property
 *     def maxgeom(self): return self.ptr.maxgeom             # <<<<<<<<<<<<<<
 *     @maxgeom.setter
 *     def maxgeom(self, int x): self.ptr.maxgeom = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_7maxgeom_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_7maxgeom_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_7maxgeom___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_7maxgeom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->maxgeom); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.maxgeom.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3416
 *     def maxgeom(self): return self.ptr.maxgeom
 *     @maxgeom.setter
 *     def maxgeom(self, int x): self.ptr.maxgeom = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ngeom(self): return self.ptr.ngeom
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_7maxgeom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_7maxgeom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3416, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.maxgeom.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_7maxgeom_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_7maxgeom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->maxgeom = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3418
 *     def maxgeom(self, int x): self.ptr.maxgeom = x
 *     @property
 *     def ngeom(self): return self.ptr.ngeom             # <<<<<<<<<<<<<<
 *     @ngeom.setter
 *     def ngeom(self, int x): self.ptr.ngeom = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5ngeom_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5ngeom_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5ngeom___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5ngeom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ngeom); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.ngeom.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3420
 *     def ngeom(self): return self.ptr.ngeom
 *     @ngeom.setter
 *     def ngeom(self, int x): self.ptr.ngeom = x             # <<<<<<<<<<<<<<
 *     @property
 *     def nlight(self): return self.ptr.nlight
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5ngeom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5ngeom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3420, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.ngeom.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5ngeom_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5ngeom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ngeom = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3422
 *     def ngeom(self, int x): self.ptr.ngeom = x
 *     @property
 *     def nlight(self): return self.ptr.nlight             # <<<<<<<<<<<<<<
 *     @nlight.setter
 *     def nlight(self, int x): self.ptr.nlight = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6nlight_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6nlight_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6nlight___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6nlight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->nlight); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.nlight.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3424
 *     def nlight(self): return self.ptr.nlight
 *     @nlight.setter
 *     def nlight(self, int x): self.ptr.nlight = x             # <<<<<<<<<<<<<<
 *     @property
 *     def enabletransform(self): return self.ptr.enabletransform
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6nlight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6nlight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3424, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.nlight.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6nlight_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6nlight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->nlight = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3426
 *     def nlight(self, int x): self.ptr.nlight = x
 *     @property
 *     def enabletransform(self): return self.ptr.enabletransform             # <<<<<<<<<<<<<<
 *     @enabletransform.setter
 *     def enabletransform(self, mjtByte x): self.ptr.enabletransform = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_15enabletransform_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_15enabletransform_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_15enabletransform___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_15enabletransform___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_mjtByte(__pyx_v_self->ptr->enabletransform); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.enabletransform.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3428
 *     def enabletransform(self): return self.ptr.enabletransform
 *     @enabletransform.setter
 *     def enabletransform(self, mjtByte x): self.ptr.enabletransform = x             # <<<<<<<<<<<<<<
 *     @property
 *     def scale(self): return self.ptr.scale
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_15enabletransform_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_15enabletransform_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  mjtByte __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_mjtByte(__pyx_arg_x); if (unlikely((__pyx_v_x == ((mjtByte)-1)) && PyErr_Occurred())) __PYX_ERR(3, 3428, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.enabletransform.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_15enabletransform_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self), ((mjtByte)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_15enabletransform_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, mjtByte __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->enabletransform = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3430
 *     def enabletransform(self, mjtByte x): self.ptr.enabletransform = x
 *     @property
 *     def scale(self): return self.ptr.scale             # <<<<<<<<<<<<<<
 *     @scale.setter
 *     def scale(self, float x): self.ptr.scale = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5scale_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5scale_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5scale___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5scale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->scale); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.scale.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3432
 *     def scale(self): return self.ptr.scale
 *     @scale.setter
 *     def scale(self, float x): self.ptr.scale = x             # <<<<<<<<<<<<<<
 *     @property
 *     def stereo(self): return self.ptr.stereo
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5scale_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5scale_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3432, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.scale.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5scale_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5scale_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->scale = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3434
 *     def scale(self, float x): self.ptr.scale = x
 *     @property
 *     def stereo(self): return self.ptr.stereo             # <<<<<<<<<<<<<<
 *     @stereo.setter
 *     def stereo(self, int x): self.ptr.stereo = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6stereo_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6stereo_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6stereo___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6stereo___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->stereo); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.stereo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3436
 *     def stereo(self): return self.ptr.stereo
 *     @stereo.setter
 *     def stereo(self, int x): self.ptr.stereo = x             # <<<<<<<<<<<<<<
 *     @property
 *     def lights(self): return self._lights
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6stereo_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6stereo_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3436, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.stereo.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6stereo_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6stereo_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->stereo = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3438
 *     def stereo(self, int x): self.ptr.stereo = x
 *     @property
 *     def lights(self): return self._lights             # <<<<<<<<<<<<<<
 *     @property
 *     def camera(self): return self._camera
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6lights_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6lights_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6lights___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6lights___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_lights);
  __pyx_r = __pyx_v_self->_lights;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3440
 *     def lights(self): return self._lights
 *     @property
 *     def camera(self): return self._camera             # <<<<<<<<<<<<<<
 *     @property
 *     def translate(self): return self._translate
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6camera_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6camera_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6camera___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6camera___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_camera);
  __pyx_r = __pyx_v_self->_camera;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3442
 *     def camera(self): return self._camera
 *     @property
 *     def translate(self): return self._translate             # <<<<<<<<<<<<<<
 *     @property
 *     def rotate(self): return self._rotate
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_9translate_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_9translate_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_9translate___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_9translate___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_translate));
  __pyx_r = ((PyObject *)__pyx_v_self->_translate);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3444
 *     def translate(self): return self._translate
 *     @property
 *     def rotate(self): return self._rotate             # <<<<<<<<<<<<<<
 *     @property
 *     def flags(self): return self._flags
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6rotate_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6rotate_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6rotate___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_6rotate___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_rotate));
  __pyx_r = ((PyObject *)__pyx_v_self->_rotate);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3446
 *     def rotate(self): return self._rotate
 *     @property
 *     def flags(self): return self._flags             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjvScene WrapMjvScene(mjvScene* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5flags___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_5flags___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_flags));
  __pyx_r = ((PyObject *)__pyx_v_self->_flags);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10PyMjvScene_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10PyMjvScene_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__76, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvScene.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3448
 *     def flags(self): return self._flags
 * 
 * cdef PyMjvScene WrapMjvScene(mjvScene* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvScene o = PyMjvScene()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_f_9mujoco_py_4cymj_WrapMjvScene(mjvScene *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjvScene", 0);

  /* "mujoco_py/generated/wrappers.pxi":3449
 * 
 * cdef PyMjvScene WrapMjvScene(mjvScene* p):
 *     cdef PyMjvScene o = PyMjvScene()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjvScene), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3450
 * cdef PyMjvScene WrapMjvScene(mjvScene* p):
 *     cdef PyMjvScene o = PyMjvScene()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3451
 *     cdef PyMjvScene o = PyMjvScene()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjvFigure(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3448
 *     def flags(self): return self._flags
 * 
 * cdef PyMjvScene WrapMjvScene(mjvScene* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvScene o = PyMjvScene()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjvScene", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3471
 *     cdef np.ndarray _linewidth
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3472
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3471
 *     cdef np.ndarray _linewidth
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3476
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjvFigure* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3478
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvFigure* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_11PyMjvFigure__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, mjvFigure *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3480
 *     cdef void _set(self, mjvFigure* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3483
 * 
 * 
 *         self._flg_ticklabel = _wrap_int_1d(&p.flg_ticklabel[0], 2)             # <<<<<<<<<<<<<<
 *         self._gridsize = _wrap_int_1d(&p.gridsize[0], 2)
 *         self._gridrgb = _wrap_float_1d(&p.gridrgb[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d((&(__pyx_v_p->flg_ticklabel[0])), 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_flg_ticklabel);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_flg_ticklabel));
  __pyx_v_self->_flg_ticklabel = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3484
 * 
 *         self._flg_ticklabel = _wrap_int_1d(&p.flg_ticklabel[0], 2)
 *         self._gridsize = _wrap_int_1d(&p.gridsize[0], 2)             # <<<<<<<<<<<<<<
 *         self._gridrgb = _wrap_float_1d(&p.gridrgb[0], 3)
 *         self._figurergba = _wrap_float_1d(&p.figurergba[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d((&(__pyx_v_p->gridsize[0])), 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_gridsize);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_gridsize));
  __pyx_v_self->_gridsize = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3485
 *         self._flg_ticklabel = _wrap_int_1d(&p.flg_ticklabel[0], 2)
 *         self._gridsize = _wrap_int_1d(&p.gridsize[0], 2)
 *         self._gridrgb = _wrap_float_1d(&p.gridrgb[0], 3)             # <<<<<<<<<<<<<<
 *         self._figurergba = _wrap_float_1d(&p.figurergba[0], 4)
 *         self._legendrgba = _wrap_float_1d(&p.legendrgba[0], 4)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->gridrgb[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_gridrgb);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_gridrgb));
  __pyx_v_self->_gridrgb = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3486
 *         self._gridsize = _wrap_int_1d(&p.gridsize[0], 2)
 *         self._gridrgb = _wrap_float_1d(&p.gridrgb[0], 3)
 *         self._figurergba = _wrap_float_1d(&p.figurergba[0], 4)             # <<<<<<<<<<<<<<
 *         self._legendrgba = _wrap_float_1d(&p.legendrgba[0], 4)
 *         self._textrgb = _wrap_float_1d(&p.textrgb[0], 3)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->figurergba[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_figurergba);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_figurergba));
  __pyx_v_self->_figurergba = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3487
 *         self._gridrgb = _wrap_float_1d(&p.gridrgb[0], 3)
 *         self._figurergba = _wrap_float_1d(&p.figurergba[0], 4)
 *         self._legendrgba = _wrap_float_1d(&p.legendrgba[0], 4)             # <<<<<<<<<<<<<<
 *         self._textrgb = _wrap_float_1d(&p.textrgb[0], 3)
 *         self._xlabel = _wrap_char_1d(&p.xlabel[0], 100)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->legendrgba[0])), 4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_legendrgba);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_legendrgba));
  __pyx_v_self->_legendrgba = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3488
 *         self._figurergba = _wrap_float_1d(&p.figurergba[0], 4)
 *         self._legendrgba = _wrap_float_1d(&p.legendrgba[0], 4)
 *         self._textrgb = _wrap_float_1d(&p.textrgb[0], 3)             # <<<<<<<<<<<<<<
 *         self._xlabel = _wrap_char_1d(&p.xlabel[0], 100)
 *         self._title = _wrap_char_1d(&p.title[0], 100)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->textrgb[0])), 3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_textrgb);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_textrgb));
  __pyx_v_self->_textrgb = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3489
 *         self._legendrgba = _wrap_float_1d(&p.legendrgba[0], 4)
 *         self._textrgb = _wrap_float_1d(&p.textrgb[0], 3)
 *         self._xlabel = _wrap_char_1d(&p.xlabel[0], 100)             # <<<<<<<<<<<<<<
 *         self._title = _wrap_char_1d(&p.title[0], 100)
 *         self._xformat = _wrap_char_1d(&p.xformat[0], 20)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_char_1d((&(__pyx_v_p->xlabel[0])), 0x64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_xlabel);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_xlabel));
  __pyx_v_self->_xlabel = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3490
 *         self._textrgb = _wrap_float_1d(&p.textrgb[0], 3)
 *         self._xlabel = _wrap_char_1d(&p.xlabel[0], 100)
 *         self._title = _wrap_char_1d(&p.title[0], 100)             # <<<<<<<<<<<<<<
 *         self._xformat = _wrap_char_1d(&p.xformat[0], 20)
 *         self._yformat = _wrap_char_1d(&p.yformat[0], 20)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_char_1d((&(__pyx_v_p->title[0])), 0x64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_title);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_title));
  __pyx_v_self->_title = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3491
 *         self._xlabel = _wrap_char_1d(&p.xlabel[0], 100)
 *         self._title = _wrap_char_1d(&p.title[0], 100)
 *         self._xformat = _wrap_char_1d(&p.xformat[0], 20)             # <<<<<<<<<<<<<<
 *         self._yformat = _wrap_char_1d(&p.yformat[0], 20)
 *         self._minwidth = _wrap_char_1d(&p.minwidth[0], 20)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_char_1d((&(__pyx_v_p->xformat[0])), 20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_xformat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_xformat));
  __pyx_v_self->_xformat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3492
 *         self._title = _wrap_char_1d(&p.title[0], 100)
 *         self._xformat = _wrap_char_1d(&p.xformat[0], 20)
 *         self._yformat = _wrap_char_1d(&p.yformat[0], 20)             # <<<<<<<<<<<<<<
 *         self._minwidth = _wrap_char_1d(&p.minwidth[0], 20)
 *         self._linepnt = _wrap_int_1d(&p.linepnt[0], 100)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_char_1d((&(__pyx_v_p->yformat[0])), 20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_yformat);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_yformat));
  __pyx_v_self->_yformat = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3493
 *         self._xformat = _wrap_char_1d(&p.xformat[0], 20)
 *         self._yformat = _wrap_char_1d(&p.yformat[0], 20)
 *         self._minwidth = _wrap_char_1d(&p.minwidth[0], 20)             # <<<<<<<<<<<<<<
 *         self._linepnt = _wrap_int_1d(&p.linepnt[0], 100)
 *         self._linewidth = _wrap_float_1d(&p.linewidth[0], 100)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_char_1d((&(__pyx_v_p->minwidth[0])), 20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_minwidth);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_minwidth));
  __pyx_v_self->_minwidth = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3494
 *         self._yformat = _wrap_char_1d(&p.yformat[0], 20)
 *         self._minwidth = _wrap_char_1d(&p.minwidth[0], 20)
 *         self._linepnt = _wrap_int_1d(&p.linepnt[0], 100)             # <<<<<<<<<<<<<<
 *         self._linewidth = _wrap_float_1d(&p.linewidth[0], 100)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d((&(__pyx_v_p->linepnt[0])), 0x64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_linepnt);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_linepnt));
  __pyx_v_self->_linepnt = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3495
 *         self._minwidth = _wrap_char_1d(&p.minwidth[0], 20)
 *         self._linepnt = _wrap_int_1d(&p.linepnt[0], 100)
 *         self._linewidth = _wrap_float_1d(&p.linewidth[0], 100)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_float_1d((&(__pyx_v_p->linewidth[0])), 0x64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_linewidth);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_linewidth));
  __pyx_v_self->_linewidth = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3478
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjvFigure* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjvFigure._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3498
 * 
 *     @property
 *     def flg_legend(self): return self.ptr.flg_legend             # <<<<<<<<<<<<<<
 *     @flg_legend.setter
 *     def flg_legend(self, int x): self.ptr.flg_legend = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->flg_legend); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.flg_legend.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3500
 *     def flg_legend(self): return self.ptr.flg_legend
 *     @flg_legend.setter
 *     def flg_legend(self, int x): self.ptr.flg_legend = x             # <<<<<<<<<<<<<<
 *     @property
 *     def flg_extend(self): return self.ptr.flg_extend
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3500, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.flg_legend.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->flg_legend = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3502
 *     def flg_legend(self, int x): self.ptr.flg_legend = x
 *     @property
 *     def flg_extend(self): return self.ptr.flg_extend             # <<<<<<<<<<<<<<
 *     @flg_extend.setter
 *     def flg_extend(self, int x): self.ptr.flg_extend = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->flg_extend); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.flg_extend.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3504
 *     def flg_extend(self): return self.ptr.flg_extend
 *     @flg_extend.setter
 *     def flg_extend(self, int x): self.ptr.flg_extend = x             # <<<<<<<<<<<<<<
 *     @property
 *     def flg_barplot(self): return self.ptr.flg_barplot
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3504, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.flg_extend.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->flg_extend = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3506
 *     def flg_extend(self, int x): self.ptr.flg_extend = x
 *     @property
 *     def flg_barplot(self): return self.ptr.flg_barplot             # <<<<<<<<<<<<<<
 *     @flg_barplot.setter
 *     def flg_barplot(self, int x): self.ptr.flg_barplot = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->flg_barplot); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.flg_barplot.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3508
 *     def flg_barplot(self): return self.ptr.flg_barplot
 *     @flg_barplot.setter
 *     def flg_barplot(self, int x): self.ptr.flg_barplot = x             # <<<<<<<<<<<<<<
 *     @property
 *     def gridwidth(self): return self.ptr.gridwidth
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3508, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.flg_barplot.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->flg_barplot = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3510
 *     def flg_barplot(self, int x): self.ptr.flg_barplot = x
 *     @property
 *     def gridwidth(self): return self.ptr.gridwidth             # <<<<<<<<<<<<<<
 *     @gridwidth.setter
 *     def gridwidth(self, float x): self.ptr.gridwidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->gridwidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.gridwidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3512
 *     def gridwidth(self): return self.ptr.gridwidth
 *     @gridwidth.setter
 *     def gridwidth(self, float x): self.ptr.gridwidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def flg_ticklabel(self): return self._flg_ticklabel
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3512, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.gridwidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->gridwidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3514
 *     def gridwidth(self, float x): self.ptr.gridwidth = x
 *     @property
 *     def flg_ticklabel(self): return self._flg_ticklabel             # <<<<<<<<<<<<<<
 *     @property
 *     def gridsize(self): return self._gridsize
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_13flg_ticklabel_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_13flg_ticklabel_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_13flg_ticklabel___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_13flg_ticklabel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_flg_ticklabel));
  __pyx_r = ((PyObject *)__pyx_v_self->_flg_ticklabel);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3516
 *     def flg_ticklabel(self): return self._flg_ticklabel
 *     @property
 *     def gridsize(self): return self._gridsize             # <<<<<<<<<<<<<<
 *     @property
 *     def gridrgb(self): return self._gridrgb
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_8gridsize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_8gridsize_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_8gridsize___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_8gridsize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_gridsize));
  __pyx_r = ((PyObject *)__pyx_v_self->_gridsize);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3518
 *     def gridsize(self): return self._gridsize
 *     @property
 *     def gridrgb(self): return self._gridrgb             # <<<<<<<<<<<<<<
 *     @property
 *     def figurergba(self): return self._figurergba
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7gridrgb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7gridrgb_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7gridrgb___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7gridrgb___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_gridrgb));
  __pyx_r = ((PyObject *)__pyx_v_self->_gridrgb);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3520
 *     def gridrgb(self): return self._gridrgb
 *     @property
 *     def figurergba(self): return self._figurergba             # <<<<<<<<<<<<<<
 *     @property
 *     def legendrgba(self): return self._legendrgba
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10figurergba_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10figurergba_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10figurergba___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10figurergba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_figurergba));
  __pyx_r = ((PyObject *)__pyx_v_self->_figurergba);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3522
 *     def figurergba(self): return self._figurergba
 *     @property
 *     def legendrgba(self): return self._legendrgba             # <<<<<<<<<<<<<<
 *     @property
 *     def textrgb(self): return self._textrgb
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10legendrgba_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10legendrgba_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10legendrgba___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_10legendrgba___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_legendrgba));
  __pyx_r = ((PyObject *)__pyx_v_self->_legendrgba);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3524
 *     def legendrgba(self): return self._legendrgba
 *     @property
 *     def textrgb(self): return self._textrgb             # <<<<<<<<<<<<<<
 *     @property
 *     def xlabel(self): return self._xlabel
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7textrgb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7textrgb_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7textrgb___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7textrgb___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_textrgb));
  __pyx_r = ((PyObject *)__pyx_v_self->_textrgb);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3526
 *     def textrgb(self): return self._textrgb
 *     @property
 *     def xlabel(self): return self._xlabel             # <<<<<<<<<<<<<<
 *     @property
 *     def title(self): return self._title
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_6xlabel_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_6xlabel_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_6xlabel___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_6xlabel___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_xlabel));
  __pyx_r = ((PyObject *)__pyx_v_self->_xlabel);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3528
 *     def xlabel(self): return self._xlabel
 *     @property
 *     def title(self): return self._title             # <<<<<<<<<<<<<<
 *     @property
 *     def xformat(self): return self._xformat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_5title_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_5title_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_5title___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_5title___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_title));
  __pyx_r = ((PyObject *)__pyx_v_self->_title);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3530
 *     def title(self): return self._title
 *     @property
 *     def xformat(self): return self._xformat             # <<<<<<<<<<<<<<
 *     @property
 *     def yformat(self): return self._yformat
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7xformat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7xformat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7xformat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7xformat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_xformat));
  __pyx_r = ((PyObject *)__pyx_v_self->_xformat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3532
 *     def xformat(self): return self._xformat
 *     @property
 *     def yformat(self): return self._yformat             # <<<<<<<<<<<<<<
 *     @property
 *     def minwidth(self): return self._minwidth
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7yformat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7yformat_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7yformat___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7yformat___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_yformat));
  __pyx_r = ((PyObject *)__pyx_v_self->_yformat);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3534
 *     def yformat(self): return self._yformat
 *     @property
 *     def minwidth(self): return self._minwidth             # <<<<<<<<<<<<<<
 *     @property
 *     def linepnt(self): return self._linepnt
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_8minwidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_8minwidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_8minwidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_8minwidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_minwidth));
  __pyx_r = ((PyObject *)__pyx_v_self->_minwidth);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3536
 *     def minwidth(self): return self._minwidth
 *     @property
 *     def linepnt(self): return self._linepnt             # <<<<<<<<<<<<<<
 *     @property
 *     def linewidth(self): return self._linewidth
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7linepnt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7linepnt_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7linepnt___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_7linepnt___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_linepnt));
  __pyx_r = ((PyObject *)__pyx_v_self->_linepnt);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3538
 *     def linepnt(self): return self._linepnt
 *     @property
 *     def linewidth(self): return self._linewidth             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjvFigure WrapMjvFigure(mjvFigure* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_9linewidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_9linewidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_9linewidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_9linewidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_linewidth));
  __pyx_r = ((PyObject *)__pyx_v_self->_linewidth);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__77, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11PyMjvFigure_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__78, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjvFigure.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3540
 *     def linewidth(self): return self._linewidth
 * 
 * cdef PyMjvFigure WrapMjvFigure(mjvFigure* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvFigure o = PyMjvFigure()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_f_9mujoco_py_4cymj_WrapMjvFigure(mjvFigure *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjvFigure", 0);

  /* "mujoco_py/generated/wrappers.pxi":3541
 * 
 * cdef PyMjvFigure WrapMjvFigure(mjvFigure* p):
 *     cdef PyMjvFigure o = PyMjvFigure()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjvFigure), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3542
 * cdef PyMjvFigure WrapMjvFigure(mjvFigure* p):
 *     cdef PyMjvFigure o = PyMjvFigure()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3543
 *     cdef PyMjvFigure o = PyMjvFigure()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjrRect(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3540
 *     def linewidth(self): return self._linewidth
 * 
 * cdef PyMjvFigure WrapMjvFigure(mjvFigure* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjvFigure o = PyMjvFigure()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjvFigure", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3550
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = <mjrRect*> PyMem_Malloc(sizeof(mjrRect))
 *         if not self.ptr:
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3551
 * 
 *     def __cinit__(self):
 *         self.ptr = <mjrRect*> PyMem_Malloc(sizeof(mjrRect))             # <<<<<<<<<<<<<<
 *         if not self.ptr:
 *             raise MemoryError()
 */
  __pyx_v_self->ptr = ((mjrRect *)PyMem_Malloc((sizeof(mjrRect))));

  /* "mujoco_py/generated/wrappers.pxi":3552
 *     def __cinit__(self):
 *         self.ptr = <mjrRect*> PyMem_Malloc(sizeof(mjrRect))
 *         if not self.ptr:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
  __pyx_t_1 = ((!(__pyx_v_self->ptr != 0)) != 0);
  if (__pyx_t_1) {

    /* "mujoco_py/generated/wrappers.pxi":3553
 *         self.ptr = <mjrRect*> PyMem_Malloc(sizeof(mjrRect))
 *         if not self.ptr:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    PyErr_NoMemory(); __PYX_ERR(3, 3553, __pyx_L1_error)

    /* "mujoco_py/generated/wrappers.pxi":3552
 *     def __cinit__(self):
 *         self.ptr = <mjrRect*> PyMem_Malloc(sizeof(mjrRect))
 *         if not self.ptr:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
 */
  }

  /* "mujoco_py/generated/wrappers.pxi":3550
 * 
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = <mjrRect*> PyMem_Malloc(sizeof(mjrRect))
 *         if not self.ptr:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3555
 *             raise MemoryError()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         PyMem_Free(self.ptr)
 * 
 */

/* Python wrapper */
static void __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_2__dealloc__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_2__dealloc__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3556
 * 
 *     def __dealloc__(self):
 *         PyMem_Free(self.ptr)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  PyMem_Free(__pyx_v_self->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3555
 *             raise MemoryError()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         PyMem_Free(self.ptr)
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3560
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjrRect* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3562
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjrRect* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_9PyMjrRect__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, mjrRect *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3564
 *     cdef void _set(self, mjrRect* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3562
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjrRect* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3569
 * 
 *     @property
 *     def left(self): return self.ptr.left             # <<<<<<<<<<<<<<
 *     @left.setter
 *     def left(self, int x): self.ptr.left = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_4left_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_4left_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_4left___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_4left___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->left); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.left.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3571
 *     def left(self): return self.ptr.left
 *     @left.setter
 *     def left(self, int x): self.ptr.left = x             # <<<<<<<<<<<<<<
 *     @property
 *     def bottom(self): return self.ptr.bottom
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_4left_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_4left_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3571, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.left.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_4left_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_4left_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->left = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3573
 *     def left(self, int x): self.ptr.left = x
 *     @property
 *     def bottom(self): return self.ptr.bottom             # <<<<<<<<<<<<<<
 *     @bottom.setter
 *     def bottom(self, int x): self.ptr.bottom = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6bottom_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6bottom_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6bottom___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6bottom___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->bottom); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.bottom.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3575
 *     def bottom(self): return self.ptr.bottom
 *     @bottom.setter
 *     def bottom(self, int x): self.ptr.bottom = x             # <<<<<<<<<<<<<<
 *     @property
 *     def width(self): return self.ptr.width
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6bottom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6bottom_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3575, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.bottom.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6bottom_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6bottom_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->bottom = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3577
 *     def bottom(self, int x): self.ptr.bottom = x
 *     @property
 *     def width(self): return self.ptr.width             # <<<<<<<<<<<<<<
 *     @width.setter
 *     def width(self, int x): self.ptr.width = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_5width_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_5width_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_5width___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_5width___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->width); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.width.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3579
 *     def width(self): return self.ptr.width
 *     @width.setter
 *     def width(self, int x): self.ptr.width = x             # <<<<<<<<<<<<<<
 *     @property
 *     def height(self): return self.ptr.height
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_5width_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_5width_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3579, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.width.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_5width_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_5width_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->width = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3581
 *     def width(self, int x): self.ptr.width = x
 *     @property
 *     def height(self): return self.ptr.height             # <<<<<<<<<<<<<<
 *     @height.setter
 *     def height(self, int x): self.ptr.height = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6height_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6height_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6height___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6height___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->height); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.height.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3583
 *     def height(self): return self.ptr.height
 *     @height.setter
 *     def height(self, int x): self.ptr.height = x             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjrRect WrapMjrRect(mjrRect* p):
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6height_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6height_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3583, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.height.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6height_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6height_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->height = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_4__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_9PyMjrRect_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__80, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrRect.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3585
 *     def height(self, int x): self.ptr.height = x
 * 
 * cdef PyMjrRect WrapMjrRect(mjrRect* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjrRect o = PyMjrRect()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_f_9mujoco_py_4cymj_WrapMjrRect(mjrRect *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjrRect", 0);

  /* "mujoco_py/generated/wrappers.pxi":3586
 * 
 * cdef PyMjrRect WrapMjrRect(mjrRect* p):
 *     cdef PyMjrRect o = PyMjrRect()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjrRect), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3587
 * cdef PyMjrRect WrapMjrRect(mjrRect* p):
 *     cdef PyMjrRect o = PyMjrRect()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrRect *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3588
 *     cdef PyMjrRect o = PyMjrRect()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjrContext(object):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3585
 *     def height(self, int x): self.ptr.height = x
 * 
 * cdef PyMjrRect WrapMjrRect(mjrRect* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjrRect o = PyMjrRect()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjrRect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3599
 *     cdef np.ndarray _charWidthBig
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext___cinit__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/generated/wrappers.pxi":3600
 * 
 *     def __cinit__(self):
 *         self.ptr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3599
 *     cdef np.ndarray _charWidthBig
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ptr = NULL
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3604
 * 
 *     @property
 *     def uintptr(self): return <uintptr_t>self.ptr             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set(self, mjrContext* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_7uintptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_7uintptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_7uintptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_7uintptr___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_self->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.uintptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3606
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjrContext* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

static void __pyx_f_9mujoco_py_4cymj_12PyMjrContext__set(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, mjrContext *__pyx_v_p) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_set", 0);

  /* "mujoco_py/generated/wrappers.pxi":3608
 *     cdef void _set(self, mjrContext* p):
 * 
 *         self.ptr = p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->ptr = __pyx_v_p;

  /* "mujoco_py/generated/wrappers.pxi":3611
 * 
 * 
 *         self._textureType = _wrap_int_1d(&p.textureType[0], 100)             # <<<<<<<<<<<<<<
 *         self._texture = _wrap_unsigned_int_1d(&p.texture[0], 100)
 *         self._charWidth = _wrap_int_1d(&p.charWidth[0], 127)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d((&(__pyx_v_p->textureType[0])), 0x64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_textureType);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_textureType));
  __pyx_v_self->_textureType = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3612
 * 
 *         self._textureType = _wrap_int_1d(&p.textureType[0], 100)
 *         self._texture = _wrap_unsigned_int_1d(&p.texture[0], 100)             # <<<<<<<<<<<<<<
 *         self._charWidth = _wrap_int_1d(&p.charWidth[0], 127)
 *         self._charWidthBig = _wrap_int_1d(&p.charWidthBig[0], 127)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_unsigned_int_1d((&(__pyx_v_p->texture[0])), 0x64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_texture);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_texture));
  __pyx_v_self->_texture = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3613
 *         self._textureType = _wrap_int_1d(&p.textureType[0], 100)
 *         self._texture = _wrap_unsigned_int_1d(&p.texture[0], 100)
 *         self._charWidth = _wrap_int_1d(&p.charWidth[0], 127)             # <<<<<<<<<<<<<<
 *         self._charWidthBig = _wrap_int_1d(&p.charWidthBig[0], 127)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d((&(__pyx_v_p->charWidth[0])), 0x7F)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_charWidth);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_charWidth));
  __pyx_v_self->_charWidth = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3614
 *         self._texture = _wrap_unsigned_int_1d(&p.texture[0], 100)
 *         self._charWidth = _wrap_int_1d(&p.charWidth[0], 127)
 *         self._charWidthBig = _wrap_int_1d(&p.charWidthBig[0], 127)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj__wrap_int_1d((&(__pyx_v_p->charWidthBig[0])), 0x7F)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_charWidthBig);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_charWidthBig));
  __pyx_v_self->_charWidthBig = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3606
 *     def uintptr(self): return <uintptr_t>self.ptr
 * 
 *     cdef void _set(self, mjrContext* p):             # <<<<<<<<<<<<<<
 * 
 *         self.ptr = p
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("mujoco_py.cymj.PyMjrContext._set", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/generated/wrappers.pxi":3617
 * 
 *     @property
 *     def lineWidth(self): return self.ptr.lineWidth             # <<<<<<<<<<<<<<
 *     @lineWidth.setter
 *     def lineWidth(self, float x): self.ptr.lineWidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9lineWidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9lineWidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9lineWidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9lineWidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->lineWidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.lineWidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3619
 *     def lineWidth(self): return self.ptr.lineWidth
 *     @lineWidth.setter
 *     def lineWidth(self, float x): self.ptr.lineWidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def shadowClip(self): return self.ptr.shadowClip
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9lineWidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9lineWidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3619, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.lineWidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9lineWidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9lineWidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->lineWidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3621
 *     def lineWidth(self, float x): self.ptr.lineWidth = x
 *     @property
 *     def shadowClip(self): return self.ptr.shadowClip             # <<<<<<<<<<<<<<
 *     @shadowClip.setter
 *     def shadowClip(self, float x): self.ptr.shadowClip = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowClip_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowClip_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowClip___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowClip___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->shadowClip); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowClip.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3623
 *     def shadowClip(self): return self.ptr.shadowClip
 *     @shadowClip.setter
 *     def shadowClip(self, float x): self.ptr.shadowClip = x             # <<<<<<<<<<<<<<
 *     @property
 *     def shadowScale(self): return self.ptr.shadowScale
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowClip_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowClip_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3623, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowClip.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowClip_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowClip_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->shadowClip = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3625
 *     def shadowClip(self, float x): self.ptr.shadowClip = x
 *     @property
 *     def shadowScale(self): return self.ptr.shadowScale             # <<<<<<<<<<<<<<
 *     @shadowScale.setter
 *     def shadowScale(self, float x): self.ptr.shadowScale = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11shadowScale_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11shadowScale_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11shadowScale___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11shadowScale___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ptr->shadowScale); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowScale.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3627
 *     def shadowScale(self): return self.ptr.shadowScale
 *     @shadowScale.setter
 *     def shadowScale(self, float x): self.ptr.shadowScale = x             # <<<<<<<<<<<<<<
 *     @property
 *     def shadowSize(self): return self.ptr.shadowSize
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11shadowScale_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11shadowScale_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 3627, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowScale.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11shadowScale_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11shadowScale_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, float __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->shadowScale = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3629
 *     def shadowScale(self, float x): self.ptr.shadowScale = x
 *     @property
 *     def shadowSize(self): return self.ptr.shadowSize             # <<<<<<<<<<<<<<
 *     @shadowSize.setter
 *     def shadowSize(self, int x): self.ptr.shadowSize = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowSize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowSize_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowSize___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowSize___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->shadowSize); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowSize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3631
 *     def shadowSize(self): return self.ptr.shadowSize
 *     @shadowSize.setter
 *     def shadowSize(self, int x): self.ptr.shadowSize = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offWidth(self): return self.ptr.offWidth
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowSize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowSize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3631, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowSize.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowSize_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10shadowSize_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->shadowSize = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3633
 *     def shadowSize(self, int x): self.ptr.shadowSize = x
 *     @property
 *     def offWidth(self): return self.ptr.offWidth             # <<<<<<<<<<<<<<
 *     @offWidth.setter
 *     def offWidth(self, int x): self.ptr.offWidth = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offWidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offWidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offWidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offWidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->offWidth); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offWidth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3635
 *     def offWidth(self): return self.ptr.offWidth
 *     @offWidth.setter
 *     def offWidth(self, int x): self.ptr.offWidth = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offHeight(self): return self.ptr.offHeight
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offWidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offWidth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3635, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offWidth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offWidth_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offWidth_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offWidth = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3637
 *     def offWidth(self, int x): self.ptr.offWidth = x
 *     @property
 *     def offHeight(self): return self.ptr.offHeight             # <<<<<<<<<<<<<<
 *     @offHeight.setter
 *     def offHeight(self, int x): self.ptr.offHeight = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9offHeight_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9offHeight_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9offHeight___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9offHeight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->offHeight); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offHeight.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3639
 *     def offHeight(self): return self.ptr.offHeight
 *     @offHeight.setter
 *     def offHeight(self, int x): self.ptr.offHeight = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offSamples(self): return self.ptr.offSamples
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9offHeight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9offHeight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3639, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offHeight.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9offHeight_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9offHeight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offHeight = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3641
 *     def offHeight(self, int x): self.ptr.offHeight = x
 *     @property
 *     def offSamples(self): return self.ptr.offSamples             # <<<<<<<<<<<<<<
 *     @offSamples.setter
 *     def offSamples(self, int x): self.ptr.offSamples = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offSamples_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offSamples_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offSamples___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offSamples___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->offSamples); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offSamples.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3643
 *     def offSamples(self): return self.ptr.offSamples
 *     @offSamples.setter
 *     def offSamples(self, int x): self.ptr.offSamples = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offFBO(self): return self.ptr.offFBO
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offSamples_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offSamples_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3643, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offSamples.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offSamples_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offSamples_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offSamples = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3645
 *     def offSamples(self, int x): self.ptr.offSamples = x
 *     @property
 *     def offFBO(self): return self.ptr.offFBO             # <<<<<<<<<<<<<<
 *     @offFBO.setter
 *     def offFBO(self, unsigned int x): self.ptr.offFBO = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_6offFBO_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_6offFBO_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_6offFBO___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_6offFBO___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->offFBO); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offFBO.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3647
 *     def offFBO(self): return self.ptr.offFBO
 *     @offFBO.setter
 *     def offFBO(self, unsigned int x): self.ptr.offFBO = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offFBO_r(self): return self.ptr.offFBO_r
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_6offFBO_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_6offFBO_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3647, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offFBO.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_6offFBO_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_6offFBO_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offFBO = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3649
 *     def offFBO(self, unsigned int x): self.ptr.offFBO = x
 *     @property
 *     def offFBO_r(self): return self.ptr.offFBO_r             # <<<<<<<<<<<<<<
 *     @offFBO_r.setter
 *     def offFBO_r(self, unsigned int x): self.ptr.offFBO_r = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->offFBO_r); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offFBO_r.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3651
 *     def offFBO_r(self): return self.ptr.offFBO_r
 *     @offFBO_r.setter
 *     def offFBO_r(self, unsigned int x): self.ptr.offFBO_r = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offColor(self): return self.ptr.offColor
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3651, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offFBO_r.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offFBO_r = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3653
 *     def offFBO_r(self, unsigned int x): self.ptr.offFBO_r = x
 *     @property
 *     def offColor(self): return self.ptr.offColor             # <<<<<<<<<<<<<<
 *     @offColor.setter
 *     def offColor(self, unsigned int x): self.ptr.offColor = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offColor_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offColor_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offColor___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offColor___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->offColor); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offColor.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3655
 *     def offColor(self): return self.ptr.offColor
 *     @offColor.setter
 *     def offColor(self, unsigned int x): self.ptr.offColor = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offColor_r(self): return self.ptr.offColor_r
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offColor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offColor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3655, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offColor.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offColor_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8offColor_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offColor = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3657
 *     def offColor(self, unsigned int x): self.ptr.offColor = x
 *     @property
 *     def offColor_r(self): return self.ptr.offColor_r             # <<<<<<<<<<<<<<
 *     @offColor_r.setter
 *     def offColor_r(self, unsigned int x): self.ptr.offColor_r = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offColor_r_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offColor_r_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offColor_r___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offColor_r___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->offColor_r); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offColor_r.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3659
 *     def offColor_r(self): return self.ptr.offColor_r
 *     @offColor_r.setter
 *     def offColor_r(self, unsigned int x): self.ptr.offColor_r = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offDepthStencil(self): return self.ptr.offDepthStencil
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offColor_r_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offColor_r_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3659, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offColor_r.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offColor_r_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10offColor_r_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offColor_r = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3661
 *     def offColor_r(self, unsigned int x): self.ptr.offColor_r = x
 *     @property
 *     def offDepthStencil(self): return self.ptr.offDepthStencil             # <<<<<<<<<<<<<<
 *     @offDepthStencil.setter
 *     def offDepthStencil(self, unsigned int x): self.ptr.offDepthStencil = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->offDepthStencil); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offDepthStencil.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3663
 *     def offDepthStencil(self): return self.ptr.offDepthStencil
 *     @offDepthStencil.setter
 *     def offDepthStencil(self, unsigned int x): self.ptr.offDepthStencil = x             # <<<<<<<<<<<<<<
 *     @property
 *     def offDepthStencil_r(self): return self.ptr.offDepthStencil_r
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3663, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offDepthStencil.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offDepthStencil = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3665
 *     def offDepthStencil(self, unsigned int x): self.ptr.offDepthStencil = x
 *     @property
 *     def offDepthStencil_r(self): return self.ptr.offDepthStencil_r             # <<<<<<<<<<<<<<
 *     @offDepthStencil_r.setter
 *     def offDepthStencil_r(self, unsigned int x): self.ptr.offDepthStencil_r = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->offDepthStencil_r); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offDepthStencil_r.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3667
 *     def offDepthStencil_r(self): return self.ptr.offDepthStencil_r
 *     @offDepthStencil_r.setter
 *     def offDepthStencil_r(self, unsigned int x): self.ptr.offDepthStencil_r = x             # <<<<<<<<<<<<<<
 *     @property
 *     def shadowFBO(self): return self.ptr.shadowFBO
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3667, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.offDepthStencil_r.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->offDepthStencil_r = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3669
 *     def offDepthStencil_r(self, unsigned int x): self.ptr.offDepthStencil_r = x
 *     @property
 *     def shadowFBO(self): return self.ptr.shadowFBO             # <<<<<<<<<<<<<<
 *     @shadowFBO.setter
 *     def shadowFBO(self, unsigned int x): self.ptr.shadowFBO = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->shadowFBO); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowFBO.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3671
 *     def shadowFBO(self): return self.ptr.shadowFBO
 *     @shadowFBO.setter
 *     def shadowFBO(self, unsigned int x): self.ptr.shadowFBO = x             # <<<<<<<<<<<<<<
 *     @property
 *     def shadowTex(self): return self.ptr.shadowTex
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3671, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowFBO.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->shadowFBO = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3673
 *     def shadowFBO(self, unsigned int x): self.ptr.shadowFBO = x
 *     @property
 *     def shadowTex(self): return self.ptr.shadowTex             # <<<<<<<<<<<<<<
 *     @shadowTex.setter
 *     def shadowTex(self, unsigned int x): self.ptr.shadowTex = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowTex_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowTex_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowTex___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowTex___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->shadowTex); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowTex.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3675
 *     def shadowTex(self): return self.ptr.shadowTex
 *     @shadowTex.setter
 *     def shadowTex(self, unsigned int x): self.ptr.shadowTex = x             # <<<<<<<<<<<<<<
 *     @property
 *     def ntexture(self): return self.ptr.ntexture
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowTex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowTex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3675, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.shadowTex.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowTex_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9shadowTex_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->shadowTex = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3677
 *     def shadowTex(self, unsigned int x): self.ptr.shadowTex = x
 *     @property
 *     def ntexture(self): return self.ptr.ntexture             # <<<<<<<<<<<<<<
 *     @ntexture.setter
 *     def ntexture(self, int x): self.ptr.ntexture = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8ntexture_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8ntexture_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8ntexture___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8ntexture___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->ntexture); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.ntexture.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3679
 *     def ntexture(self): return self.ptr.ntexture
 *     @ntexture.setter
 *     def ntexture(self, int x): self.ptr.ntexture = x             # <<<<<<<<<<<<<<
 *     @property
 *     def basePlane(self): return self.ptr.basePlane
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8ntexture_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8ntexture_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3679, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.ntexture.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8ntexture_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8ntexture_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->ntexture = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3681
 *     def ntexture(self, int x): self.ptr.ntexture = x
 *     @property
 *     def basePlane(self): return self.ptr.basePlane             # <<<<<<<<<<<<<<
 *     @basePlane.setter
 *     def basePlane(self, unsigned int x): self.ptr.basePlane = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9basePlane_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9basePlane_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9basePlane___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9basePlane___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->basePlane); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.basePlane.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3683
 *     def basePlane(self): return self.ptr.basePlane
 *     @basePlane.setter
 *     def basePlane(self, unsigned int x): self.ptr.basePlane = x             # <<<<<<<<<<<<<<
 *     @property
 *     def baseMesh(self): return self.ptr.baseMesh
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9basePlane_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9basePlane_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3683, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.basePlane.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9basePlane_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9basePlane_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->basePlane = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3685
 *     def basePlane(self, unsigned int x): self.ptr.basePlane = x
 *     @property
 *     def baseMesh(self): return self.ptr.baseMesh             # <<<<<<<<<<<<<<
 *     @baseMesh.setter
 *     def baseMesh(self, unsigned int x): self.ptr.baseMesh = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8baseMesh_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8baseMesh_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8baseMesh___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8baseMesh___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->baseMesh); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseMesh.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3687
 *     def baseMesh(self): return self.ptr.baseMesh
 *     @baseMesh.setter
 *     def baseMesh(self, unsigned int x): self.ptr.baseMesh = x             # <<<<<<<<<<<<<<
 *     @property
 *     def baseHField(self): return self.ptr.baseHField
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8baseMesh_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8baseMesh_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3687, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseMesh.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8baseMesh_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_8baseMesh_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->baseMesh = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3689
 *     def baseMesh(self, unsigned int x): self.ptr.baseMesh = x
 *     @property
 *     def baseHField(self): return self.ptr.baseHField             # <<<<<<<<<<<<<<
 *     @baseHField.setter
 *     def baseHField(self, unsigned int x): self.ptr.baseHField = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10baseHField_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10baseHField_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10baseHField___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10baseHField___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->baseHField); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseHField.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3691
 *     def baseHField(self): return self.ptr.baseHField
 *     @baseHField.setter
 *     def baseHField(self, unsigned int x): self.ptr.baseHField = x             # <<<<<<<<<<<<<<
 *     @property
 *     def baseBuiltin(self): return self.ptr.baseBuiltin
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10baseHField_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10baseHField_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3691, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseHField.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10baseHField_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10baseHField_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->baseHField = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3693
 *     def baseHField(self, unsigned int x): self.ptr.baseHField = x
 *     @property
 *     def baseBuiltin(self): return self.ptr.baseBuiltin             # <<<<<<<<<<<<<<
 *     @baseBuiltin.setter
 *     def baseBuiltin(self, unsigned int x): self.ptr.baseBuiltin = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->baseBuiltin); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseBuiltin.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3695
 *     def baseBuiltin(self): return self.ptr.baseBuiltin
 *     @baseBuiltin.setter
 *     def baseBuiltin(self, unsigned int x): self.ptr.baseBuiltin = x             # <<<<<<<<<<<<<<
 *     @property
 *     def baseFontNormal(self): return self.ptr.baseFontNormal
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3695, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseBuiltin.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->baseBuiltin = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3697
 *     def baseBuiltin(self, unsigned int x): self.ptr.baseBuiltin = x
 *     @property
 *     def baseFontNormal(self): return self.ptr.baseFontNormal             # <<<<<<<<<<<<<<
 *     @baseFontNormal.setter
 *     def baseFontNormal(self, unsigned int x): self.ptr.baseFontNormal = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->baseFontNormal); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3697, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseFontNormal.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3699
 *     def baseFontNormal(self): return self.ptr.baseFontNormal
 *     @baseFontNormal.setter
 *     def baseFontNormal(self, unsigned int x): self.ptr.baseFontNormal = x             # <<<<<<<<<<<<<<
 *     @property
 *     def baseFontShadow(self): return self.ptr.baseFontShadow
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3699, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseFontNormal.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->baseFontNormal = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3701
 *     def baseFontNormal(self, unsigned int x): self.ptr.baseFontNormal = x
 *     @property
 *     def baseFontShadow(self): return self.ptr.baseFontShadow             # <<<<<<<<<<<<<<
 *     @baseFontShadow.setter
 *     def baseFontShadow(self, unsigned int x): self.ptr.baseFontShadow = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->baseFontShadow); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseFontShadow.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3703
 *     def baseFontShadow(self): return self.ptr.baseFontShadow
 *     @baseFontShadow.setter
 *     def baseFontShadow(self, unsigned int x): self.ptr.baseFontShadow = x             # <<<<<<<<<<<<<<
 *     @property
 *     def baseFontBig(self): return self.ptr.baseFontBig
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3703, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseFontShadow.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->baseFontShadow = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3705
 *     def baseFontShadow(self, unsigned int x): self.ptr.baseFontShadow = x
 *     @property
 *     def baseFontBig(self): return self.ptr.baseFontBig             # <<<<<<<<<<<<<<
 *     @baseFontBig.setter
 *     def baseFontBig(self, unsigned int x): self.ptr.baseFontBig = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->ptr->baseFontBig); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseFontBig.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3707
 *     def baseFontBig(self): return self.ptr.baseFontBig
 *     @baseFontBig.setter
 *     def baseFontBig(self, unsigned int x): self.ptr.baseFontBig = x             # <<<<<<<<<<<<<<
 *     @property
 *     def rangePlane(self): return self.ptr.rangePlane
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  unsigned int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_unsigned_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3707, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.baseFontBig.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((unsigned int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, unsigned int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->baseFontBig = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3709
 *     def baseFontBig(self, unsigned int x): self.ptr.baseFontBig = x
 *     @property
 *     def rangePlane(self): return self.ptr.rangePlane             # <<<<<<<<<<<<<<
 *     @rangePlane.setter
 *     def rangePlane(self, int x): self.ptr.rangePlane = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10rangePlane_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10rangePlane_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10rangePlane___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10rangePlane___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->rangePlane); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangePlane.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3711
 *     def rangePlane(self): return self.ptr.rangePlane
 *     @rangePlane.setter
 *     def rangePlane(self, int x): self.ptr.rangePlane = x             # <<<<<<<<<<<<<<
 *     @property
 *     def rangeMesh(self): return self.ptr.rangeMesh
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10rangePlane_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10rangePlane_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3711, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangePlane.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10rangePlane_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10rangePlane_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->rangePlane = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3713
 *     def rangePlane(self, int x): self.ptr.rangePlane = x
 *     @property
 *     def rangeMesh(self): return self.ptr.rangeMesh             # <<<<<<<<<<<<<<
 *     @rangeMesh.setter
 *     def rangeMesh(self, int x): self.ptr.rangeMesh = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->rangeMesh); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangeMesh.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3715
 *     def rangeMesh(self): return self.ptr.rangeMesh
 *     @rangeMesh.setter
 *     def rangeMesh(self, int x): self.ptr.rangeMesh = x             # <<<<<<<<<<<<<<
 *     @property
 *     def rangeHField(self): return self.ptr.rangeHField
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3715, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangeMesh.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->rangeMesh = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3717
 *     def rangeMesh(self, int x): self.ptr.rangeMesh = x
 *     @property
 *     def rangeHField(self): return self.ptr.rangeHField             # <<<<<<<<<<<<<<
 *     @rangeHField.setter
 *     def rangeHField(self, int x): self.ptr.rangeHField = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11rangeHField_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11rangeHField_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11rangeHField___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11rangeHField___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->rangeHField); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangeHField.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3719
 *     def rangeHField(self): return self.ptr.rangeHField
 *     @rangeHField.setter
 *     def rangeHField(self, int x): self.ptr.rangeHField = x             # <<<<<<<<<<<<<<
 *     @property
 *     def rangeBuiltin(self): return self.ptr.rangeBuiltin
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11rangeHField_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11rangeHField_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3719, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangeHField.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11rangeHField_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11rangeHField_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->rangeHField = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3721
 *     def rangeHField(self, int x): self.ptr.rangeHField = x
 *     @property
 *     def rangeBuiltin(self): return self.ptr.rangeBuiltin             # <<<<<<<<<<<<<<
 *     @rangeBuiltin.setter
 *     def rangeBuiltin(self, int x): self.ptr.rangeBuiltin = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->rangeBuiltin); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangeBuiltin.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3723
 *     def rangeBuiltin(self): return self.ptr.rangeBuiltin
 *     @rangeBuiltin.setter
 *     def rangeBuiltin(self, int x): self.ptr.rangeBuiltin = x             # <<<<<<<<<<<<<<
 *     @property
 *     def rangeFont(self): return self.ptr.rangeFont
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3723, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangeBuiltin.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->rangeBuiltin = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3725
 *     def rangeBuiltin(self, int x): self.ptr.rangeBuiltin = x
 *     @property
 *     def rangeFont(self): return self.ptr.rangeFont             # <<<<<<<<<<<<<<
 *     @rangeFont.setter
 *     def rangeFont(self, int x): self.ptr.rangeFont = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeFont_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeFont_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeFont___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeFont___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->rangeFont); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangeFont.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3727
 *     def rangeFont(self): return self.ptr.rangeFont
 *     @rangeFont.setter
 *     def rangeFont(self, int x): self.ptr.rangeFont = x             # <<<<<<<<<<<<<<
 *     @property
 *     def charHeight(self): return self.ptr.charHeight
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeFont_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeFont_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3727, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.rangeFont.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeFont_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9rangeFont_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->rangeFont = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3729
 *     def rangeFont(self, int x): self.ptr.rangeFont = x
 *     @property
 *     def charHeight(self): return self.ptr.charHeight             # <<<<<<<<<<<<<<
 *     @charHeight.setter
 *     def charHeight(self, int x): self.ptr.charHeight = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10charHeight_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10charHeight_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10charHeight___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10charHeight___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->charHeight); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.charHeight.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3731
 *     def charHeight(self): return self.ptr.charHeight
 *     @charHeight.setter
 *     def charHeight(self, int x): self.ptr.charHeight = x             # <<<<<<<<<<<<<<
 *     @property
 *     def charHeightBig(self): return self.ptr.charHeightBig
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10charHeight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10charHeight_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3731, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.charHeight.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10charHeight_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_10charHeight_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->charHeight = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3733
 *     def charHeight(self, int x): self.ptr.charHeight = x
 *     @property
 *     def charHeightBig(self): return self.ptr.charHeightBig             # <<<<<<<<<<<<<<
 *     @charHeightBig.setter
 *     def charHeightBig(self, int x): self.ptr.charHeightBig = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->charHeightBig); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.charHeightBig.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3735
 *     def charHeightBig(self): return self.ptr.charHeightBig
 *     @charHeightBig.setter
 *     def charHeightBig(self, int x): self.ptr.charHeightBig = x             # <<<<<<<<<<<<<<
 *     @property
 *     def glewInitialized(self): return self.ptr.glewInitialized
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3735, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.charHeightBig.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->charHeightBig = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3737
 *     def charHeightBig(self, int x): self.ptr.charHeightBig = x
 *     @property
 *     def glewInitialized(self): return self.ptr.glewInitialized             # <<<<<<<<<<<<<<
 *     @glewInitialized.setter
 *     def glewInitialized(self, int x): self.ptr.glewInitialized = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->glewInitialized); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.glewInitialized.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3739
 *     def glewInitialized(self): return self.ptr.glewInitialized
 *     @glewInitialized.setter
 *     def glewInitialized(self, int x): self.ptr.glewInitialized = x             # <<<<<<<<<<<<<<
 *     @property
 *     def windowAvailable(self): return self.ptr.windowAvailable
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3739, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.glewInitialized.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->glewInitialized = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3741
 *     def glewInitialized(self, int x): self.ptr.glewInitialized = x
 *     @property
 *     def windowAvailable(self): return self.ptr.windowAvailable             # <<<<<<<<<<<<<<
 *     @windowAvailable.setter
 *     def windowAvailable(self, int x): self.ptr.windowAvailable = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->windowAvailable); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.windowAvailable.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3743
 *     def windowAvailable(self): return self.ptr.windowAvailable
 *     @windowAvailable.setter
 *     def windowAvailable(self, int x): self.ptr.windowAvailable = x             # <<<<<<<<<<<<<<
 *     @property
 *     def windowSamples(self): return self.ptr.windowSamples
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3743, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.windowAvailable.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->windowAvailable = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3745
 *     def windowAvailable(self, int x): self.ptr.windowAvailable = x
 *     @property
 *     def windowSamples(self): return self.ptr.windowSamples             # <<<<<<<<<<<<<<
 *     @windowSamples.setter
 *     def windowSamples(self, int x): self.ptr.windowSamples = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13windowSamples_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13windowSamples_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13windowSamples___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13windowSamples___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->windowSamples); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.windowSamples.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3747
 *     def windowSamples(self): return self.ptr.windowSamples
 *     @windowSamples.setter
 *     def windowSamples(self, int x): self.ptr.windowSamples = x             # <<<<<<<<<<<<<<
 *     @property
 *     def windowStereo(self): return self.ptr.windowStereo
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13windowSamples_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13windowSamples_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3747, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.windowSamples.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13windowSamples_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13windowSamples_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->windowSamples = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3749
 *     def windowSamples(self, int x): self.ptr.windowSamples = x
 *     @property
 *     def windowStereo(self): return self.ptr.windowStereo             # <<<<<<<<<<<<<<
 *     @windowStereo.setter
 *     def windowStereo(self, int x): self.ptr.windowStereo = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12windowStereo_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12windowStereo_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12windowStereo___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12windowStereo___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->windowStereo); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.windowStereo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3751
 *     def windowStereo(self): return self.ptr.windowStereo
 *     @windowStereo.setter
 *     def windowStereo(self, int x): self.ptr.windowStereo = x             # <<<<<<<<<<<<<<
 *     @property
 *     def windowDoublebuffer(self): return self.ptr.windowDoublebuffer
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12windowStereo_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12windowStereo_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3751, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.windowStereo.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12windowStereo_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12windowStereo_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->windowStereo = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3753
 *     def windowStereo(self, int x): self.ptr.windowStereo = x
 *     @property
 *     def windowDoublebuffer(self): return self.ptr.windowDoublebuffer             # <<<<<<<<<<<<<<
 *     @windowDoublebuffer.setter
 *     def windowDoublebuffer(self, int x): self.ptr.windowDoublebuffer = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->windowDoublebuffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.windowDoublebuffer.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3755
 *     def windowDoublebuffer(self): return self.ptr.windowDoublebuffer
 *     @windowDoublebuffer.setter
 *     def windowDoublebuffer(self, int x): self.ptr.windowDoublebuffer = x             # <<<<<<<<<<<<<<
 *     @property
 *     def currentBuffer(self): return self.ptr.currentBuffer
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3755, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.windowDoublebuffer.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->windowDoublebuffer = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3757
 *     def windowDoublebuffer(self, int x): self.ptr.windowDoublebuffer = x
 *     @property
 *     def currentBuffer(self): return self.ptr.currentBuffer             # <<<<<<<<<<<<<<
 *     @currentBuffer.setter
 *     def currentBuffer(self, int x): self.ptr.currentBuffer = x
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ptr->currentBuffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.currentBuffer.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3759
 *     def currentBuffer(self): return self.ptr.currentBuffer
 *     @currentBuffer.setter
 *     def currentBuffer(self, int x): self.ptr.currentBuffer = x             # <<<<<<<<<<<<<<
 *     @property
 *     def textureType(self): return self._textureType
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) {
  int __pyx_v_x;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3759, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.currentBuffer.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((int)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer_2__set__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, int __pyx_v_x) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_v_self->ptr->currentBuffer = __pyx_v_x;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3761
 *     def currentBuffer(self, int x): self.ptr.currentBuffer = x
 *     @property
 *     def textureType(self): return self._textureType             # <<<<<<<<<<<<<<
 *     @property
 *     def texture(self): return self._texture
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11textureType_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11textureType_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11textureType___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_11textureType___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_textureType));
  __pyx_r = ((PyObject *)__pyx_v_self->_textureType);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3763
 *     def textureType(self): return self._textureType
 *     @property
 *     def texture(self): return self._texture             # <<<<<<<<<<<<<<
 *     @property
 *     def charWidth(self): return self._charWidth
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_7texture_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_7texture_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_7texture___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_7texture___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_texture));
  __pyx_r = ((PyObject *)__pyx_v_self->_texture);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3765
 *     def texture(self): return self._texture
 *     @property
 *     def charWidth(self): return self._charWidth             # <<<<<<<<<<<<<<
 *     @property
 *     def charWidthBig(self): return self._charWidthBig
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9charWidth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9charWidth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9charWidth___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_9charWidth___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_charWidth));
  __pyx_r = ((PyObject *)__pyx_v_self->_charWidth);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3767
 *     def charWidth(self): return self._charWidth
 *     @property
 *     def charWidthBig(self): return self._charWidthBig             # <<<<<<<<<<<<<<
 * 
 * cdef PyMjrContext WrapMjrContext(mjrContext* p):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12charWidthBig_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12charWidthBig_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12charWidthBig___get__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_12charWidthBig___get__(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_charWidthBig));
  __pyx_r = ((PyObject *)__pyx_v_self->_charWidthBig);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_2__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12PyMjrContext_4__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12PyMjrContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__82, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.PyMjrContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3769
 *     def charWidthBig(self): return self._charWidthBig
 * 
 * cdef PyMjrContext WrapMjrContext(mjrContext* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjrContext o = PyMjrContext()
 *     o._set(p)
 */

static struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_f_9mujoco_py_4cymj_WrapMjrContext(mjrContext *__pyx_v_p) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_o = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("WrapMjrContext", 0);

  /* "mujoco_py/generated/wrappers.pxi":3770
 * 
 * cdef PyMjrContext WrapMjrContext(mjrContext* p):
 *     cdef PyMjrContext o = PyMjrContext()             # <<<<<<<<<<<<<<
 *     o._set(p)
 *     return o
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_PyMjrContext), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3771
 * cdef PyMjrContext WrapMjrContext(mjrContext* p):
 *     cdef PyMjrContext o = PyMjrContext()
 *     o._set(p)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
  ((struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_o->__pyx_vtab)->_set(__pyx_v_o, __pyx_v_p);

  /* "mujoco_py/generated/wrappers.pxi":3772
 *     cdef PyMjrContext o = PyMjrContext()
 *     o._set(p)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_char_1d(char* a, int shape0):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_o));
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3769
 *     def charWidthBig(self): return self._charWidthBig
 * 
 * cdef PyMjrContext WrapMjrContext(mjrContext* p):             # <<<<<<<<<<<<<<
 *     cdef PyMjrContext o = PyMjrContext()
 *     o._set(p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.WrapMjrContext", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3774
 *     return o
 * 
 * cdef inline np.ndarray _wrap_char_1d(char* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef char[:] b = <char[:shape0]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_char_1d(char *__pyx_v_a, int __pyx_v_shape0) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_char_1d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3775
 * 
 * cdef inline np.ndarray _wrap_char_1d(char* a, int shape0):
 *     if shape0 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef char[:] b = <char[:shape0]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = ((__pyx_v_shape0 == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3776
 * cdef inline np.ndarray _wrap_char_1d(char* a, int shape0):
 *     if shape0 == 0: return None
 *     cdef char[:] b = <char[:shape0]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3776, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_char);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(char), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_char(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3776, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3777
 *     if shape0 == 0: return None
 *     cdef char[:] b = <char[:shape0]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_float_1d(float* a, int shape0):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 1, (PyObject *(*)(char *)) __pyx_memview_get_char, (int (*)(char *, PyObject *)) __pyx_memview_set_char, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3777, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3777, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3777, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3777, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3777, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3777, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3774
 *     return o
 * 
 * cdef inline np.ndarray _wrap_char_1d(char* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef char[:] b = <char[:shape0]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_char_1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3779
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_float_1d(float* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef float[:] b = <float[:shape0]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_float_1d(float *__pyx_v_a, int __pyx_v_shape0) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_float_1d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3780
 * 
 * cdef inline np.ndarray _wrap_float_1d(float* a, int shape0):
 *     if shape0 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef float[:] b = <float[:shape0]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = ((__pyx_v_shape0 == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3781
 * cdef inline np.ndarray _wrap_float_1d(float* a, int shape0):
 *     if shape0 == 0: return None
 *     cdef float[:] b = <float[:shape0]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3781, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_float);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(float), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3781, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3782
 *     if shape0 == 0: return None
 *     cdef float[:] b = <float[:shape0]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_int_1d(int* a, int shape0):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3782, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3782, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3782, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3782, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3779
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_float_1d(float* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef float[:] b = <float[:shape0]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_float_1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3784
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_int_1d(int* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef int[:] b = <int[:shape0]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_int_1d(int *__pyx_v_a, int __pyx_v_shape0) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_int_1d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3785
 * 
 * cdef inline np.ndarray _wrap_int_1d(int* a, int shape0):
 *     if shape0 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef int[:] b = <int[:shape0]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = ((__pyx_v_shape0 == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3786
 * cdef inline np.ndarray _wrap_int_1d(int* a, int shape0):
 *     if shape0 == 0: return None
 *     cdef int[:] b = <int[:shape0]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3786, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_int);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(int), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_int(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3786, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3787
 *     if shape0 == 0: return None
 *     cdef int[:] b = <int[:shape0]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_mjtByte_1d(mjtByte* a, int shape0):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3787, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3787, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3787, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3787, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3787, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3787, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3784
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_int_1d(int* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef int[:] b = <int[:shape0]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_int_1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3789
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_mjtByte_1d(mjtByte* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef mjtByte[:] b = <mjtByte[:shape0]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_1d(mjtByte *__pyx_v_a, int __pyx_v_shape0) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_mjtByte_1d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3790
 * 
 * cdef inline np.ndarray _wrap_mjtByte_1d(mjtByte* a, int shape0):
 *     if shape0 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef mjtByte[:] b = <mjtByte[:shape0]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = ((__pyx_v_shape0 == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3791
 * cdef inline np.ndarray _wrap_mjtByte_1d(mjtByte* a, int shape0):
 *     if shape0 == 0: return None
 *     cdef mjtByte[:] b = <mjtByte[:shape0]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3791, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn_mjtByte);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(mjtByte), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_mjtByte(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3791, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3792
 *     if shape0 == 0: return None
 *     cdef mjtByte[:] b = <mjtByte[:shape0]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_mjtNum_1d(mjtNum* a, int shape0):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn_mjtByte, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_mjtByte, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3792, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3792, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3792, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3792, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3792, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3792, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3789
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_mjtByte_1d(mjtByte* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef mjtByte[:] b = <mjtByte[:shape0]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_mjtByte_1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3794
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_mjtNum_1d(mjtNum* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef mjtNum[:] b = <mjtNum[:shape0]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_1d(mjtNum *__pyx_v_a, int __pyx_v_shape0) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_mjtNum_1d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3795
 * 
 * cdef inline np.ndarray _wrap_mjtNum_1d(mjtNum* a, int shape0):
 *     if shape0 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef mjtNum[:] b = <mjtNum[:shape0]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = ((__pyx_v_shape0 == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3796
 * cdef inline np.ndarray _wrap_mjtNum_1d(mjtNum* a, int shape0):
 *     if shape0 == 0: return None
 *     cdef mjtNum[:] b = <mjtNum[:shape0]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3796, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn_mjtNum);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(mjtNum), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_mjtNum(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3796, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3797
 *     if shape0 == 0: return None
 *     cdef mjtNum[:] b = <mjtNum[:shape0]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_unsigned_int_1d(unsigned int* a, int shape0):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn_mjtNum, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_mjtNum, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3797, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3797, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3797, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3797, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3797, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3797, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3794
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_mjtNum_1d(mjtNum* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef mjtNum[:] b = <mjtNum[:shape0]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_mjtNum_1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3799
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_unsigned_int_1d(unsigned int* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef unsigned int[:] b = <unsigned int[:shape0]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_unsigned_int_1d(unsigned int *__pyx_v_a, int __pyx_v_shape0) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_unsigned_int_1d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3800
 * 
 * cdef inline np.ndarray _wrap_unsigned_int_1d(unsigned int* a, int shape0):
 *     if shape0 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef unsigned int[:] b = <unsigned int[:shape0]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = ((__pyx_v_shape0 == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3801
 * cdef inline np.ndarray _wrap_unsigned_int_1d(unsigned int* a, int shape0):
 *     if shape0 == 0: return None
 *     cdef unsigned int[:] b = <unsigned int[:shape0]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3801, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_unsigned_int);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(unsigned int), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_unsigned_int(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3801, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3802
 *     if shape0 == 0: return None
 *     cdef unsigned int[:] b = <unsigned int[:shape0]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_char_2d(char* a, int shape0, int shape1):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 1, (PyObject *(*)(char *)) __pyx_memview_get_unsigned_int, (int (*)(char *, PyObject *)) __pyx_memview_set_unsigned_int, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3802, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3802, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3802, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3802, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3799
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_unsigned_int_1d(unsigned int* a, int shape0):             # <<<<<<<<<<<<<<
 *     if shape0 == 0: return None
 *     cdef unsigned int[:] b = <unsigned int[:shape0]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_unsigned_int_1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3804
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_char_2d(char* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef char[:,:] b = <char[:shape0,:shape1]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_char_2d(char *__pyx_v_a, int __pyx_v_shape0, int __pyx_v_shape1) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_char_2d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3805
 * 
 * cdef inline np.ndarray _wrap_char_2d(char* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef char[:,:] b = <char[:shape0,:shape1]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = (((__pyx_v_shape0 * __pyx_v_shape1) == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3806
 * cdef inline np.ndarray _wrap_char_2d(char* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None
 *     cdef char[:,:] b = <char[:shape0,:shape1]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3806, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_char);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0), ((Py_ssize_t)__pyx_v_shape1));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(char), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_char(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3806, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3807
 *     if shape0 * shape1 == 0: return None
 *     cdef char[:,:] b = <char[:shape0,:shape1]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_float_2d(float* a, int shape0, int shape1):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 2, (PyObject *(*)(char *)) __pyx_memview_get_char, (int (*)(char *, PyObject *)) __pyx_memview_set_char, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3807, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3807, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3807, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3807, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3807, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3807, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3804
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_char_2d(char* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef char[:,:] b = <char[:shape0,:shape1]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_char_2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3809
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_float_2d(float* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef float[:,:] b = <float[:shape0,:shape1]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_float_2d(float *__pyx_v_a, int __pyx_v_shape0, int __pyx_v_shape1) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_float_2d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3810
 * 
 * cdef inline np.ndarray _wrap_float_2d(float* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef float[:,:] b = <float[:shape0,:shape1]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = (((__pyx_v_shape0 * __pyx_v_shape1) == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3811
 * cdef inline np.ndarray _wrap_float_2d(float* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None
 *     cdef float[:,:] b = <float[:shape0,:shape1]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3811, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_float);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0), ((Py_ssize_t)__pyx_v_shape1));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(float), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_float(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3811, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3812
 *     if shape0 * shape1 == 0: return None
 *     cdef float[:,:] b = <float[:shape0,:shape1]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_int_2d(int* a, int shape0, int shape1):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 2, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3812, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3812, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3812, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3812, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3812, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3812, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3809
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_float_2d(float* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef float[:,:] b = <float[:shape0,:shape1]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_float_2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3814
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_int_2d(int* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef int[:,:] b = <int[:shape0,:shape1]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_int_2d(int *__pyx_v_a, int __pyx_v_shape0, int __pyx_v_shape1) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_int_2d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3815
 * 
 * cdef inline np.ndarray _wrap_int_2d(int* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef int[:,:] b = <int[:shape0,:shape1]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = (((__pyx_v_shape0 * __pyx_v_shape1) == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3816
 * cdef inline np.ndarray _wrap_int_2d(int* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None
 *     cdef int[:,:] b = <int[:shape0,:shape1]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3816, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_int);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0), ((Py_ssize_t)__pyx_v_shape1));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(int), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3816, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3817
 *     if shape0 * shape1 == 0: return None
 *     cdef int[:,:] b = <int[:shape0,:shape1]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_mjtByte_2d(mjtByte* a, int shape0, int shape1):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3817, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3817, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3817, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3817, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3817, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3817, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3814
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_int_2d(int* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef int[:,:] b = <int[:shape0,:shape1]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_int_2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3819
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_mjtByte_2d(mjtByte* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef mjtByte[:,:] b = <mjtByte[:shape0,:shape1]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_mjtByte_2d(mjtByte *__pyx_v_a, int __pyx_v_shape0, int __pyx_v_shape1) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_mjtByte_2d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3820
 * 
 * cdef inline np.ndarray _wrap_mjtByte_2d(mjtByte* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef mjtByte[:,:] b = <mjtByte[:shape0,:shape1]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = (((__pyx_v_shape0 * __pyx_v_shape1) == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3821
 * cdef inline np.ndarray _wrap_mjtByte_2d(mjtByte* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None
 *     cdef mjtByte[:,:] b = <mjtByte[:shape0,:shape1]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3821, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn_mjtByte);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0), ((Py_ssize_t)__pyx_v_shape1));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(mjtByte), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_mjtByte(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3821, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3822
 *     if shape0 * shape1 == 0: return None
 *     cdef mjtByte[:,:] b = <mjtByte[:shape0,:shape1]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline np.ndarray _wrap_mjtNum_2d(mjtNum* a, int shape0, int shape1):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn_mjtByte, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_mjtByte, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3822, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3822, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3822, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3822, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3822, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3822, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3819
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_mjtByte_2d(mjtByte* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef mjtByte[:,:] b = <mjtByte[:shape0,:shape1]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_mjtByte_2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3824
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_mjtNum_2d(mjtNum* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef mjtNum[:,:] b = <mjtNum[:shape0,:shape1]> a
 */

static CYTHON_INLINE PyArrayObject *__pyx_f_9mujoco_py_4cymj__wrap_mjtNum_2d(mjtNum *__pyx_v_a, int __pyx_v_shape0, int __pyx_v_shape1) {
  __Pyx_memviewslice __pyx_v_b = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  struct __pyx_array_obj *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_wrap_mjtNum_2d", 0);

  /* "mujoco_py/generated/wrappers.pxi":3825
 * 
 * cdef inline np.ndarray _wrap_mjtNum_2d(mjtNum* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None             # <<<<<<<<<<<<<<
 *     cdef mjtNum[:,:] b = <mjtNum[:shape0,:shape1]> a
 *     return np.asarray(b)
 */
  __pyx_t_1 = (((__pyx_v_shape0 * __pyx_v_shape1) == 0) != 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((PyArrayObject *)Py_None);
    goto __pyx_L0;
  }

  /* "mujoco_py/generated/wrappers.pxi":3826
 * cdef inline np.ndarray _wrap_mjtNum_2d(mjtNum* a, int shape0, int shape1):
 *     if shape0 * shape1 == 0: return None
 *     cdef mjtNum[:,:] b = <mjtNum[:shape0,:shape1]> a             # <<<<<<<<<<<<<<
 *     return np.asarray(b)
 * 
 */
  if (!__pyx_v_a) {
    PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
    __PYX_ERR(3, 3826, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn_mjtNum);
  __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_shape0), ((Py_ssize_t)__pyx_v_shape1));
  if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(3, 3826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(mjtNum), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_v_a);
  if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_mjtNum(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 3826, __pyx_L1_error)
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_b = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;

  /* "mujoco_py/generated/wrappers.pxi":3827
 *     if shape0 * shape1 == 0: return None
 *     cdef mjtNum[:,:] b = <mjtNum[:shape0,:shape1]> a
 *     return np.asarray(b)             # <<<<<<<<<<<<<<
 * 
 * def _mj_activate(str filename):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 3827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_b, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn_mjtNum, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_mjtNum, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3827, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3827, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3827, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 3827, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3827, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(3, 3827, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3824
 *     return np.asarray(b)
 * 
 * cdef inline np.ndarray _wrap_mjtNum_2d(mjtNum* a, int shape0, int shape1):             # <<<<<<<<<<<<<<
 *     if shape0 * shape1 == 0: return None
 *     cdef mjtNum[:,:] b = <mjtNum[:shape0,:shape1]> a
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(((PyObject *)__pyx_t_2));
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj._wrap_mjtNum_2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_b, 1);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3829
 *     return np.asarray(b)
 * 
 * def _mj_activate(str filename):             # <<<<<<<<<<<<<<
 *     return mj_activate(filename.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_1_mj_activate(PyObject *__pyx_self, PyObject *__pyx_v_filename); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_1_mj_activate = {"_mj_activate", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_1_mj_activate, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_1_mj_activate(PyObject *__pyx_self, PyObject *__pyx_v_filename) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_activate (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3829, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj__mj_activate(__pyx_self, ((PyObject*)__pyx_v_filename));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj__mj_activate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mj_activate", 0);

  /* "mujoco_py/generated/wrappers.pxi":3830
 * 
 * def _mj_activate(str filename):
 *     return mj_activate(filename.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mj_deactivate():
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3830, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3830, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_int(mj_activate(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3829
 *     return np.asarray(b)
 * 
 * def _mj_activate(str filename):             # <<<<<<<<<<<<<<
 *     return mj_activate(filename.encode())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_activate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3832
 *     return mj_activate(filename.encode())
 * 
 * def _mj_deactivate():             # <<<<<<<<<<<<<<
 *     mj_deactivate()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_3_mj_deactivate(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_3_mj_deactivate = {"_mj_deactivate", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_3_mj_deactivate, METH_NOARGS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_3_mj_deactivate(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_deactivate (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_2_mj_deactivate(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_2_mj_deactivate(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_deactivate", 0);

  /* "mujoco_py/generated/wrappers.pxi":3833
 * 
 * def _mj_deactivate():
 *     mj_deactivate()             # <<<<<<<<<<<<<<
 * 
 * def _mj_certQuestion(np.ndarray[np.float64_t, mode="c", ndim=1] question):
 */
  mj_deactivate();

  /* "mujoco_py/generated/wrappers.pxi":3832
 *     return mj_activate(filename.encode())
 * 
 * def _mj_deactivate():             # <<<<<<<<<<<<<<
 *     mj_deactivate()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3835
 *     mj_deactivate()
 * 
 * def _mj_certQuestion(np.ndarray[np.float64_t, mode="c", ndim=1] question):             # <<<<<<<<<<<<<<
 *     mj_certQuestion(&question[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5_mj_certQuestion(PyObject *__pyx_self, PyObject *__pyx_v_question); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_5_mj_certQuestion = {"_mj_certQuestion", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5_mj_certQuestion, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_5_mj_certQuestion(PyObject *__pyx_self, PyObject *__pyx_v_question) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_certQuestion (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_question), __pyx_ptype_5numpy_ndarray, 1, "question", 0))) __PYX_ERR(3, 3835, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_4_mj_certQuestion(__pyx_self, ((PyArrayObject *)__pyx_v_question));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_4_mj_certQuestion(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_question) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_question;
  __Pyx_Buffer __pyx_pybuffer_question;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mj_certQuestion", 0);
  __pyx_pybuffer_question.pybuffer.buf = NULL;
  __pyx_pybuffer_question.refcount = 0;
  __pyx_pybuffernd_question.data = NULL;
  __pyx_pybuffernd_question.rcbuffer = &__pyx_pybuffer_question;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_question.rcbuffer->pybuffer, (PyObject*)__pyx_v_question, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 3835, __pyx_L1_error)
  }
  __pyx_pybuffernd_question.diminfo[0].strides = __pyx_pybuffernd_question.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_question.diminfo[0].shape = __pyx_pybuffernd_question.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":3836
 * 
 * def _mj_certQuestion(np.ndarray[np.float64_t, mode="c", ndim=1] question):
 *     mj_certQuestion(&question[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_certAnswer(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_question.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_question.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 3836, __pyx_L1_error)
  }
  mj_certQuestion((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_question.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_question.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":3835
 *     mj_deactivate()
 * 
 * def _mj_certQuestion(np.ndarray[np.float64_t, mode="c", ndim=1] question):             # <<<<<<<<<<<<<<
 *     mj_certQuestion(&question[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_question.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_certQuestion", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_question.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3838
 *     mj_certQuestion(&question[0])
 * 
 * def _mj_certAnswer(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):             # <<<<<<<<<<<<<<
 *     mj_certAnswer(&question[0], &answer[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_7_mj_certAnswer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_7_mj_certAnswer = {"_mj_certAnswer", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_7_mj_certAnswer, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_7_mj_certAnswer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_question = 0;
  PyArrayObject *__pyx_v_answer = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_certAnswer (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_question,&__pyx_n_s_answer,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_question)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_answer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_certAnswer", 1, 2, 2, 1); __PYX_ERR(3, 3838, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_certAnswer") < 0)) __PYX_ERR(3, 3838, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_question = ((PyArrayObject *)values[0]);
    __pyx_v_answer = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_certAnswer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3838, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_certAnswer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_question), __pyx_ptype_5numpy_ndarray, 1, "question", 0))) __PYX_ERR(3, 3838, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_answer), __pyx_ptype_5numpy_ndarray, 1, "answer", 0))) __PYX_ERR(3, 3838, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_6_mj_certAnswer(__pyx_self, __pyx_v_question, __pyx_v_answer);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_6_mj_certAnswer(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_question, PyArrayObject *__pyx_v_answer) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_answer;
  __Pyx_Buffer __pyx_pybuffer_answer;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_question;
  __Pyx_Buffer __pyx_pybuffer_question;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_certAnswer", 0);
  __pyx_pybuffer_question.pybuffer.buf = NULL;
  __pyx_pybuffer_question.refcount = 0;
  __pyx_pybuffernd_question.data = NULL;
  __pyx_pybuffernd_question.rcbuffer = &__pyx_pybuffer_question;
  __pyx_pybuffer_answer.pybuffer.buf = NULL;
  __pyx_pybuffer_answer.refcount = 0;
  __pyx_pybuffernd_answer.data = NULL;
  __pyx_pybuffernd_answer.rcbuffer = &__pyx_pybuffer_answer;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_question.rcbuffer->pybuffer, (PyObject*)__pyx_v_question, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 3838, __pyx_L1_error)
  }
  __pyx_pybuffernd_question.diminfo[0].strides = __pyx_pybuffernd_question.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_question.diminfo[0].shape = __pyx_pybuffernd_question.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_answer.rcbuffer->pybuffer, (PyObject*)__pyx_v_answer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 3838, __pyx_L1_error)
  }
  __pyx_pybuffernd_answer.diminfo[0].strides = __pyx_pybuffernd_answer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_answer.diminfo[0].shape = __pyx_pybuffernd_answer.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":3839
 * 
 * def _mj_certAnswer(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):
 *     mj_certAnswer(&question[0], &answer[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_certCheck(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_question.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_question.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 3839, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_answer.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_answer.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 3839, __pyx_L1_error)
  }
  mj_certAnswer((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_question.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_question.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_answer.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_answer.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":3838
 *     mj_certQuestion(&question[0])
 * 
 * def _mj_certAnswer(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):             # <<<<<<<<<<<<<<
 *     mj_certAnswer(&question[0], &answer[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_answer.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_question.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_certAnswer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_answer.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_question.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3841
 *     mj_certAnswer(&question[0], &answer[0])
 * 
 * def _mj_certCheck(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):             # <<<<<<<<<<<<<<
 *     return mj_certCheck(&question[0], &answer[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_9_mj_certCheck(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_9_mj_certCheck = {"_mj_certCheck", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9_mj_certCheck, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_9_mj_certCheck(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_question = 0;
  PyArrayObject *__pyx_v_answer = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_certCheck (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_question,&__pyx_n_s_answer,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_question)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_answer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_certCheck", 1, 2, 2, 1); __PYX_ERR(3, 3841, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_certCheck") < 0)) __PYX_ERR(3, 3841, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_question = ((PyArrayObject *)values[0]);
    __pyx_v_answer = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_certCheck", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3841, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_certCheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_question), __pyx_ptype_5numpy_ndarray, 1, "question", 0))) __PYX_ERR(3, 3841, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_answer), __pyx_ptype_5numpy_ndarray, 1, "answer", 0))) __PYX_ERR(3, 3841, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_8_mj_certCheck(__pyx_self, __pyx_v_question, __pyx_v_answer);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_8_mj_certCheck(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_question, PyArrayObject *__pyx_v_answer) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_answer;
  __Pyx_Buffer __pyx_pybuffer_answer;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_question;
  __Pyx_Buffer __pyx_pybuffer_question;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_mj_certCheck", 0);
  __pyx_pybuffer_question.pybuffer.buf = NULL;
  __pyx_pybuffer_question.refcount = 0;
  __pyx_pybuffernd_question.data = NULL;
  __pyx_pybuffernd_question.rcbuffer = &__pyx_pybuffer_question;
  __pyx_pybuffer_answer.pybuffer.buf = NULL;
  __pyx_pybuffer_answer.refcount = 0;
  __pyx_pybuffernd_answer.data = NULL;
  __pyx_pybuffernd_answer.rcbuffer = &__pyx_pybuffer_answer;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_question.rcbuffer->pybuffer, (PyObject*)__pyx_v_question, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 3841, __pyx_L1_error)
  }
  __pyx_pybuffernd_question.diminfo[0].strides = __pyx_pybuffernd_question.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_question.diminfo[0].shape = __pyx_pybuffernd_question.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_answer.rcbuffer->pybuffer, (PyObject*)__pyx_v_answer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 3841, __pyx_L1_error)
  }
  __pyx_pybuffernd_answer.diminfo[0].strides = __pyx_pybuffernd_answer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_answer.diminfo[0].shape = __pyx_pybuffernd_answer.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":3842
 * 
 * def _mj_certCheck(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):
 *     return mj_certCheck(&question[0], &answer[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_defaultVFS(PyMjVFS vfs):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_question.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_question.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 3842, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_answer.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_answer.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 3842, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_From_int(mj_certCheck((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_question.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_question.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_answer.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_answer.diminfo[0].strides))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3842, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3841
 *     mj_certAnswer(&question[0], &answer[0])
 * 
 * def _mj_certCheck(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):             # <<<<<<<<<<<<<<
 *     return mj_certCheck(&question[0], &answer[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_answer.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_question.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_certCheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_answer.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_question.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3844
 *     return mj_certCheck(&question[0], &answer[0])
 * 
 * def _mj_defaultVFS(PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     mj_defaultVFS(vfs.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11_mj_defaultVFS(PyObject *__pyx_self, PyObject *__pyx_v_vfs); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_11_mj_defaultVFS = {"_mj_defaultVFS", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11_mj_defaultVFS, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_11_mj_defaultVFS(PyObject *__pyx_self, PyObject *__pyx_v_vfs) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_defaultVFS (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vfs), __pyx_ptype_9mujoco_py_4cymj_PyMjVFS, 1, "vfs", 0))) __PYX_ERR(3, 3844, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10_mj_defaultVFS(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_vfs));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10_mj_defaultVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_defaultVFS", 0);

  /* "mujoco_py/generated/wrappers.pxi":3845
 * 
 * def _mj_defaultVFS(PyMjVFS vfs):
 *     mj_defaultVFS(vfs.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_addFileVFS(PyMjVFS vfs, str directory, str filename):
 */
  mj_defaultVFS(__pyx_v_vfs->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3844
 *     return mj_certCheck(&question[0], &answer[0])
 * 
 * def _mj_defaultVFS(PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     mj_defaultVFS(vfs.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3847
 *     mj_defaultVFS(vfs.ptr)
 * 
 * def _mj_addFileVFS(PyMjVFS vfs, str directory, str filename):             # <<<<<<<<<<<<<<
 *     return mj_addFileVFS(vfs.ptr, directory.encode(), filename.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13_mj_addFileVFS(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_13_mj_addFileVFS = {"_mj_addFileVFS", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_13_mj_addFileVFS, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_13_mj_addFileVFS(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs = 0;
  PyObject *__pyx_v_directory = 0;
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_addFileVFS (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vfs,&__pyx_n_s_directory,&__pyx_n_s_filename,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vfs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_directory)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_addFileVFS", 1, 3, 3, 1); __PYX_ERR(3, 3847, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_addFileVFS", 1, 3, 3, 2); __PYX_ERR(3, 3847, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_addFileVFS") < 0)) __PYX_ERR(3, 3847, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_vfs = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)values[0]);
    __pyx_v_directory = ((PyObject*)values[1]);
    __pyx_v_filename = ((PyObject*)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_addFileVFS", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3847, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_addFileVFS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vfs), __pyx_ptype_9mujoco_py_4cymj_PyMjVFS, 1, "vfs", 0))) __PYX_ERR(3, 3847, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_directory), (&PyUnicode_Type), 1, "directory", 1))) __PYX_ERR(3, 3847, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3847, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_12_mj_addFileVFS(__pyx_self, __pyx_v_vfs, __pyx_v_directory, __pyx_v_filename);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_12_mj_addFileVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_directory, PyObject *__pyx_v_filename) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char const *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_mj_addFileVFS", 0);

  /* "mujoco_py/generated/wrappers.pxi":3848
 * 
 * def _mj_addFileVFS(PyMjVFS vfs, str directory, str filename):
 *     return mj_addFileVFS(vfs.ptr, directory.encode(), filename.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mj_makeEmptyFileVFS(PyMjVFS vfs, str filename, int filesize):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_directory == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3848, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_directory, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3848, __pyx_L1_error)
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3848, __pyx_L1_error)
  }
  __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 3848, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyInt_From_int(mj_addFileVFS(__pyx_v_vfs->ptr, __pyx_t_2, __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 3848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3847
 *     mj_defaultVFS(vfs.ptr)
 * 
 * def _mj_addFileVFS(PyMjVFS vfs, str directory, str filename):             # <<<<<<<<<<<<<<
 *     return mj_addFileVFS(vfs.ptr, directory.encode(), filename.encode())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_addFileVFS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3850
 *     return mj_addFileVFS(vfs.ptr, directory.encode(), filename.encode())
 * 
 * def _mj_makeEmptyFileVFS(PyMjVFS vfs, str filename, int filesize):             # <<<<<<<<<<<<<<
 *     return mj_makeEmptyFileVFS(vfs.ptr, filename.encode(), filesize)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15_mj_makeEmptyFileVFS(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15_mj_makeEmptyFileVFS = {"_mj_makeEmptyFileVFS", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15_mj_makeEmptyFileVFS, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15_mj_makeEmptyFileVFS(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs = 0;
  PyObject *__pyx_v_filename = 0;
  int __pyx_v_filesize;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_makeEmptyFileVFS (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vfs,&__pyx_n_s_filename,&__pyx_n_s_filesize,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vfs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_makeEmptyFileVFS", 1, 3, 3, 1); __PYX_ERR(3, 3850, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filesize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_makeEmptyFileVFS", 1, 3, 3, 2); __PYX_ERR(3, 3850, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_makeEmptyFileVFS") < 0)) __PYX_ERR(3, 3850, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_vfs = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)values[0]);
    __pyx_v_filename = ((PyObject*)values[1]);
    __pyx_v_filesize = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_filesize == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3850, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_makeEmptyFileVFS", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3850, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_makeEmptyFileVFS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vfs), __pyx_ptype_9mujoco_py_4cymj_PyMjVFS, 1, "vfs", 0))) __PYX_ERR(3, 3850, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3850, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_14_mj_makeEmptyFileVFS(__pyx_self, __pyx_v_vfs, __pyx_v_filename, __pyx_v_filesize);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_14_mj_makeEmptyFileVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_filename, int __pyx_v_filesize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mj_makeEmptyFileVFS", 0);

  /* "mujoco_py/generated/wrappers.pxi":3851
 * 
 * def _mj_makeEmptyFileVFS(PyMjVFS vfs, str filename, int filesize):
 *     return mj_makeEmptyFileVFS(vfs.ptr, filename.encode(), filesize)             # <<<<<<<<<<<<<<
 * 
 * def _mj_findFileVFS(PyMjVFS vfs, str filename):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3851, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3851, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_int(mj_makeEmptyFileVFS(__pyx_v_vfs->ptr, __pyx_t_2, __pyx_v_filesize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3850
 *     return mj_addFileVFS(vfs.ptr, directory.encode(), filename.encode())
 * 
 * def _mj_makeEmptyFileVFS(PyMjVFS vfs, str filename, int filesize):             # <<<<<<<<<<<<<<
 *     return mj_makeEmptyFileVFS(vfs.ptr, filename.encode(), filesize)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_makeEmptyFileVFS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3853
 *     return mj_makeEmptyFileVFS(vfs.ptr, filename.encode(), filesize)
 * 
 * def _mj_findFileVFS(PyMjVFS vfs, str filename):             # <<<<<<<<<<<<<<
 *     return mj_findFileVFS(vfs.ptr, filename.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_17_mj_findFileVFS(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_17_mj_findFileVFS = {"_mj_findFileVFS", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_17_mj_findFileVFS, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_17_mj_findFileVFS(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs = 0;
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_findFileVFS (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vfs,&__pyx_n_s_filename,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vfs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_findFileVFS", 1, 2, 2, 1); __PYX_ERR(3, 3853, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_findFileVFS") < 0)) __PYX_ERR(3, 3853, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_vfs = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)values[0]);
    __pyx_v_filename = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_findFileVFS", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3853, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_findFileVFS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vfs), __pyx_ptype_9mujoco_py_4cymj_PyMjVFS, 1, "vfs", 0))) __PYX_ERR(3, 3853, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3853, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_16_mj_findFileVFS(__pyx_self, __pyx_v_vfs, __pyx_v_filename);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_16_mj_findFileVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_filename) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mj_findFileVFS", 0);

  /* "mujoco_py/generated/wrappers.pxi":3854
 * 
 * def _mj_findFileVFS(PyMjVFS vfs, str filename):
 *     return mj_findFileVFS(vfs.ptr, filename.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mj_deleteFileVFS(PyMjVFS vfs, str filename):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3854, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3854, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_int(mj_findFileVFS(__pyx_v_vfs->ptr, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3853
 *     return mj_makeEmptyFileVFS(vfs.ptr, filename.encode(), filesize)
 * 
 * def _mj_findFileVFS(PyMjVFS vfs, str filename):             # <<<<<<<<<<<<<<
 *     return mj_findFileVFS(vfs.ptr, filename.encode())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_findFileVFS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3856
 *     return mj_findFileVFS(vfs.ptr, filename.encode())
 * 
 * def _mj_deleteFileVFS(PyMjVFS vfs, str filename):             # <<<<<<<<<<<<<<
 *     return mj_deleteFileVFS(vfs.ptr, filename.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_19_mj_deleteFileVFS(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_19_mj_deleteFileVFS = {"_mj_deleteFileVFS", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_19_mj_deleteFileVFS, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_19_mj_deleteFileVFS(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs = 0;
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_deleteFileVFS (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vfs,&__pyx_n_s_filename,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vfs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_deleteFileVFS", 1, 2, 2, 1); __PYX_ERR(3, 3856, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_deleteFileVFS") < 0)) __PYX_ERR(3, 3856, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_vfs = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)values[0]);
    __pyx_v_filename = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_deleteFileVFS", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3856, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_deleteFileVFS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vfs), __pyx_ptype_9mujoco_py_4cymj_PyMjVFS, 1, "vfs", 0))) __PYX_ERR(3, 3856, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3856, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_18_mj_deleteFileVFS(__pyx_self, __pyx_v_vfs, __pyx_v_filename);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_18_mj_deleteFileVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_filename) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mj_deleteFileVFS", 0);

  /* "mujoco_py/generated/wrappers.pxi":3857
 * 
 * def _mj_deleteFileVFS(PyMjVFS vfs, str filename):
 *     return mj_deleteFileVFS(vfs.ptr, filename.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mj_deleteVFS(PyMjVFS vfs):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3857, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3857, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_int(mj_deleteFileVFS(__pyx_v_vfs->ptr, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3856
 *     return mj_findFileVFS(vfs.ptr, filename.encode())
 * 
 * def _mj_deleteFileVFS(PyMjVFS vfs, str filename):             # <<<<<<<<<<<<<<
 *     return mj_deleteFileVFS(vfs.ptr, filename.encode())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_deleteFileVFS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3859
 *     return mj_deleteFileVFS(vfs.ptr, filename.encode())
 * 
 * def _mj_deleteVFS(PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     mj_deleteVFS(vfs.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_21_mj_deleteVFS(PyObject *__pyx_self, PyObject *__pyx_v_vfs); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_21_mj_deleteVFS = {"_mj_deleteVFS", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_21_mj_deleteVFS, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_21_mj_deleteVFS(PyObject *__pyx_self, PyObject *__pyx_v_vfs) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_deleteVFS (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vfs), __pyx_ptype_9mujoco_py_4cymj_PyMjVFS, 1, "vfs", 0))) __PYX_ERR(3, 3859, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_20_mj_deleteVFS(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)__pyx_v_vfs));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_20_mj_deleteVFS(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_deleteVFS", 0);

  /* "mujoco_py/generated/wrappers.pxi":3860
 * 
 * def _mj_deleteVFS(PyMjVFS vfs):
 *     mj_deleteVFS(vfs.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_loadXML(str filename, PyMjVFS vfs, str error, int error_sz):
 */
  mj_deleteVFS(__pyx_v_vfs->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3859
 *     return mj_deleteFileVFS(vfs.ptr, filename.encode())
 * 
 * def _mj_deleteVFS(PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     mj_deleteVFS(vfs.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3862
 *     mj_deleteVFS(vfs.ptr)
 * 
 * def _mj_loadXML(str filename, PyMjVFS vfs, str error, int error_sz):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_loadXML(filename.encode(), vfs.ptr, error.encode(), error_sz))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_23_mj_loadXML(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_23_mj_loadXML = {"_mj_loadXML", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_23_mj_loadXML, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_23_mj_loadXML(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filename = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs = 0;
  PyObject *__pyx_v_error = 0;
  int __pyx_v_error_sz;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_loadXML (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_vfs,&__pyx_n_s_error,&__pyx_n_s_error_sz,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vfs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_loadXML", 1, 4, 4, 1); __PYX_ERR(3, 3862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_loadXML", 1, 4, 4, 2); __PYX_ERR(3, 3862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_error_sz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_loadXML", 1, 4, 4, 3); __PYX_ERR(3, 3862, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_loadXML") < 0)) __PYX_ERR(3, 3862, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_filename = ((PyObject*)values[0]);
    __pyx_v_vfs = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)values[1]);
    __pyx_v_error = ((PyObject*)values[2]);
    __pyx_v_error_sz = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_error_sz == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3862, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_loadXML", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3862, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_loadXML", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3862, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vfs), __pyx_ptype_9mujoco_py_4cymj_PyMjVFS, 1, "vfs", 0))) __PYX_ERR(3, 3862, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_error), (&PyUnicode_Type), 1, "error", 1))) __PYX_ERR(3, 3862, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_22_mj_loadXML(__pyx_self, __pyx_v_filename, __pyx_v_vfs, __pyx_v_error, __pyx_v_error_sz);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_22_mj_loadXML(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs, PyObject *__pyx_v_error, int __pyx_v_error_sz) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_mj_loadXML", 0);

  /* "mujoco_py/generated/wrappers.pxi":3863
 * 
 * def _mj_loadXML(str filename, PyMjVFS vfs, str error, int error_sz):
 *     return WrapMjModel(mj_loadXML(filename.encode(), vfs.ptr, error.encode(), error_sz))             # <<<<<<<<<<<<<<
 * 
 * def _mj_saveLastXML(str filename, PyMjModel m, str error, int error_sz):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3863, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3863, __pyx_L1_error)
  if (unlikely(__pyx_v_error == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3863, __pyx_L1_error)
  }
  __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_error, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 3863, __pyx_L1_error)
  __pyx_t_5 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjModel(mj_loadXML(__pyx_t_2, __pyx_v_vfs->ptr, __pyx_t_4, __pyx_v_error_sz))); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 3863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3862
 *     mj_deleteVFS(vfs.ptr)
 * 
 * def _mj_loadXML(str filename, PyMjVFS vfs, str error, int error_sz):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_loadXML(filename.encode(), vfs.ptr, error.encode(), error_sz))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_loadXML", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3865
 *     return WrapMjModel(mj_loadXML(filename.encode(), vfs.ptr, error.encode(), error_sz))
 * 
 * def _mj_saveLastXML(str filename, PyMjModel m, str error, int error_sz):             # <<<<<<<<<<<<<<
 *     return mj_saveLastXML(filename.encode(), m.ptr, error.encode(), error_sz)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_25_mj_saveLastXML(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_25_mj_saveLastXML = {"_mj_saveLastXML", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_25_mj_saveLastXML, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_25_mj_saveLastXML(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filename = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  PyObject *__pyx_v_error = 0;
  int __pyx_v_error_sz;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_saveLastXML (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_m,&__pyx_n_s_error,&__pyx_n_s_error_sz,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_saveLastXML", 1, 4, 4, 1); __PYX_ERR(3, 3865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_saveLastXML", 1, 4, 4, 2); __PYX_ERR(3, 3865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_error_sz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_saveLastXML", 1, 4, 4, 3); __PYX_ERR(3, 3865, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_saveLastXML") < 0)) __PYX_ERR(3, 3865, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_filename = ((PyObject*)values[0]);
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[1]);
    __pyx_v_error = ((PyObject*)values[2]);
    __pyx_v_error_sz = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_error_sz == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3865, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_saveLastXML", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3865, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_saveLastXML", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3865, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3865, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_error), (&PyUnicode_Type), 1, "error", 1))) __PYX_ERR(3, 3865, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_24_mj_saveLastXML(__pyx_self, __pyx_v_filename, __pyx_v_m, __pyx_v_error, __pyx_v_error_sz);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_24_mj_saveLastXML(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyObject *__pyx_v_error, int __pyx_v_error_sz) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_mj_saveLastXML", 0);

  /* "mujoco_py/generated/wrappers.pxi":3866
 * 
 * def _mj_saveLastXML(str filename, PyMjModel m, str error, int error_sz):
 *     return mj_saveLastXML(filename.encode(), m.ptr, error.encode(), error_sz)             # <<<<<<<<<<<<<<
 * 
 * def _mj_freeLastXML():
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3866, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3866, __pyx_L1_error)
  if (unlikely(__pyx_v_error == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3866, __pyx_L1_error)
  }
  __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_error, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 3866, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyInt_From_int(mj_saveLastXML(__pyx_t_2, __pyx_v_m->ptr, __pyx_t_4, __pyx_v_error_sz)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 3866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3865
 *     return WrapMjModel(mj_loadXML(filename.encode(), vfs.ptr, error.encode(), error_sz))
 * 
 * def _mj_saveLastXML(str filename, PyMjModel m, str error, int error_sz):             # <<<<<<<<<<<<<<
 *     return mj_saveLastXML(filename.encode(), m.ptr, error.encode(), error_sz)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_saveLastXML", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3868
 *     return mj_saveLastXML(filename.encode(), m.ptr, error.encode(), error_sz)
 * 
 * def _mj_freeLastXML():             # <<<<<<<<<<<<<<
 *     mj_freeLastXML()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_27_mj_freeLastXML(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_27_mj_freeLastXML = {"_mj_freeLastXML", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_27_mj_freeLastXML, METH_NOARGS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_27_mj_freeLastXML(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_freeLastXML (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_26_mj_freeLastXML(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_26_mj_freeLastXML(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_freeLastXML", 0);

  /* "mujoco_py/generated/wrappers.pxi":3869
 * 
 * def _mj_freeLastXML():
 *     mj_freeLastXML()             # <<<<<<<<<<<<<<
 * 
 * def _mj_printSchema(str filename, str buffer, int buffer_sz, int flg_html, int flg_pad):
 */
  mj_freeLastXML();

  /* "mujoco_py/generated/wrappers.pxi":3868
 *     return mj_saveLastXML(filename.encode(), m.ptr, error.encode(), error_sz)
 * 
 * def _mj_freeLastXML():             # <<<<<<<<<<<<<<
 *     mj_freeLastXML()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3871
 *     mj_freeLastXML()
 * 
 * def _mj_printSchema(str filename, str buffer, int buffer_sz, int flg_html, int flg_pad):             # <<<<<<<<<<<<<<
 *     return mj_printSchema(filename.encode(), buffer.encode(), buffer_sz, flg_html, flg_pad)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_29_mj_printSchema(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_29_mj_printSchema = {"_mj_printSchema", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_29_mj_printSchema, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_29_mj_printSchema(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_v_buffer = 0;
  int __pyx_v_buffer_sz;
  int __pyx_v_flg_html;
  int __pyx_v_flg_pad;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_printSchema (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_buffer,&__pyx_n_s_buffer_sz,&__pyx_n_s_flg_html,&__pyx_n_s_flg_pad,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_printSchema", 1, 5, 5, 1); __PYX_ERR(3, 3871, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer_sz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_printSchema", 1, 5, 5, 2); __PYX_ERR(3, 3871, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_html)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_printSchema", 1, 5, 5, 3); __PYX_ERR(3, 3871, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_pad)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_printSchema", 1, 5, 5, 4); __PYX_ERR(3, 3871, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_printSchema") < 0)) __PYX_ERR(3, 3871, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_filename = ((PyObject*)values[0]);
    __pyx_v_buffer = ((PyObject*)values[1]);
    __pyx_v_buffer_sz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_buffer_sz == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3871, __pyx_L3_error)
    __pyx_v_flg_html = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_flg_html == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3871, __pyx_L3_error)
    __pyx_v_flg_pad = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_flg_pad == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3871, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_printSchema", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3871, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_printSchema", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3871, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_buffer), (&PyUnicode_Type), 1, "buffer", 1))) __PYX_ERR(3, 3871, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_28_mj_printSchema(__pyx_self, __pyx_v_filename, __pyx_v_buffer, __pyx_v_buffer_sz, __pyx_v_flg_html, __pyx_v_flg_pad);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_28_mj_printSchema(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_buffer, int __pyx_v_buffer_sz, int __pyx_v_flg_html, int __pyx_v_flg_pad) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_mj_printSchema", 0);

  /* "mujoco_py/generated/wrappers.pxi":3872
 * 
 * def _mj_printSchema(str filename, str buffer, int buffer_sz, int flg_html, int flg_pad):
 *     return mj_printSchema(filename.encode(), buffer.encode(), buffer_sz, flg_html, flg_pad)             # <<<<<<<<<<<<<<
 * 
 * def _mj_step(PyMjModel m, PyMjData d):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3872, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3872, __pyx_L1_error)
  if (unlikely(__pyx_v_buffer == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3872, __pyx_L1_error)
  }
  __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_buffer, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 3872, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyInt_From_int(mj_printSchema(__pyx_t_2, __pyx_t_4, __pyx_v_buffer_sz, __pyx_v_flg_html, __pyx_v_flg_pad)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 3872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3871
 *     mj_freeLastXML()
 * 
 * def _mj_printSchema(str filename, str buffer, int buffer_sz, int flg_html, int flg_pad):             # <<<<<<<<<<<<<<
 *     return mj_printSchema(filename.encode(), buffer.encode(), buffer_sz, flg_html, flg_pad)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_printSchema", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3874
 *     return mj_printSchema(filename.encode(), buffer.encode(), buffer_sz, flg_html, flg_pad)
 * 
 * def _mj_step(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_31_mj_step(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_31_mj_step = {"_mj_step", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_31_mj_step, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_31_mj_step(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_step (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_step", 1, 2, 2, 1); __PYX_ERR(3, 3874, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_step") < 0)) __PYX_ERR(3, 3874, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_step", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3874, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_step", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3874, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3874, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_30_mj_step(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_30_mj_step(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_step", 0);

  /* "mujoco_py/generated/wrappers.pxi":3875
 * 
 * def _mj_step(PyMjModel m, PyMjData d):
 *     mj_step(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_step1(PyMjModel m, PyMjData d):
 */
  mj_step(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3874
 *     return mj_printSchema(filename.encode(), buffer.encode(), buffer_sz, flg_html, flg_pad)
 * 
 * def _mj_step(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3877
 *     mj_step(m.ptr, d.ptr)
 * 
 * def _mj_step1(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step1(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_33_mj_step1(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_33_mj_step1 = {"_mj_step1", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_33_mj_step1, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_33_mj_step1(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_step1 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_step1", 1, 2, 2, 1); __PYX_ERR(3, 3877, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_step1") < 0)) __PYX_ERR(3, 3877, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_step1", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3877, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_step1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3877, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3877, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_32_mj_step1(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_32_mj_step1(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_step1", 0);

  /* "mujoco_py/generated/wrappers.pxi":3878
 * 
 * def _mj_step1(PyMjModel m, PyMjData d):
 *     mj_step1(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_step2(PyMjModel m, PyMjData d):
 */
  mj_step1(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3877
 *     mj_step(m.ptr, d.ptr)
 * 
 * def _mj_step1(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step1(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3880
 *     mj_step1(m.ptr, d.ptr)
 * 
 * def _mj_step2(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step2(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_35_mj_step2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_35_mj_step2 = {"_mj_step2", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_35_mj_step2, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_35_mj_step2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_step2 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_step2", 1, 2, 2, 1); __PYX_ERR(3, 3880, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_step2") < 0)) __PYX_ERR(3, 3880, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_step2", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3880, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_step2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3880, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3880, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_34_mj_step2(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_34_mj_step2(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_step2", 0);

  /* "mujoco_py/generated/wrappers.pxi":3881
 * 
 * def _mj_step2(PyMjModel m, PyMjData d):
 *     mj_step2(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_forward(PyMjModel m, PyMjData d):
 */
  mj_step2(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3880
 *     mj_step1(m.ptr, d.ptr)
 * 
 * def _mj_step2(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step2(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3883
 *     mj_step2(m.ptr, d.ptr)
 * 
 * def _mj_forward(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_forward(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_37_mj_forward(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_37_mj_forward = {"_mj_forward", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_37_mj_forward, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_37_mj_forward(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_forward (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_forward", 1, 2, 2, 1); __PYX_ERR(3, 3883, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_forward") < 0)) __PYX_ERR(3, 3883, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_forward", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3883, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_forward", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3883, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3883, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_36_mj_forward(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_36_mj_forward(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_forward", 0);

  /* "mujoco_py/generated/wrappers.pxi":3884
 * 
 * def _mj_forward(PyMjModel m, PyMjData d):
 *     mj_forward(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_inverse(PyMjModel m, PyMjData d):
 */
  mj_forward(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3883
 *     mj_step2(m.ptr, d.ptr)
 * 
 * def _mj_forward(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_forward(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3886
 *     mj_forward(m.ptr, d.ptr)
 * 
 * def _mj_inverse(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_inverse(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_39_mj_inverse(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_39_mj_inverse = {"_mj_inverse", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_39_mj_inverse, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_39_mj_inverse(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_inverse (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_inverse", 1, 2, 2, 1); __PYX_ERR(3, 3886, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_inverse") < 0)) __PYX_ERR(3, 3886, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_inverse", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3886, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_inverse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3886, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3886, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_38_mj_inverse(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_38_mj_inverse(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_inverse", 0);

  /* "mujoco_py/generated/wrappers.pxi":3887
 * 
 * def _mj_inverse(PyMjModel m, PyMjData d):
 *     mj_inverse(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_forwardSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):
 */
  mj_inverse(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3886
 *     mj_forward(m.ptr, d.ptr)
 * 
 * def _mj_inverse(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_inverse(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3889
 *     mj_inverse(m.ptr, d.ptr)
 * 
 * def _mj_forwardSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):             # <<<<<<<<<<<<<<
 *     mj_forwardSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_41_mj_forwardSkip(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_41_mj_forwardSkip = {"_mj_forwardSkip", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_41_mj_forwardSkip, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_41_mj_forwardSkip(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_skipstage;
  int __pyx_v_skipsensorenergy;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_forwardSkip (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_skipstage,&__pyx_n_s_skipsensorenergy,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_forwardSkip", 1, 4, 4, 1); __PYX_ERR(3, 3889, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_skipstage)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_forwardSkip", 1, 4, 4, 2); __PYX_ERR(3, 3889, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_skipsensorenergy)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_forwardSkip", 1, 4, 4, 3); __PYX_ERR(3, 3889, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_forwardSkip") < 0)) __PYX_ERR(3, 3889, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_skipstage = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_skipstage == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3889, __pyx_L3_error)
    __pyx_v_skipsensorenergy = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_skipsensorenergy == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3889, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_forwardSkip", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3889, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_forwardSkip", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3889, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3889, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_40_mj_forwardSkip(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_skipstage, __pyx_v_skipsensorenergy);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_40_mj_forwardSkip(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_skipstage, int __pyx_v_skipsensorenergy) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_forwardSkip", 0);

  /* "mujoco_py/generated/wrappers.pxi":3890
 * 
 * def _mj_forwardSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):
 *     mj_forwardSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)             # <<<<<<<<<<<<<<
 * 
 * def _mj_inverseSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):
 */
  mj_forwardSkip(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_skipstage, __pyx_v_skipsensorenergy);

  /* "mujoco_py/generated/wrappers.pxi":3889
 *     mj_inverse(m.ptr, d.ptr)
 * 
 * def _mj_forwardSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):             # <<<<<<<<<<<<<<
 *     mj_forwardSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3892
 *     mj_forwardSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 * def _mj_inverseSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):             # <<<<<<<<<<<<<<
 *     mj_inverseSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_43_mj_inverseSkip(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_43_mj_inverseSkip = {"_mj_inverseSkip", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_43_mj_inverseSkip, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_43_mj_inverseSkip(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_skipstage;
  int __pyx_v_skipsensorenergy;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_inverseSkip (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_skipstage,&__pyx_n_s_skipsensorenergy,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_inverseSkip", 1, 4, 4, 1); __PYX_ERR(3, 3892, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_skipstage)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_inverseSkip", 1, 4, 4, 2); __PYX_ERR(3, 3892, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_skipsensorenergy)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_inverseSkip", 1, 4, 4, 3); __PYX_ERR(3, 3892, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_inverseSkip") < 0)) __PYX_ERR(3, 3892, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_skipstage = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_skipstage == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3892, __pyx_L3_error)
    __pyx_v_skipsensorenergy = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_skipsensorenergy == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3892, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_inverseSkip", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3892, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_inverseSkip", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3892, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3892, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_42_mj_inverseSkip(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_skipstage, __pyx_v_skipsensorenergy);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_42_mj_inverseSkip(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_skipstage, int __pyx_v_skipsensorenergy) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_inverseSkip", 0);

  /* "mujoco_py/generated/wrappers.pxi":3893
 * 
 * def _mj_inverseSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):
 *     mj_inverseSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)             # <<<<<<<<<<<<<<
 * 
 * def _mj_defaultSolRefImp(np.ndarray[np.float64_t, mode="c", ndim=1] solref, np.ndarray[np.float64_t, mode="c", ndim=1] solimp):
 */
  mj_inverseSkip(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_skipstage, __pyx_v_skipsensorenergy);

  /* "mujoco_py/generated/wrappers.pxi":3892
 *     mj_forwardSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 * def _mj_inverseSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):             # <<<<<<<<<<<<<<
 *     mj_inverseSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3895
 *     mj_inverseSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 * def _mj_defaultSolRefImp(np.ndarray[np.float64_t, mode="c", ndim=1] solref, np.ndarray[np.float64_t, mode="c", ndim=1] solimp):             # <<<<<<<<<<<<<<
 *     mj_defaultSolRefImp(&solref[0], &solimp[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_45_mj_defaultSolRefImp(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_45_mj_defaultSolRefImp = {"_mj_defaultSolRefImp", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_45_mj_defaultSolRefImp, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_45_mj_defaultSolRefImp(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_solref = 0;
  PyArrayObject *__pyx_v_solimp = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_defaultSolRefImp (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_solref,&__pyx_n_s_solimp,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_solref)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_solimp)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_defaultSolRefImp", 1, 2, 2, 1); __PYX_ERR(3, 3895, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_defaultSolRefImp") < 0)) __PYX_ERR(3, 3895, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_solref = ((PyArrayObject *)values[0]);
    __pyx_v_solimp = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_defaultSolRefImp", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3895, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_defaultSolRefImp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_solref), __pyx_ptype_5numpy_ndarray, 1, "solref", 0))) __PYX_ERR(3, 3895, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_solimp), __pyx_ptype_5numpy_ndarray, 1, "solimp", 0))) __PYX_ERR(3, 3895, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_44_mj_defaultSolRefImp(__pyx_self, __pyx_v_solref, __pyx_v_solimp);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_44_mj_defaultSolRefImp(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_solref, PyArrayObject *__pyx_v_solimp) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_solimp;
  __Pyx_Buffer __pyx_pybuffer_solimp;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_solref;
  __Pyx_Buffer __pyx_pybuffer_solref;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_defaultSolRefImp", 0);
  __pyx_pybuffer_solref.pybuffer.buf = NULL;
  __pyx_pybuffer_solref.refcount = 0;
  __pyx_pybuffernd_solref.data = NULL;
  __pyx_pybuffernd_solref.rcbuffer = &__pyx_pybuffer_solref;
  __pyx_pybuffer_solimp.pybuffer.buf = NULL;
  __pyx_pybuffer_solimp.refcount = 0;
  __pyx_pybuffernd_solimp.data = NULL;
  __pyx_pybuffernd_solimp.rcbuffer = &__pyx_pybuffer_solimp;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_solref.rcbuffer->pybuffer, (PyObject*)__pyx_v_solref, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 3895, __pyx_L1_error)
  }
  __pyx_pybuffernd_solref.diminfo[0].strides = __pyx_pybuffernd_solref.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_solref.diminfo[0].shape = __pyx_pybuffernd_solref.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_solimp.rcbuffer->pybuffer, (PyObject*)__pyx_v_solimp, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 3895, __pyx_L1_error)
  }
  __pyx_pybuffernd_solimp.diminfo[0].strides = __pyx_pybuffernd_solimp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_solimp.diminfo[0].shape = __pyx_pybuffernd_solimp.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":3896
 * 
 * def _mj_defaultSolRefImp(np.ndarray[np.float64_t, mode="c", ndim=1] solref, np.ndarray[np.float64_t, mode="c", ndim=1] solimp):
 *     mj_defaultSolRefImp(&solref[0], &solimp[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_defaultOption(PyMjOption opt):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_solref.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_solref.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 3896, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_solimp.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_solimp.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 3896, __pyx_L1_error)
  }
  mj_defaultSolRefImp((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_solref.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_solref.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_solimp.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_solimp.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":3895
 *     mj_inverseSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 * def _mj_defaultSolRefImp(np.ndarray[np.float64_t, mode="c", ndim=1] solref, np.ndarray[np.float64_t, mode="c", ndim=1] solimp):             # <<<<<<<<<<<<<<
 *     mj_defaultSolRefImp(&solref[0], &solimp[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_solimp.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_solref.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_defaultSolRefImp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_solimp.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_solref.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3898
 *     mj_defaultSolRefImp(&solref[0], &solimp[0])
 * 
 * def _mj_defaultOption(PyMjOption opt):             # <<<<<<<<<<<<<<
 *     mj_defaultOption(opt.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_47_mj_defaultOption(PyObject *__pyx_self, PyObject *__pyx_v_opt); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_47_mj_defaultOption = {"_mj_defaultOption", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_47_mj_defaultOption, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_47_mj_defaultOption(PyObject *__pyx_self, PyObject *__pyx_v_opt) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_defaultOption (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_opt), __pyx_ptype_9mujoco_py_4cymj_PyMjOption, 1, "opt", 0))) __PYX_ERR(3, 3898, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_46_mj_defaultOption(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)__pyx_v_opt));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_46_mj_defaultOption(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *__pyx_v_opt) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_defaultOption", 0);

  /* "mujoco_py/generated/wrappers.pxi":3899
 * 
 * def _mj_defaultOption(PyMjOption opt):
 *     mj_defaultOption(opt.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_defaultVisual(PyMjVisual vis):
 */
  mj_defaultOption(__pyx_v_opt->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3898
 *     mj_defaultSolRefImp(&solref[0], &solimp[0])
 * 
 * def _mj_defaultOption(PyMjOption opt):             # <<<<<<<<<<<<<<
 *     mj_defaultOption(opt.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3901
 *     mj_defaultOption(opt.ptr)
 * 
 * def _mj_defaultVisual(PyMjVisual vis):             # <<<<<<<<<<<<<<
 *     mj_defaultVisual(vis.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_49_mj_defaultVisual(PyObject *__pyx_self, PyObject *__pyx_v_vis); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_49_mj_defaultVisual = {"_mj_defaultVisual", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_49_mj_defaultVisual, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_49_mj_defaultVisual(PyObject *__pyx_self, PyObject *__pyx_v_vis) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_defaultVisual (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vis), __pyx_ptype_9mujoco_py_4cymj_PyMjVisual, 1, "vis", 0))) __PYX_ERR(3, 3901, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_48_mj_defaultVisual(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)__pyx_v_vis));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_48_mj_defaultVisual(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *__pyx_v_vis) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_defaultVisual", 0);

  /* "mujoco_py/generated/wrappers.pxi":3902
 * 
 * def _mj_defaultVisual(PyMjVisual vis):
 *     mj_defaultVisual(vis.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_copyModel(PyMjModel dest, PyMjModel src):
 */
  mj_defaultVisual(__pyx_v_vis->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3901
 *     mj_defaultOption(opt.ptr)
 * 
 * def _mj_defaultVisual(PyMjVisual vis):             # <<<<<<<<<<<<<<
 *     mj_defaultVisual(vis.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3904
 *     mj_defaultVisual(vis.ptr)
 * 
 * def _mj_copyModel(PyMjModel dest, PyMjModel src):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_copyModel(dest.ptr, src.ptr))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_51_mj_copyModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_51_mj_copyModel = {"_mj_copyModel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_51_mj_copyModel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_51_mj_copyModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_dest = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_src = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_copyModel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dest,&__pyx_n_s_src,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dest)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_src)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_copyModel", 1, 2, 2, 1); __PYX_ERR(3, 3904, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_copyModel") < 0)) __PYX_ERR(3, 3904, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_dest = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_src = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_copyModel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3904, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_copyModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dest), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "dest", 0))) __PYX_ERR(3, 3904, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_src), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "src", 0))) __PYX_ERR(3, 3904, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_50_mj_copyModel(__pyx_self, __pyx_v_dest, __pyx_v_src);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_50_mj_copyModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_dest, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_src) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mj_copyModel", 0);

  /* "mujoco_py/generated/wrappers.pxi":3905
 * 
 * def _mj_copyModel(PyMjModel dest, PyMjModel src):
 *     return WrapMjModel(mj_copyModel(dest.ptr, src.ptr))             # <<<<<<<<<<<<<<
 * 
 * def _mj_loadModel(str filename, PyMjVFS vfs):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjModel(mj_copyModel(__pyx_v_dest->ptr, __pyx_v_src->ptr))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3904
 *     mj_defaultVisual(vis.ptr)
 * 
 * def _mj_copyModel(PyMjModel dest, PyMjModel src):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_copyModel(dest.ptr, src.ptr))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_copyModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3907
 *     return WrapMjModel(mj_copyModel(dest.ptr, src.ptr))
 * 
 * def _mj_loadModel(str filename, PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_loadModel(filename.encode(), vfs.ptr))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_53_mj_loadModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_53_mj_loadModel = {"_mj_loadModel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_53_mj_loadModel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_53_mj_loadModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filename = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_loadModel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_vfs,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vfs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_loadModel", 1, 2, 2, 1); __PYX_ERR(3, 3907, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_loadModel") < 0)) __PYX_ERR(3, 3907, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_filename = ((PyObject*)values[0]);
    __pyx_v_vfs = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_loadModel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3907, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_loadModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3907, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vfs), __pyx_ptype_9mujoco_py_4cymj_PyMjVFS, 1, "vfs", 0))) __PYX_ERR(3, 3907, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_52_mj_loadModel(__pyx_self, __pyx_v_filename, __pyx_v_vfs);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_52_mj_loadModel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *__pyx_v_vfs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mj_loadModel", 0);

  /* "mujoco_py/generated/wrappers.pxi":3908
 * 
 * def _mj_loadModel(str filename, PyMjVFS vfs):
 *     return WrapMjModel(mj_loadModel(filename.encode(), vfs.ptr))             # <<<<<<<<<<<<<<
 * 
 * def _mj_deleteModel(PyMjModel m):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3908, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3908, __pyx_L1_error)
  __pyx_t_3 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjModel(mj_loadModel(__pyx_t_2, __pyx_v_vfs->ptr))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3907
 *     return WrapMjModel(mj_copyModel(dest.ptr, src.ptr))
 * 
 * def _mj_loadModel(str filename, PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_loadModel(filename.encode(), vfs.ptr))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_loadModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3910
 *     return WrapMjModel(mj_loadModel(filename.encode(), vfs.ptr))
 * 
 * def _mj_deleteModel(PyMjModel m):             # <<<<<<<<<<<<<<
 *     mj_deleteModel(m.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_55_mj_deleteModel(PyObject *__pyx_self, PyObject *__pyx_v_m); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_55_mj_deleteModel = {"_mj_deleteModel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_55_mj_deleteModel, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_55_mj_deleteModel(PyObject *__pyx_self, PyObject *__pyx_v_m) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_deleteModel (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3910, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_54_mj_deleteModel(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_m));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_54_mj_deleteModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_deleteModel", 0);

  /* "mujoco_py/generated/wrappers.pxi":3911
 * 
 * def _mj_deleteModel(PyMjModel m):
 *     mj_deleteModel(m.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_sizeModel(PyMjModel m):
 */
  mj_deleteModel(__pyx_v_m->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3910
 *     return WrapMjModel(mj_loadModel(filename.encode(), vfs.ptr))
 * 
 * def _mj_deleteModel(PyMjModel m):             # <<<<<<<<<<<<<<
 *     mj_deleteModel(m.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3913
 *     mj_deleteModel(m.ptr)
 * 
 * def _mj_sizeModel(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_sizeModel(m.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_57_mj_sizeModel(PyObject *__pyx_self, PyObject *__pyx_v_m); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_57_mj_sizeModel = {"_mj_sizeModel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_57_mj_sizeModel, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_57_mj_sizeModel(PyObject *__pyx_self, PyObject *__pyx_v_m) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_sizeModel (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3913, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_56_mj_sizeModel(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_m));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_56_mj_sizeModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mj_sizeModel", 0);

  /* "mujoco_py/generated/wrappers.pxi":3914
 * 
 * def _mj_sizeModel(PyMjModel m):
 *     return mj_sizeModel(m.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_resetData(PyMjModel m, PyMjData d):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(mj_sizeModel(__pyx_v_m->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":3913
 *     mj_deleteModel(m.ptr)
 * 
 * def _mj_sizeModel(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_sizeModel(m.ptr)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_sizeModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3916
 *     return mj_sizeModel(m.ptr)
 * 
 * def _mj_resetData(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_resetData(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_59_mj_resetData(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_59_mj_resetData = {"_mj_resetData", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_59_mj_resetData, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_59_mj_resetData(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_resetData (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_resetData", 1, 2, 2, 1); __PYX_ERR(3, 3916, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_resetData") < 0)) __PYX_ERR(3, 3916, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_resetData", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3916, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_resetData", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3916, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3916, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_58_mj_resetData(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_58_mj_resetData(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_resetData", 0);

  /* "mujoco_py/generated/wrappers.pxi":3917
 * 
 * def _mj_resetData(PyMjModel m, PyMjData d):
 *     mj_resetData(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_resetDataKeyframe(PyMjModel m, PyMjData d, int key):
 */
  mj_resetData(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3916
 *     return mj_sizeModel(m.ptr)
 * 
 * def _mj_resetData(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_resetData(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3919
 *     mj_resetData(m.ptr, d.ptr)
 * 
 * def _mj_resetDataKeyframe(PyMjModel m, PyMjData d, int key):             # <<<<<<<<<<<<<<
 *     mj_resetDataKeyframe(m.ptr, d.ptr, key)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_61_mj_resetDataKeyframe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_61_mj_resetDataKeyframe = {"_mj_resetDataKeyframe", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_61_mj_resetDataKeyframe, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_61_mj_resetDataKeyframe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_key;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_resetDataKeyframe (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_key,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_resetDataKeyframe", 1, 3, 3, 1); __PYX_ERR(3, 3919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_resetDataKeyframe", 1, 3, 3, 2); __PYX_ERR(3, 3919, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_resetDataKeyframe") < 0)) __PYX_ERR(3, 3919, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_key = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3919, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_resetDataKeyframe", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3919, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_resetDataKeyframe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3919, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3919, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_60_mj_resetDataKeyframe(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_key);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_60_mj_resetDataKeyframe(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_key) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_resetDataKeyframe", 0);

  /* "mujoco_py/generated/wrappers.pxi":3920
 * 
 * def _mj_resetDataKeyframe(PyMjModel m, PyMjData d, int key):
 *     mj_resetDataKeyframe(m.ptr, d.ptr, key)             # <<<<<<<<<<<<<<
 * 
 * def _mj_deleteData(PyMjData d):
 */
  mj_resetDataKeyframe(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_key);

  /* "mujoco_py/generated/wrappers.pxi":3919
 *     mj_resetData(m.ptr, d.ptr)
 * 
 * def _mj_resetDataKeyframe(PyMjModel m, PyMjData d, int key):             # <<<<<<<<<<<<<<
 *     mj_resetDataKeyframe(m.ptr, d.ptr, key)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3922
 *     mj_resetDataKeyframe(m.ptr, d.ptr, key)
 * 
 * def _mj_deleteData(PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_deleteData(d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_63_mj_deleteData(PyObject *__pyx_self, PyObject *__pyx_v_d); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_63_mj_deleteData = {"_mj_deleteData", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_63_mj_deleteData, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_63_mj_deleteData(PyObject *__pyx_self, PyObject *__pyx_v_d) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_deleteData (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3922, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_62_mj_deleteData(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_v_d));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_62_mj_deleteData(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_deleteData", 0);

  /* "mujoco_py/generated/wrappers.pxi":3923
 * 
 * def _mj_deleteData(PyMjData d):
 *     mj_deleteData(d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_resetCallbacks():
 */
  mj_deleteData(__pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3922
 *     mj_resetDataKeyframe(m.ptr, d.ptr, key)
 * 
 * def _mj_deleteData(PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_deleteData(d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3925
 *     mj_deleteData(d.ptr)
 * 
 * def _mj_resetCallbacks():             # <<<<<<<<<<<<<<
 *     mj_resetCallbacks()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_65_mj_resetCallbacks(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_65_mj_resetCallbacks = {"_mj_resetCallbacks", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_65_mj_resetCallbacks, METH_NOARGS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_65_mj_resetCallbacks(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_resetCallbacks (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_64_mj_resetCallbacks(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_64_mj_resetCallbacks(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_resetCallbacks", 0);

  /* "mujoco_py/generated/wrappers.pxi":3926
 * 
 * def _mj_resetCallbacks():
 *     mj_resetCallbacks()             # <<<<<<<<<<<<<<
 * 
 * def _mj_setConst(PyMjModel m, PyMjData d, int flg_actrange):
 */
  mj_resetCallbacks();

  /* "mujoco_py/generated/wrappers.pxi":3925
 *     mj_deleteData(d.ptr)
 * 
 * def _mj_resetCallbacks():             # <<<<<<<<<<<<<<
 *     mj_resetCallbacks()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3928
 *     mj_resetCallbacks()
 * 
 * def _mj_setConst(PyMjModel m, PyMjData d, int flg_actrange):             # <<<<<<<<<<<<<<
 *     mj_setConst(m.ptr, d.ptr, flg_actrange)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_67_mj_setConst(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_67_mj_setConst = {"_mj_setConst", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_67_mj_setConst, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_67_mj_setConst(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_flg_actrange;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_setConst (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_flg_actrange,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_setConst", 1, 3, 3, 1); __PYX_ERR(3, 3928, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_actrange)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_setConst", 1, 3, 3, 2); __PYX_ERR(3, 3928, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_setConst") < 0)) __PYX_ERR(3, 3928, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_flg_actrange = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_flg_actrange == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3928, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_setConst", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3928, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_setConst", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3928, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3928, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_66_mj_setConst(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_flg_actrange);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_66_mj_setConst(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_flg_actrange) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_setConst", 0);

  /* "mujoco_py/generated/wrappers.pxi":3929
 * 
 * def _mj_setConst(PyMjModel m, PyMjData d, int flg_actrange):
 *     mj_setConst(m.ptr, d.ptr, flg_actrange)             # <<<<<<<<<<<<<<
 * 
 * def _mj_printModel(PyMjModel m, str filename):
 */
  mj_setConst(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_flg_actrange);

  /* "mujoco_py/generated/wrappers.pxi":3928
 *     mj_resetCallbacks()
 * 
 * def _mj_setConst(PyMjModel m, PyMjData d, int flg_actrange):             # <<<<<<<<<<<<<<
 *     mj_setConst(m.ptr, d.ptr, flg_actrange)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3931
 *     mj_setConst(m.ptr, d.ptr, flg_actrange)
 * 
 * def _mj_printModel(PyMjModel m, str filename):             # <<<<<<<<<<<<<<
 *     mj_printModel(m.ptr, filename.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_69_mj_printModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_69_mj_printModel = {"_mj_printModel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_69_mj_printModel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_69_mj_printModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_printModel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_filename,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_printModel", 1, 2, 2, 1); __PYX_ERR(3, 3931, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_printModel") < 0)) __PYX_ERR(3, 3931, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_filename = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_printModel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3931, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_printModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3931, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3931, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_68_mj_printModel(__pyx_self, __pyx_v_m, __pyx_v_filename);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_68_mj_printModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyObject *__pyx_v_filename) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  __Pyx_RefNannySetupContext("_mj_printModel", 0);

  /* "mujoco_py/generated/wrappers.pxi":3932
 * 
 * def _mj_printModel(PyMjModel m, str filename):
 *     mj_printModel(m.ptr, filename.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mj_printData(PyMjModel m, PyMjData d, str filename):
 */
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3932, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3932, __pyx_L1_error)
  mj_printModel(__pyx_v_m->ptr, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3931
 *     mj_setConst(m.ptr, d.ptr, flg_actrange)
 * 
 * def _mj_printModel(PyMjModel m, str filename):             # <<<<<<<<<<<<<<
 *     mj_printModel(m.ptr, filename.encode())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_printModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3934
 *     mj_printModel(m.ptr, filename.encode())
 * 
 * def _mj_printData(PyMjModel m, PyMjData d, str filename):             # <<<<<<<<<<<<<<
 *     mj_printData(m.ptr, d.ptr, filename.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_71_mj_printData(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_71_mj_printData = {"_mj_printData", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_71_mj_printData, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_71_mj_printData(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_printData (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_filename,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_printData", 1, 3, 3, 1); __PYX_ERR(3, 3934, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_printData", 1, 3, 3, 2); __PYX_ERR(3, 3934, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_printData") < 0)) __PYX_ERR(3, 3934, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_filename = ((PyObject*)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_printData", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3934, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_printData", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3934, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3934, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyUnicode_Type), 1, "filename", 1))) __PYX_ERR(3, 3934, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_70_mj_printData(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_filename);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_70_mj_printData(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyObject *__pyx_v_filename) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  __Pyx_RefNannySetupContext("_mj_printData", 0);

  /* "mujoco_py/generated/wrappers.pxi":3935
 * 
 * def _mj_printData(PyMjModel m, PyMjData d, str filename):
 *     mj_printData(m.ptr, d.ptr, filename.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mju_printMat(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):
 */
  if (unlikely(__pyx_v_filename == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 3935, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_filename, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 3935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 3935, __pyx_L1_error)
  mj_printData(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3934
 *     mj_printModel(m.ptr, filename.encode())
 * 
 * def _mj_printData(PyMjModel m, PyMjData d, str filename):             # <<<<<<<<<<<<<<
 *     mj_printData(m.ptr, d.ptr, filename.encode())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_printData", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3937
 *     mj_printData(m.ptr, d.ptr, filename.encode())
 * 
 * def _mju_printMat(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_printMat(&mat[0], nr, nc)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_73_mju_printMat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_73_mju_printMat = {"_mju_printMat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_73_mju_printMat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_73_mju_printMat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_mat = 0;
  int __pyx_v_nr;
  int __pyx_v_nc;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_printMat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mat,&__pyx_n_s_nr,&__pyx_n_s_nc,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_printMat", 1, 3, 3, 1); __PYX_ERR(3, 3937, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_printMat", 1, 3, 3, 2); __PYX_ERR(3, 3937, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_printMat") < 0)) __PYX_ERR(3, 3937, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_mat = ((PyArrayObject *)values[0]);
    __pyx_v_nr = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_nr == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3937, __pyx_L3_error)
    __pyx_v_nc = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nc == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3937, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_printMat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3937, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_printMat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 3937, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_72_mju_printMat(__pyx_self, __pyx_v_mat, __pyx_v_nr, __pyx_v_nc);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_72_mju_printMat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mat, int __pyx_v_nr, int __pyx_v_nc) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_printMat", 0);
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 3937, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":3938
 * 
 * def _mju_printMat(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):
 *     mju_printMat(&mat[0], nr, nc)             # <<<<<<<<<<<<<<
 * 
 * def _mj_fwdPosition(PyMjModel m, PyMjData d):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 3938, __pyx_L1_error)
  }
  mju_printMat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_mat.diminfo[0].strides))), __pyx_v_nr, __pyx_v_nc);

  /* "mujoco_py/generated/wrappers.pxi":3937
 *     mj_printData(m.ptr, d.ptr, filename.encode())
 * 
 * def _mju_printMat(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_printMat(&mat[0], nr, nc)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_printMat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3940
 *     mju_printMat(&mat[0], nr, nc)
 * 
 * def _mj_fwdPosition(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdPosition(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_75_mj_fwdPosition(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_75_mj_fwdPosition = {"_mj_fwdPosition", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_75_mj_fwdPosition, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_75_mj_fwdPosition(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdPosition (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_fwdPosition", 1, 2, 2, 1); __PYX_ERR(3, 3940, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_fwdPosition") < 0)) __PYX_ERR(3, 3940, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_fwdPosition", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3940, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_fwdPosition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3940, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3940, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_74_mj_fwdPosition(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_74_mj_fwdPosition(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdPosition", 0);

  /* "mujoco_py/generated/wrappers.pxi":3941
 * 
 * def _mj_fwdPosition(PyMjModel m, PyMjData d):
 *     mj_fwdPosition(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_fwdVelocity(PyMjModel m, PyMjData d):
 */
  mj_fwdPosition(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3940
 *     mju_printMat(&mat[0], nr, nc)
 * 
 * def _mj_fwdPosition(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdPosition(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3943
 *     mj_fwdPosition(m.ptr, d.ptr)
 * 
 * def _mj_fwdVelocity(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdVelocity(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_77_mj_fwdVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_77_mj_fwdVelocity = {"_mj_fwdVelocity", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_77_mj_fwdVelocity, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_77_mj_fwdVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdVelocity (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_fwdVelocity", 1, 2, 2, 1); __PYX_ERR(3, 3943, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_fwdVelocity") < 0)) __PYX_ERR(3, 3943, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_fwdVelocity", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3943, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_fwdVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3943, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3943, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_76_mj_fwdVelocity(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_76_mj_fwdVelocity(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdVelocity", 0);

  /* "mujoco_py/generated/wrappers.pxi":3944
 * 
 * def _mj_fwdVelocity(PyMjModel m, PyMjData d):
 *     mj_fwdVelocity(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_fwdActuation(PyMjModel m, PyMjData d):
 */
  mj_fwdVelocity(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3943
 *     mj_fwdPosition(m.ptr, d.ptr)
 * 
 * def _mj_fwdVelocity(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdVelocity(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3946
 *     mj_fwdVelocity(m.ptr, d.ptr)
 * 
 * def _mj_fwdActuation(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdActuation(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_79_mj_fwdActuation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_79_mj_fwdActuation = {"_mj_fwdActuation", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_79_mj_fwdActuation, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_79_mj_fwdActuation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdActuation (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_fwdActuation", 1, 2, 2, 1); __PYX_ERR(3, 3946, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_fwdActuation") < 0)) __PYX_ERR(3, 3946, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_fwdActuation", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3946, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_fwdActuation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3946, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3946, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_78_mj_fwdActuation(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_78_mj_fwdActuation(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdActuation", 0);

  /* "mujoco_py/generated/wrappers.pxi":3947
 * 
 * def _mj_fwdActuation(PyMjModel m, PyMjData d):
 *     mj_fwdActuation(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_fwdAcceleration(PyMjModel m, PyMjData d):
 */
  mj_fwdActuation(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3946
 *     mj_fwdVelocity(m.ptr, d.ptr)
 * 
 * def _mj_fwdActuation(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdActuation(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3949
 *     mj_fwdActuation(m.ptr, d.ptr)
 * 
 * def _mj_fwdAcceleration(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdAcceleration(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_81_mj_fwdAcceleration(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_81_mj_fwdAcceleration = {"_mj_fwdAcceleration", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_81_mj_fwdAcceleration, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_81_mj_fwdAcceleration(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdAcceleration (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_fwdAcceleration", 1, 2, 2, 1); __PYX_ERR(3, 3949, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_fwdAcceleration") < 0)) __PYX_ERR(3, 3949, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_fwdAcceleration", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3949, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_fwdAcceleration", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3949, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3949, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_80_mj_fwdAcceleration(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_80_mj_fwdAcceleration(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdAcceleration", 0);

  /* "mujoco_py/generated/wrappers.pxi":3950
 * 
 * def _mj_fwdAcceleration(PyMjModel m, PyMjData d):
 *     mj_fwdAcceleration(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_fwdConstraint(PyMjModel m, PyMjData d):
 */
  mj_fwdAcceleration(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3949
 *     mj_fwdActuation(m.ptr, d.ptr)
 * 
 * def _mj_fwdAcceleration(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdAcceleration(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3952
 *     mj_fwdAcceleration(m.ptr, d.ptr)
 * 
 * def _mj_fwdConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdConstraint(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_83_mj_fwdConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_83_mj_fwdConstraint = {"_mj_fwdConstraint", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_83_mj_fwdConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_83_mj_fwdConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_fwdConstraint", 1, 2, 2, 1); __PYX_ERR(3, 3952, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_fwdConstraint") < 0)) __PYX_ERR(3, 3952, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_fwdConstraint", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3952, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_fwdConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3952, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3952, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_82_mj_fwdConstraint(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_82_mj_fwdConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fwdConstraint", 0);

  /* "mujoco_py/generated/wrappers.pxi":3953
 * 
 * def _mj_fwdConstraint(PyMjModel m, PyMjData d):
 *     mj_fwdConstraint(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_Euler(PyMjModel m, PyMjData d):
 */
  mj_fwdConstraint(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3952
 *     mj_fwdAcceleration(m.ptr, d.ptr)
 * 
 * def _mj_fwdConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdConstraint(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3955
 *     mj_fwdConstraint(m.ptr, d.ptr)
 * 
 * def _mj_Euler(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_Euler(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_85_mj_Euler(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_85_mj_Euler = {"_mj_Euler", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_85_mj_Euler, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_85_mj_Euler(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_Euler (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_Euler", 1, 2, 2, 1); __PYX_ERR(3, 3955, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_Euler") < 0)) __PYX_ERR(3, 3955, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_Euler", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3955, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_Euler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3955, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3955, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_84_mj_Euler(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_84_mj_Euler(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_Euler", 0);

  /* "mujoco_py/generated/wrappers.pxi":3956
 * 
 * def _mj_Euler(PyMjModel m, PyMjData d):
 *     mj_Euler(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_RungeKutta(PyMjModel m, PyMjData d, int N):
 */
  mj_Euler(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3955
 *     mj_fwdConstraint(m.ptr, d.ptr)
 * 
 * def _mj_Euler(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_Euler(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3958
 *     mj_Euler(m.ptr, d.ptr)
 * 
 * def _mj_RungeKutta(PyMjModel m, PyMjData d, int N):             # <<<<<<<<<<<<<<
 *     mj_RungeKutta(m.ptr, d.ptr, N)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_87_mj_RungeKutta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_87_mj_RungeKutta = {"_mj_RungeKutta", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_87_mj_RungeKutta, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_87_mj_RungeKutta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_N;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_RungeKutta (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_N,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_RungeKutta", 1, 3, 3, 1); __PYX_ERR(3, 3958, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_RungeKutta", 1, 3, 3, 2); __PYX_ERR(3, 3958, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_RungeKutta") < 0)) __PYX_ERR(3, 3958, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_N = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_N == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 3958, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_RungeKutta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3958, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_RungeKutta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3958, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3958, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_86_mj_RungeKutta(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_N);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_86_mj_RungeKutta(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_N) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_RungeKutta", 0);

  /* "mujoco_py/generated/wrappers.pxi":3959
 * 
 * def _mj_RungeKutta(PyMjModel m, PyMjData d, int N):
 *     mj_RungeKutta(m.ptr, d.ptr, N)             # <<<<<<<<<<<<<<
 * 
 * def _mj_invPosition(PyMjModel m, PyMjData d):
 */
  mj_RungeKutta(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_N);

  /* "mujoco_py/generated/wrappers.pxi":3958
 *     mj_Euler(m.ptr, d.ptr)
 * 
 * def _mj_RungeKutta(PyMjModel m, PyMjData d, int N):             # <<<<<<<<<<<<<<
 *     mj_RungeKutta(m.ptr, d.ptr, N)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3961
 *     mj_RungeKutta(m.ptr, d.ptr, N)
 * 
 * def _mj_invPosition(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invPosition(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_89_mj_invPosition(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_89_mj_invPosition = {"_mj_invPosition", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_89_mj_invPosition, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_89_mj_invPosition(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_invPosition (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_invPosition", 1, 2, 2, 1); __PYX_ERR(3, 3961, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_invPosition") < 0)) __PYX_ERR(3, 3961, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_invPosition", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3961, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_invPosition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3961, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3961, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_88_mj_invPosition(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_88_mj_invPosition(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_invPosition", 0);

  /* "mujoco_py/generated/wrappers.pxi":3962
 * 
 * def _mj_invPosition(PyMjModel m, PyMjData d):
 *     mj_invPosition(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_invVelocity(PyMjModel m, PyMjData d):
 */
  mj_invPosition(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3961
 *     mj_RungeKutta(m.ptr, d.ptr, N)
 * 
 * def _mj_invPosition(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invPosition(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3964
 *     mj_invPosition(m.ptr, d.ptr)
 * 
 * def _mj_invVelocity(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invVelocity(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_91_mj_invVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_91_mj_invVelocity = {"_mj_invVelocity", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_91_mj_invVelocity, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_91_mj_invVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_invVelocity (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_invVelocity", 1, 2, 2, 1); __PYX_ERR(3, 3964, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_invVelocity") < 0)) __PYX_ERR(3, 3964, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_invVelocity", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3964, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_invVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3964, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3964, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_90_mj_invVelocity(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_90_mj_invVelocity(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_invVelocity", 0);

  /* "mujoco_py/generated/wrappers.pxi":3965
 * 
 * def _mj_invVelocity(PyMjModel m, PyMjData d):
 *     mj_invVelocity(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_invConstraint(PyMjModel m, PyMjData d):
 */
  mj_invVelocity(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3964
 *     mj_invPosition(m.ptr, d.ptr)
 * 
 * def _mj_invVelocity(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invVelocity(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3967
 *     mj_invVelocity(m.ptr, d.ptr)
 * 
 * def _mj_invConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invConstraint(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_93_mj_invConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_93_mj_invConstraint = {"_mj_invConstraint", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_93_mj_invConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_93_mj_invConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_invConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_invConstraint", 1, 2, 2, 1); __PYX_ERR(3, 3967, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_invConstraint") < 0)) __PYX_ERR(3, 3967, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_invConstraint", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3967, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_invConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3967, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3967, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_92_mj_invConstraint(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_92_mj_invConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_invConstraint", 0);

  /* "mujoco_py/generated/wrappers.pxi":3968
 * 
 * def _mj_invConstraint(PyMjModel m, PyMjData d):
 *     mj_invConstraint(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_compareFwdInv(PyMjModel m, PyMjData d):
 */
  mj_invConstraint(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3967
 *     mj_invVelocity(m.ptr, d.ptr)
 * 
 * def _mj_invConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invConstraint(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3970
 *     mj_invConstraint(m.ptr, d.ptr)
 * 
 * def _mj_compareFwdInv(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_compareFwdInv(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_95_mj_compareFwdInv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_95_mj_compareFwdInv = {"_mj_compareFwdInv", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_95_mj_compareFwdInv, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_95_mj_compareFwdInv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_compareFwdInv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_compareFwdInv", 1, 2, 2, 1); __PYX_ERR(3, 3970, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_compareFwdInv") < 0)) __PYX_ERR(3, 3970, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_compareFwdInv", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3970, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_compareFwdInv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3970, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3970, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_94_mj_compareFwdInv(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_94_mj_compareFwdInv(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_compareFwdInv", 0);

  /* "mujoco_py/generated/wrappers.pxi":3971
 * 
 * def _mj_compareFwdInv(PyMjModel m, PyMjData d):
 *     mj_compareFwdInv(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_sensorPos(PyMjModel m, PyMjData d):
 */
  mj_compareFwdInv(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3970
 *     mj_invConstraint(m.ptr, d.ptr)
 * 
 * def _mj_compareFwdInv(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_compareFwdInv(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3973
 *     mj_compareFwdInv(m.ptr, d.ptr)
 * 
 * def _mj_sensorPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorPos(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_97_mj_sensorPos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_97_mj_sensorPos = {"_mj_sensorPos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_97_mj_sensorPos, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_97_mj_sensorPos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_sensorPos (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_sensorPos", 1, 2, 2, 1); __PYX_ERR(3, 3973, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_sensorPos") < 0)) __PYX_ERR(3, 3973, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_sensorPos", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3973, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_sensorPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3973, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3973, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_96_mj_sensorPos(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_96_mj_sensorPos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_sensorPos", 0);

  /* "mujoco_py/generated/wrappers.pxi":3974
 * 
 * def _mj_sensorPos(PyMjModel m, PyMjData d):
 *     mj_sensorPos(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_sensorVel(PyMjModel m, PyMjData d):
 */
  mj_sensorPos(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3973
 *     mj_compareFwdInv(m.ptr, d.ptr)
 * 
 * def _mj_sensorPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorPos(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3976
 *     mj_sensorPos(m.ptr, d.ptr)
 * 
 * def _mj_sensorVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorVel(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_99_mj_sensorVel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_99_mj_sensorVel = {"_mj_sensorVel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_99_mj_sensorVel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_99_mj_sensorVel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_sensorVel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_sensorVel", 1, 2, 2, 1); __PYX_ERR(3, 3976, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_sensorVel") < 0)) __PYX_ERR(3, 3976, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_sensorVel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3976, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_sensorVel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3976, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3976, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_98_mj_sensorVel(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_98_mj_sensorVel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_sensorVel", 0);

  /* "mujoco_py/generated/wrappers.pxi":3977
 * 
 * def _mj_sensorVel(PyMjModel m, PyMjData d):
 *     mj_sensorVel(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_sensorAcc(PyMjModel m, PyMjData d):
 */
  mj_sensorVel(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3976
 *     mj_sensorPos(m.ptr, d.ptr)
 * 
 * def _mj_sensorVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorVel(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3979
 *     mj_sensorVel(m.ptr, d.ptr)
 * 
 * def _mj_sensorAcc(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorAcc(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_101_mj_sensorAcc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_101_mj_sensorAcc = {"_mj_sensorAcc", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_101_mj_sensorAcc, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_101_mj_sensorAcc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_sensorAcc (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_sensorAcc", 1, 2, 2, 1); __PYX_ERR(3, 3979, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_sensorAcc") < 0)) __PYX_ERR(3, 3979, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_sensorAcc", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3979, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_sensorAcc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3979, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3979, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_100_mj_sensorAcc(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_100_mj_sensorAcc(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_sensorAcc", 0);

  /* "mujoco_py/generated/wrappers.pxi":3980
 * 
 * def _mj_sensorAcc(PyMjModel m, PyMjData d):
 *     mj_sensorAcc(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_energyPos(PyMjModel m, PyMjData d):
 */
  mj_sensorAcc(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3979
 *     mj_sensorVel(m.ptr, d.ptr)
 * 
 * def _mj_sensorAcc(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorAcc(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3982
 *     mj_sensorAcc(m.ptr, d.ptr)
 * 
 * def _mj_energyPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_energyPos(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_103_mj_energyPos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_103_mj_energyPos = {"_mj_energyPos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_103_mj_energyPos, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_103_mj_energyPos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_energyPos (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_energyPos", 1, 2, 2, 1); __PYX_ERR(3, 3982, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_energyPos") < 0)) __PYX_ERR(3, 3982, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_energyPos", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3982, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_energyPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3982, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3982, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_102_mj_energyPos(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_102_mj_energyPos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_energyPos", 0);

  /* "mujoco_py/generated/wrappers.pxi":3983
 * 
 * def _mj_energyPos(PyMjModel m, PyMjData d):
 *     mj_energyPos(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_energyVel(PyMjModel m, PyMjData d):
 */
  mj_energyPos(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3982
 *     mj_sensorAcc(m.ptr, d.ptr)
 * 
 * def _mj_energyPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_energyPos(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3985
 *     mj_energyPos(m.ptr, d.ptr)
 * 
 * def _mj_energyVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_energyVel(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_105_mj_energyVel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_105_mj_energyVel = {"_mj_energyVel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_105_mj_energyVel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_105_mj_energyVel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_energyVel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_energyVel", 1, 2, 2, 1); __PYX_ERR(3, 3985, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_energyVel") < 0)) __PYX_ERR(3, 3985, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_energyVel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3985, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_energyVel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3985, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3985, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_104_mj_energyVel(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_104_mj_energyVel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_energyVel", 0);

  /* "mujoco_py/generated/wrappers.pxi":3986
 * 
 * def _mj_energyVel(PyMjModel m, PyMjData d):
 *     mj_energyVel(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_checkPos(PyMjModel m, PyMjData d):
 */
  mj_energyVel(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3985
 *     mj_energyPos(m.ptr, d.ptr)
 * 
 * def _mj_energyVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_energyVel(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3988
 *     mj_energyVel(m.ptr, d.ptr)
 * 
 * def _mj_checkPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkPos(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_107_mj_checkPos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_107_mj_checkPos = {"_mj_checkPos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_107_mj_checkPos, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_107_mj_checkPos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_checkPos (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_checkPos", 1, 2, 2, 1); __PYX_ERR(3, 3988, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_checkPos") < 0)) __PYX_ERR(3, 3988, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_checkPos", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3988, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_checkPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3988, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3988, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_106_mj_checkPos(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_106_mj_checkPos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_checkPos", 0);

  /* "mujoco_py/generated/wrappers.pxi":3989
 * 
 * def _mj_checkPos(PyMjModel m, PyMjData d):
 *     mj_checkPos(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_checkVel(PyMjModel m, PyMjData d):
 */
  mj_checkPos(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3988
 *     mj_energyVel(m.ptr, d.ptr)
 * 
 * def _mj_checkPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkPos(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3991
 *     mj_checkPos(m.ptr, d.ptr)
 * 
 * def _mj_checkVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkVel(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_109_mj_checkVel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_109_mj_checkVel = {"_mj_checkVel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_109_mj_checkVel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_109_mj_checkVel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_checkVel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_checkVel", 1, 2, 2, 1); __PYX_ERR(3, 3991, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_checkVel") < 0)) __PYX_ERR(3, 3991, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_checkVel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3991, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_checkVel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3991, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3991, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_108_mj_checkVel(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_108_mj_checkVel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_checkVel", 0);

  /* "mujoco_py/generated/wrappers.pxi":3992
 * 
 * def _mj_checkVel(PyMjModel m, PyMjData d):
 *     mj_checkVel(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_checkAcc(PyMjModel m, PyMjData d):
 */
  mj_checkVel(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3991
 *     mj_checkPos(m.ptr, d.ptr)
 * 
 * def _mj_checkVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkVel(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3994
 *     mj_checkVel(m.ptr, d.ptr)
 * 
 * def _mj_checkAcc(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkAcc(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_111_mj_checkAcc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_111_mj_checkAcc = {"_mj_checkAcc", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_111_mj_checkAcc, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_111_mj_checkAcc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_checkAcc (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_checkAcc", 1, 2, 2, 1); __PYX_ERR(3, 3994, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_checkAcc") < 0)) __PYX_ERR(3, 3994, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_checkAcc", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3994, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_checkAcc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3994, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3994, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_110_mj_checkAcc(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_110_mj_checkAcc(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_checkAcc", 0);

  /* "mujoco_py/generated/wrappers.pxi":3995
 * 
 * def _mj_checkAcc(PyMjModel m, PyMjData d):
 *     mj_checkAcc(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_kinematics(PyMjModel m, PyMjData d):
 */
  mj_checkAcc(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3994
 *     mj_checkVel(m.ptr, d.ptr)
 * 
 * def _mj_checkAcc(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkAcc(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":3997
 *     mj_checkAcc(m.ptr, d.ptr)
 * 
 * def _mj_kinematics(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_kinematics(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_113_mj_kinematics(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_113_mj_kinematics = {"_mj_kinematics", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_113_mj_kinematics, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_113_mj_kinematics(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_kinematics (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_kinematics", 1, 2, 2, 1); __PYX_ERR(3, 3997, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_kinematics") < 0)) __PYX_ERR(3, 3997, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_kinematics", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 3997, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_kinematics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 3997, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 3997, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_112_mj_kinematics(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_112_mj_kinematics(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_kinematics", 0);

  /* "mujoco_py/generated/wrappers.pxi":3998
 * 
 * def _mj_kinematics(PyMjModel m, PyMjData d):
 *     mj_kinematics(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_comPos(PyMjModel m, PyMjData d):
 */
  mj_kinematics(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":3997
 *     mj_checkAcc(m.ptr, d.ptr)
 * 
 * def _mj_kinematics(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_kinematics(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4000
 *     mj_kinematics(m.ptr, d.ptr)
 * 
 * def _mj_comPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_comPos(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_115_mj_comPos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_115_mj_comPos = {"_mj_comPos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_115_mj_comPos, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_115_mj_comPos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_comPos (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_comPos", 1, 2, 2, 1); __PYX_ERR(3, 4000, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_comPos") < 0)) __PYX_ERR(3, 4000, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_comPos", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4000, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_comPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4000, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4000, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_114_mj_comPos(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_114_mj_comPos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_comPos", 0);

  /* "mujoco_py/generated/wrappers.pxi":4001
 * 
 * def _mj_comPos(PyMjModel m, PyMjData d):
 *     mj_comPos(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_camlight(PyMjModel m, PyMjData d):
 */
  mj_comPos(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4000
 *     mj_kinematics(m.ptr, d.ptr)
 * 
 * def _mj_comPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_comPos(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4003
 *     mj_comPos(m.ptr, d.ptr)
 * 
 * def _mj_camlight(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_camlight(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_117_mj_camlight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_117_mj_camlight = {"_mj_camlight", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_117_mj_camlight, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_117_mj_camlight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_camlight (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_camlight", 1, 2, 2, 1); __PYX_ERR(3, 4003, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_camlight") < 0)) __PYX_ERR(3, 4003, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_camlight", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4003, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_camlight", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4003, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4003, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_116_mj_camlight(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_116_mj_camlight(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_camlight", 0);

  /* "mujoco_py/generated/wrappers.pxi":4004
 * 
 * def _mj_camlight(PyMjModel m, PyMjData d):
 *     mj_camlight(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_tendon(PyMjModel m, PyMjData d):
 */
  mj_camlight(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4003
 *     mj_comPos(m.ptr, d.ptr)
 * 
 * def _mj_camlight(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_camlight(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4006
 *     mj_camlight(m.ptr, d.ptr)
 * 
 * def _mj_tendon(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_tendon(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_119_mj_tendon(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_119_mj_tendon = {"_mj_tendon", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_119_mj_tendon, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_119_mj_tendon(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_tendon (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_tendon", 1, 2, 2, 1); __PYX_ERR(3, 4006, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_tendon") < 0)) __PYX_ERR(3, 4006, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_tendon", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4006, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_tendon", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4006, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4006, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_118_mj_tendon(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_118_mj_tendon(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_tendon", 0);

  /* "mujoco_py/generated/wrappers.pxi":4007
 * 
 * def _mj_tendon(PyMjModel m, PyMjData d):
 *     mj_tendon(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_transmission(PyMjModel m, PyMjData d):
 */
  mj_tendon(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4006
 *     mj_camlight(m.ptr, d.ptr)
 * 
 * def _mj_tendon(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_tendon(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4009
 *     mj_tendon(m.ptr, d.ptr)
 * 
 * def _mj_transmission(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_transmission(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_121_mj_transmission(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_121_mj_transmission = {"_mj_transmission", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_121_mj_transmission, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_121_mj_transmission(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_transmission (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_transmission", 1, 2, 2, 1); __PYX_ERR(3, 4009, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_transmission") < 0)) __PYX_ERR(3, 4009, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_transmission", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4009, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_transmission", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4009, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4009, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_120_mj_transmission(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_120_mj_transmission(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_transmission", 0);

  /* "mujoco_py/generated/wrappers.pxi":4010
 * 
 * def _mj_transmission(PyMjModel m, PyMjData d):
 *     mj_transmission(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_crb(PyMjModel m, PyMjData d):
 */
  mj_transmission(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4009
 *     mj_tendon(m.ptr, d.ptr)
 * 
 * def _mj_transmission(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_transmission(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4012
 *     mj_transmission(m.ptr, d.ptr)
 * 
 * def _mj_crb(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_crb(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_123_mj_crb(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_123_mj_crb = {"_mj_crb", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_123_mj_crb, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_123_mj_crb(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_crb (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_crb", 1, 2, 2, 1); __PYX_ERR(3, 4012, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_crb") < 0)) __PYX_ERR(3, 4012, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_crb", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4012, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_crb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4012, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4012, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_122_mj_crb(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_122_mj_crb(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_crb", 0);

  /* "mujoco_py/generated/wrappers.pxi":4013
 * 
 * def _mj_crb(PyMjModel m, PyMjData d):
 *     mj_crb(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_factorM(PyMjModel m, PyMjData d):
 */
  mj_crb(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4012
 *     mj_transmission(m.ptr, d.ptr)
 * 
 * def _mj_crb(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_crb(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4015
 *     mj_crb(m.ptr, d.ptr)
 * 
 * def _mj_factorM(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_factorM(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_125_mj_factorM(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_125_mj_factorM = {"_mj_factorM", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_125_mj_factorM, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_125_mj_factorM(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_factorM (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_factorM", 1, 2, 2, 1); __PYX_ERR(3, 4015, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_factorM") < 0)) __PYX_ERR(3, 4015, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_factorM", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4015, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_factorM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4015, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4015, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_124_mj_factorM(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_124_mj_factorM(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_factorM", 0);

  /* "mujoco_py/generated/wrappers.pxi":4016
 * 
 * def _mj_factorM(PyMjModel m, PyMjData d):
 *     mj_factorM(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_solveM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):
 */
  mj_factorM(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4015
 *     mj_crb(m.ptr, d.ptr)
 * 
 * def _mj_factorM(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_factorM(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4018
 *     mj_factorM(m.ptr, d.ptr)
 * 
 * def _mj_solveM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):             # <<<<<<<<<<<<<<
 *     mj_solveM(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_127_mj_solveM(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_127_mj_solveM = {"_mj_solveM", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_127_mj_solveM, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_127_mj_solveM(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_x = 0;
  PyArrayObject *__pyx_v_y = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_solveM (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_n,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_solveM", 1, 5, 5, 1); __PYX_ERR(3, 4018, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_solveM", 1, 5, 5, 2); __PYX_ERR(3, 4018, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_solveM", 1, 5, 5, 3); __PYX_ERR(3, 4018, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_solveM", 1, 5, 5, 4); __PYX_ERR(3, 4018, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_solveM") < 0)) __PYX_ERR(3, 4018, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_x = ((PyArrayObject *)values[2]);
    __pyx_v_y = ((PyArrayObject *)values[3]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4018, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_solveM", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4018, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_solveM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4018, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4018, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(3, 4018, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_5numpy_ndarray, 1, "y", 0))) __PYX_ERR(3, 4018, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_126_mj_solveM(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_x, __pyx_v_y, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_126_mj_solveM(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_y, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_x;
  __Pyx_Buffer __pyx_pybuffer_x;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_y;
  __Pyx_Buffer __pyx_pybuffer_y;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_solveM", 0);
  __pyx_pybuffer_x.pybuffer.buf = NULL;
  __pyx_pybuffer_x.refcount = 0;
  __pyx_pybuffernd_x.data = NULL;
  __pyx_pybuffernd_x.rcbuffer = &__pyx_pybuffer_x;
  __pyx_pybuffer_y.pybuffer.buf = NULL;
  __pyx_pybuffer_y.refcount = 0;
  __pyx_pybuffernd_y.data = NULL;
  __pyx_pybuffernd_y.rcbuffer = &__pyx_pybuffer_y;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x.rcbuffer->pybuffer, (PyObject*)__pyx_v_x, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4018, __pyx_L1_error)
  }
  __pyx_pybuffernd_x.diminfo[0].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x.diminfo[0].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_y.rcbuffer->pybuffer, (PyObject*)__pyx_v_y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4018, __pyx_L1_error)
  }
  __pyx_pybuffernd_y.diminfo[0].strides = __pyx_pybuffernd_y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_y.diminfo[0].shape = __pyx_pybuffernd_y.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4019
 * 
 * def _mj_solveM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):
 *     mj_solveM(m.ptr, d.ptr, &x[0], &y[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mj_solveM2(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_x.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_x.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4019, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_y.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_y.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4019, __pyx_L1_error)
  }
  mj_solveM(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_x.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_x.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_y.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_y.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4018
 *     mj_factorM(m.ptr, d.ptr)
 * 
 * def _mj_solveM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):             # <<<<<<<<<<<<<<
 *     mj_solveM(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_y.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_solveM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_y.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4021
 *     mj_solveM(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 * def _mj_solveM2(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):             # <<<<<<<<<<<<<<
 *     mj_solveM2(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_129_mj_solveM2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_129_mj_solveM2 = {"_mj_solveM2", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_129_mj_solveM2, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_129_mj_solveM2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_x = 0;
  PyArrayObject *__pyx_v_y = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_solveM2 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_n,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_solveM2", 1, 5, 5, 1); __PYX_ERR(3, 4021, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_solveM2", 1, 5, 5, 2); __PYX_ERR(3, 4021, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_solveM2", 1, 5, 5, 3); __PYX_ERR(3, 4021, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_solveM2", 1, 5, 5, 4); __PYX_ERR(3, 4021, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_solveM2") < 0)) __PYX_ERR(3, 4021, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_x = ((PyArrayObject *)values[2]);
    __pyx_v_y = ((PyArrayObject *)values[3]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4021, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_solveM2", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4021, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_solveM2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4021, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4021, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(3, 4021, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_5numpy_ndarray, 1, "y", 0))) __PYX_ERR(3, 4021, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_128_mj_solveM2(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_x, __pyx_v_y, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_128_mj_solveM2(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_y, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_x;
  __Pyx_Buffer __pyx_pybuffer_x;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_y;
  __Pyx_Buffer __pyx_pybuffer_y;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_solveM2", 0);
  __pyx_pybuffer_x.pybuffer.buf = NULL;
  __pyx_pybuffer_x.refcount = 0;
  __pyx_pybuffernd_x.data = NULL;
  __pyx_pybuffernd_x.rcbuffer = &__pyx_pybuffer_x;
  __pyx_pybuffer_y.pybuffer.buf = NULL;
  __pyx_pybuffer_y.refcount = 0;
  __pyx_pybuffernd_y.data = NULL;
  __pyx_pybuffernd_y.rcbuffer = &__pyx_pybuffer_y;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x.rcbuffer->pybuffer, (PyObject*)__pyx_v_x, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4021, __pyx_L1_error)
  }
  __pyx_pybuffernd_x.diminfo[0].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x.diminfo[0].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_y.rcbuffer->pybuffer, (PyObject*)__pyx_v_y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4021, __pyx_L1_error)
  }
  __pyx_pybuffernd_y.diminfo[0].strides = __pyx_pybuffernd_y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_y.diminfo[0].shape = __pyx_pybuffernd_y.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4022
 * 
 * def _mj_solveM2(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):
 *     mj_solveM2(m.ptr, d.ptr, &x[0], &y[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mj_comVel(PyMjModel m, PyMjData d):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_x.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_x.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4022, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_y.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_y.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4022, __pyx_L1_error)
  }
  mj_solveM2(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_x.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_x.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_y.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_y.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4021
 *     mj_solveM(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 * def _mj_solveM2(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):             # <<<<<<<<<<<<<<
 *     mj_solveM2(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_y.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_solveM2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_y.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4024
 *     mj_solveM2(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 * def _mj_comVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_comVel(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_131_mj_comVel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_131_mj_comVel = {"_mj_comVel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_131_mj_comVel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_131_mj_comVel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_comVel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_comVel", 1, 2, 2, 1); __PYX_ERR(3, 4024, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_comVel") < 0)) __PYX_ERR(3, 4024, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_comVel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4024, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_comVel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4024, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4024, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_130_mj_comVel(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_130_mj_comVel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_comVel", 0);

  /* "mujoco_py/generated/wrappers.pxi":4025
 * 
 * def _mj_comVel(PyMjModel m, PyMjData d):
 *     mj_comVel(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_passive(PyMjModel m, PyMjData d):
 */
  mj_comVel(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4024
 *     mj_solveM2(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 * def _mj_comVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_comVel(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4027
 *     mj_comVel(m.ptr, d.ptr)
 * 
 * def _mj_passive(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_passive(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_133_mj_passive(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_133_mj_passive = {"_mj_passive", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_133_mj_passive, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_133_mj_passive(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_passive (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_passive", 1, 2, 2, 1); __PYX_ERR(3, 4027, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_passive") < 0)) __PYX_ERR(3, 4027, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_passive", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4027, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_passive", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4027, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4027, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_132_mj_passive(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_132_mj_passive(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_passive", 0);

  /* "mujoco_py/generated/wrappers.pxi":4028
 * 
 * def _mj_passive(PyMjModel m, PyMjData d):
 *     mj_passive(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_rne(PyMjModel m, PyMjData d, int flg_acc, np.ndarray[np.float64_t, mode="c", ndim=1] result):
 */
  mj_passive(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4027
 *     mj_comVel(m.ptr, d.ptr)
 * 
 * def _mj_passive(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_passive(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4030
 *     mj_passive(m.ptr, d.ptr)
 * 
 * def _mj_rne(PyMjModel m, PyMjData d, int flg_acc, np.ndarray[np.float64_t, mode="c", ndim=1] result):             # <<<<<<<<<<<<<<
 *     mj_rne(m.ptr, d.ptr, flg_acc, &result[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_135_mj_rne(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_135_mj_rne = {"_mj_rne", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_135_mj_rne, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_135_mj_rne(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_flg_acc;
  PyArrayObject *__pyx_v_result = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_rne (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_flg_acc,&__pyx_n_s_result,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rne", 1, 4, 4, 1); __PYX_ERR(3, 4030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_acc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rne", 1, 4, 4, 2); __PYX_ERR(3, 4030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_result)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rne", 1, 4, 4, 3); __PYX_ERR(3, 4030, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_rne") < 0)) __PYX_ERR(3, 4030, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_flg_acc = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_flg_acc == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4030, __pyx_L3_error)
    __pyx_v_result = ((PyArrayObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_rne", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4030, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_rne", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4030, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4030, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_result), __pyx_ptype_5numpy_ndarray, 1, "result", 0))) __PYX_ERR(3, 4030, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_134_mj_rne(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_flg_acc, __pyx_v_result);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_134_mj_rne(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_flg_acc, PyArrayObject *__pyx_v_result) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_result;
  __Pyx_Buffer __pyx_pybuffer_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mj_rne", 0);
  __pyx_pybuffer_result.pybuffer.buf = NULL;
  __pyx_pybuffer_result.refcount = 0;
  __pyx_pybuffernd_result.data = NULL;
  __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4030, __pyx_L1_error)
  }
  __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4031
 * 
 * def _mj_rne(PyMjModel m, PyMjData d, int flg_acc, np.ndarray[np.float64_t, mode="c", ndim=1] result):
 *     mj_rne(m.ptr, d.ptr, flg_acc, &result[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_rnePostConstraint(PyMjModel m, PyMjData d):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_result.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4031, __pyx_L1_error)
  }
  mj_rne(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_flg_acc, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_result.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4030
 *     mj_passive(m.ptr, d.ptr)
 * 
 * def _mj_rne(PyMjModel m, PyMjData d, int flg_acc, np.ndarray[np.float64_t, mode="c", ndim=1] result):             # <<<<<<<<<<<<<<
 *     mj_rne(m.ptr, d.ptr, flg_acc, &result[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_rne", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4033
 *     mj_rne(m.ptr, d.ptr, flg_acc, &result[0])
 * 
 * def _mj_rnePostConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_rnePostConstraint(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_137_mj_rnePostConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_137_mj_rnePostConstraint = {"_mj_rnePostConstraint", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_137_mj_rnePostConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_137_mj_rnePostConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_rnePostConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rnePostConstraint", 1, 2, 2, 1); __PYX_ERR(3, 4033, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_rnePostConstraint") < 0)) __PYX_ERR(3, 4033, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_rnePostConstraint", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4033, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_rnePostConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4033, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4033, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_136_mj_rnePostConstraint(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_136_mj_rnePostConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_rnePostConstraint", 0);

  /* "mujoco_py/generated/wrappers.pxi":4034
 * 
 * def _mj_rnePostConstraint(PyMjModel m, PyMjData d):
 *     mj_rnePostConstraint(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_collision(PyMjModel m, PyMjData d):
 */
  mj_rnePostConstraint(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4033
 *     mj_rne(m.ptr, d.ptr, flg_acc, &result[0])
 * 
 * def _mj_rnePostConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_rnePostConstraint(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4036
 *     mj_rnePostConstraint(m.ptr, d.ptr)
 * 
 * def _mj_collision(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_collision(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_139_mj_collision(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_139_mj_collision = {"_mj_collision", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_139_mj_collision, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_139_mj_collision(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_collision (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_collision", 1, 2, 2, 1); __PYX_ERR(3, 4036, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_collision") < 0)) __PYX_ERR(3, 4036, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_collision", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4036, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_collision", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4036, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4036, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_138_mj_collision(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_138_mj_collision(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_collision", 0);

  /* "mujoco_py/generated/wrappers.pxi":4037
 * 
 * def _mj_collision(PyMjModel m, PyMjData d):
 *     mj_collision(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_makeConstraint(PyMjModel m, PyMjData d):
 */
  mj_collision(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4036
 *     mj_rnePostConstraint(m.ptr, d.ptr)
 * 
 * def _mj_collision(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_collision(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4039
 *     mj_collision(m.ptr, d.ptr)
 * 
 * def _mj_makeConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_makeConstraint(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_141_mj_makeConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_141_mj_makeConstraint = {"_mj_makeConstraint", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_141_mj_makeConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_141_mj_makeConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_makeConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_makeConstraint", 1, 2, 2, 1); __PYX_ERR(3, 4039, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_makeConstraint") < 0)) __PYX_ERR(3, 4039, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_makeConstraint", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4039, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_makeConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4039, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4039, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_140_mj_makeConstraint(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_140_mj_makeConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_makeConstraint", 0);

  /* "mujoco_py/generated/wrappers.pxi":4040
 * 
 * def _mj_makeConstraint(PyMjModel m, PyMjData d):
 *     mj_makeConstraint(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_projectConstraint(PyMjModel m, PyMjData d):
 */
  mj_makeConstraint(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4039
 *     mj_collision(m.ptr, d.ptr)
 * 
 * def _mj_makeConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_makeConstraint(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4042
 *     mj_makeConstraint(m.ptr, d.ptr)
 * 
 * def _mj_projectConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_projectConstraint(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_143_mj_projectConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_143_mj_projectConstraint = {"_mj_projectConstraint", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_143_mj_projectConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_143_mj_projectConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_projectConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_projectConstraint", 1, 2, 2, 1); __PYX_ERR(3, 4042, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_projectConstraint") < 0)) __PYX_ERR(3, 4042, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_projectConstraint", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4042, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_projectConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4042, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4042, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_142_mj_projectConstraint(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_142_mj_projectConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_projectConstraint", 0);

  /* "mujoco_py/generated/wrappers.pxi":4043
 * 
 * def _mj_projectConstraint(PyMjModel m, PyMjData d):
 *     mj_projectConstraint(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_referenceConstraint(PyMjModel m, PyMjData d):
 */
  mj_projectConstraint(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4042
 *     mj_makeConstraint(m.ptr, d.ptr)
 * 
 * def _mj_projectConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_projectConstraint(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4045
 *     mj_projectConstraint(m.ptr, d.ptr)
 * 
 * def _mj_referenceConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_referenceConstraint(m.ptr, d.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_145_mj_referenceConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_145_mj_referenceConstraint = {"_mj_referenceConstraint", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_145_mj_referenceConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_145_mj_referenceConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_referenceConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_referenceConstraint", 1, 2, 2, 1); __PYX_ERR(3, 4045, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_referenceConstraint") < 0)) __PYX_ERR(3, 4045, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_referenceConstraint", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4045, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_referenceConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4045, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4045, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_144_mj_referenceConstraint(__pyx_self, __pyx_v_m, __pyx_v_d);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_144_mj_referenceConstraint(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_referenceConstraint", 0);

  /* "mujoco_py/generated/wrappers.pxi":4046
 * 
 * def _mj_referenceConstraint(PyMjModel m, PyMjData d):
 *     mj_referenceConstraint(m.ptr, d.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_constraintUpdate(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jar, np.ndarray[np.float64_t, mode="c", ndim=1] cost, int flg_coneHessian):
 */
  mj_referenceConstraint(__pyx_v_m->ptr, __pyx_v_d->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4045
 *     mj_projectConstraint(m.ptr, d.ptr)
 * 
 * def _mj_referenceConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_referenceConstraint(m.ptr, d.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4048
 *     mj_referenceConstraint(m.ptr, d.ptr)
 * 
 * def _mj_constraintUpdate(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jar, np.ndarray[np.float64_t, mode="c", ndim=1] cost, int flg_coneHessian):             # <<<<<<<<<<<<<<
 *     mj_constraintUpdate(m.ptr, d.ptr, &jar[0], &cost[0], flg_coneHessian)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_147_mj_constraintUpdate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_147_mj_constraintUpdate = {"_mj_constraintUpdate", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_147_mj_constraintUpdate, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_147_mj_constraintUpdate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_jar = 0;
  PyArrayObject *__pyx_v_cost = 0;
  int __pyx_v_flg_coneHessian;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_constraintUpdate (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_jar,&__pyx_n_s_cost,&__pyx_n_s_flg_coneHessian,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_constraintUpdate", 1, 5, 5, 1); __PYX_ERR(3, 4048, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jar)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_constraintUpdate", 1, 5, 5, 2); __PYX_ERR(3, 4048, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_constraintUpdate", 1, 5, 5, 3); __PYX_ERR(3, 4048, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_coneHessian)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_constraintUpdate", 1, 5, 5, 4); __PYX_ERR(3, 4048, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_constraintUpdate") < 0)) __PYX_ERR(3, 4048, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_jar = ((PyArrayObject *)values[2]);
    __pyx_v_cost = ((PyArrayObject *)values[3]);
    __pyx_v_flg_coneHessian = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_flg_coneHessian == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4048, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_constraintUpdate", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4048, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_constraintUpdate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4048, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4048, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jar), __pyx_ptype_5numpy_ndarray, 1, "jar", 0))) __PYX_ERR(3, 4048, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cost), __pyx_ptype_5numpy_ndarray, 1, "cost", 0))) __PYX_ERR(3, 4048, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_146_mj_constraintUpdate(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_jar, __pyx_v_cost, __pyx_v_flg_coneHessian);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_146_mj_constraintUpdate(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jar, PyArrayObject *__pyx_v_cost, int __pyx_v_flg_coneHessian) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_cost;
  __Pyx_Buffer __pyx_pybuffer_cost;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jar;
  __Pyx_Buffer __pyx_pybuffer_jar;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_constraintUpdate", 0);
  __pyx_pybuffer_jar.pybuffer.buf = NULL;
  __pyx_pybuffer_jar.refcount = 0;
  __pyx_pybuffernd_jar.data = NULL;
  __pyx_pybuffernd_jar.rcbuffer = &__pyx_pybuffer_jar;
  __pyx_pybuffer_cost.pybuffer.buf = NULL;
  __pyx_pybuffer_cost.refcount = 0;
  __pyx_pybuffernd_cost.data = NULL;
  __pyx_pybuffernd_cost.rcbuffer = &__pyx_pybuffer_cost;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jar.rcbuffer->pybuffer, (PyObject*)__pyx_v_jar, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4048, __pyx_L1_error)
  }
  __pyx_pybuffernd_jar.diminfo[0].strides = __pyx_pybuffernd_jar.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jar.diminfo[0].shape = __pyx_pybuffernd_jar.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cost.rcbuffer->pybuffer, (PyObject*)__pyx_v_cost, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4048, __pyx_L1_error)
  }
  __pyx_pybuffernd_cost.diminfo[0].strides = __pyx_pybuffernd_cost.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cost.diminfo[0].shape = __pyx_pybuffernd_cost.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4049
 * 
 * def _mj_constraintUpdate(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jar, np.ndarray[np.float64_t, mode="c", ndim=1] cost, int flg_coneHessian):
 *     mj_constraintUpdate(m.ptr, d.ptr, &jar[0], &cost[0], flg_coneHessian)             # <<<<<<<<<<<<<<
 * 
 * def _mj_addContact(PyMjModel m, PyMjData d, PyMjContact con):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_jar.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_jar.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4049, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_cost.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_cost.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4049, __pyx_L1_error)
  }
  mj_constraintUpdate(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jar.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_jar.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cost.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_cost.diminfo[0].strides))), __pyx_v_flg_coneHessian);

  /* "mujoco_py/generated/wrappers.pxi":4048
 *     mj_referenceConstraint(m.ptr, d.ptr)
 * 
 * def _mj_constraintUpdate(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jar, np.ndarray[np.float64_t, mode="c", ndim=1] cost, int flg_coneHessian):             # <<<<<<<<<<<<<<
 *     mj_constraintUpdate(m.ptr, d.ptr, &jar[0], &cost[0], flg_coneHessian)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cost.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jar.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_constraintUpdate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cost.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jar.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4051
 *     mj_constraintUpdate(m.ptr, d.ptr, &jar[0], &cost[0], flg_coneHessian)
 * 
 * def _mj_addContact(PyMjModel m, PyMjData d, PyMjContact con):             # <<<<<<<<<<<<<<
 *     return mj_addContact(m.ptr, d.ptr, con.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_149_mj_addContact(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_149_mj_addContact = {"_mj_addContact", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_149_mj_addContact, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_149_mj_addContact(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_con = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_addContact (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_con,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_addContact", 1, 3, 3, 1); __PYX_ERR(3, 4051, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_addContact", 1, 3, 3, 2); __PYX_ERR(3, 4051, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_addContact") < 0)) __PYX_ERR(3, 4051, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_addContact", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4051, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_addContact", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4051, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4051, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjContact, 1, "con", 0))) __PYX_ERR(3, 4051, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_148_mj_addContact(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_con);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_148_mj_addContact(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *__pyx_v_con) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mj_addContact", 0);

  /* "mujoco_py/generated/wrappers.pxi":4052
 * 
 * def _mj_addContact(PyMjModel m, PyMjData d, PyMjContact con):
 *     return mj_addContact(m.ptr, d.ptr, con.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_isPyramidal(PyMjModel m):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(mj_addContact(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_con->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4051
 *     mj_constraintUpdate(m.ptr, d.ptr, &jar[0], &cost[0], flg_coneHessian)
 * 
 * def _mj_addContact(PyMjModel m, PyMjData d, PyMjContact con):             # <<<<<<<<<<<<<<
 *     return mj_addContact(m.ptr, d.ptr, con.ptr)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_addContact", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4054
 *     return mj_addContact(m.ptr, d.ptr, con.ptr)
 * 
 * def _mj_isPyramidal(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isPyramidal(m.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_151_mj_isPyramidal(PyObject *__pyx_self, PyObject *__pyx_v_m); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_151_mj_isPyramidal = {"_mj_isPyramidal", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_151_mj_isPyramidal, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_151_mj_isPyramidal(PyObject *__pyx_self, PyObject *__pyx_v_m) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_isPyramidal (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4054, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_150_mj_isPyramidal(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_m));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_150_mj_isPyramidal(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mj_isPyramidal", 0);

  /* "mujoco_py/generated/wrappers.pxi":4055
 * 
 * def _mj_isPyramidal(PyMjModel m):
 *     return mj_isPyramidal(m.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_isSparse(PyMjModel m):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(mj_isPyramidal(__pyx_v_m->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4054
 *     return mj_addContact(m.ptr, d.ptr, con.ptr)
 * 
 * def _mj_isPyramidal(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isPyramidal(m.ptr)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_isPyramidal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4057
 *     return mj_isPyramidal(m.ptr)
 * 
 * def _mj_isSparse(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isSparse(m.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_153_mj_isSparse(PyObject *__pyx_self, PyObject *__pyx_v_m); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_153_mj_isSparse = {"_mj_isSparse", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_153_mj_isSparse, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_153_mj_isSparse(PyObject *__pyx_self, PyObject *__pyx_v_m) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_isSparse (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4057, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_152_mj_isSparse(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_m));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_152_mj_isSparse(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mj_isSparse", 0);

  /* "mujoco_py/generated/wrappers.pxi":4058
 * 
 * def _mj_isSparse(PyMjModel m):
 *     return mj_isSparse(m.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_isDual(PyMjModel m):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(mj_isSparse(__pyx_v_m->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4057
 *     return mj_isPyramidal(m.ptr)
 * 
 * def _mj_isSparse(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isSparse(m.ptr)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_isSparse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4060
 *     return mj_isSparse(m.ptr)
 * 
 * def _mj_isDual(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isDual(m.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_155_mj_isDual(PyObject *__pyx_self, PyObject *__pyx_v_m); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_155_mj_isDual = {"_mj_isDual", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_155_mj_isDual, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_155_mj_isDual(PyObject *__pyx_self, PyObject *__pyx_v_m) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_isDual (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4060, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_154_mj_isDual(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_m));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_154_mj_isDual(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mj_isDual", 0);

  /* "mujoco_py/generated/wrappers.pxi":4061
 * 
 * def _mj_isDual(PyMjModel m):
 *     return mj_isDual(m.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_mulJacVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(mj_isDual(__pyx_v_m->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4060
 *     return mj_isSparse(m.ptr)
 * 
 * def _mj_isDual(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isDual(m.ptr)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_isDual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4063
 *     return mj_isDual(m.ptr)
 * 
 * def _mj_mulJacVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulJacVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_157_mj_mulJacVec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_157_mj_mulJacVec = {"_mj_mulJacVec", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_157_mj_mulJacVec, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_157_mj_mulJacVec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_mulJacVec (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_res,&__pyx_n_s_vec,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_mulJacVec", 1, 4, 4, 1); __PYX_ERR(3, 4063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_mulJacVec", 1, 4, 4, 2); __PYX_ERR(3, 4063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_mulJacVec", 1, 4, 4, 3); __PYX_ERR(3, 4063, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_mulJacVec") < 0)) __PYX_ERR(3, 4063, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_res = ((PyArrayObject *)values[2]);
    __pyx_v_vec = ((PyArrayObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_mulJacVec", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4063, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_mulJacVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4063, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4063, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4063, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4063, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_156_mj_mulJacVec(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_res, __pyx_v_vec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_156_mj_mulJacVec(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_mulJacVec", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4063, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4063, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4064
 * 
 * def _mj_mulJacVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     mj_mulJacVec(m.ptr, d.ptr, &res[0], &vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_mulJacTVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4064, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4064, __pyx_L1_error)
  }
  mj_mulJacVec(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4063
 *     return mj_isDual(m.ptr)
 * 
 * def _mj_mulJacVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulJacVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_mulJacVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4066
 *     mj_mulJacVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_mulJacTVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulJacTVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_159_mj_mulJacTVec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_159_mj_mulJacTVec = {"_mj_mulJacTVec", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_159_mj_mulJacTVec, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_159_mj_mulJacTVec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_mulJacTVec (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_res,&__pyx_n_s_vec,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_mulJacTVec", 1, 4, 4, 1); __PYX_ERR(3, 4066, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_mulJacTVec", 1, 4, 4, 2); __PYX_ERR(3, 4066, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_mulJacTVec", 1, 4, 4, 3); __PYX_ERR(3, 4066, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_mulJacTVec") < 0)) __PYX_ERR(3, 4066, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_res = ((PyArrayObject *)values[2]);
    __pyx_v_vec = ((PyArrayObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_mulJacTVec", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4066, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_mulJacTVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4066, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4066, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4066, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4066, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_158_mj_mulJacTVec(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_res, __pyx_v_vec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_158_mj_mulJacTVec(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_mulJacTVec", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4066, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4066, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4067
 * 
 * def _mj_mulJacTVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     mj_mulJacTVec(m.ptr, d.ptr, &res[0], &vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_jac(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4067, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4067, __pyx_L1_error)
  }
  mj_mulJacTVec(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4066
 *     mj_mulJacVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_mulJacTVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulJacTVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_mulJacTVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4069
 *     mj_mulJacTVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_jac(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body):             # <<<<<<<<<<<<<<
 *     mj_jac(m.ptr, d.ptr, &jacp[0], &jacr[0], &point[0], body)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_161_mj_jac(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_161_mj_jac = {"_mj_jac", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_161_mj_jac, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_161_mj_jac(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_jacp = 0;
  PyArrayObject *__pyx_v_jacr = 0;
  PyArrayObject *__pyx_v_point = 0;
  int __pyx_v_body;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_jac (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_jacp,&__pyx_n_s_jacr,&__pyx_n_s_point,&__pyx_n_s_body,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jac", 1, 6, 6, 1); __PYX_ERR(3, 4069, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacp)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jac", 1, 6, 6, 2); __PYX_ERR(3, 4069, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jac", 1, 6, 6, 3); __PYX_ERR(3, 4069, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_point)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jac", 1, 6, 6, 4); __PYX_ERR(3, 4069, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_body)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jac", 1, 6, 6, 5); __PYX_ERR(3, 4069, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_jac") < 0)) __PYX_ERR(3, 4069, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_jacp = ((PyArrayObject *)values[2]);
    __pyx_v_jacr = ((PyArrayObject *)values[3]);
    __pyx_v_point = ((PyArrayObject *)values[4]);
    __pyx_v_body = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_body == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4069, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_jac", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4069, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jac", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4069, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4069, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacp), __pyx_ptype_5numpy_ndarray, 1, "jacp", 0))) __PYX_ERR(3, 4069, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacr), __pyx_ptype_5numpy_ndarray, 1, "jacr", 0))) __PYX_ERR(3, 4069, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_point), __pyx_ptype_5numpy_ndarray, 1, "point", 0))) __PYX_ERR(3, 4069, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_160_mj_jac(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_jacp, __pyx_v_jacr, __pyx_v_point, __pyx_v_body);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_160_mj_jac(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, PyArrayObject *__pyx_v_point, int __pyx_v_body) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacp;
  __Pyx_Buffer __pyx_pybuffer_jacp;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacr;
  __Pyx_Buffer __pyx_pybuffer_jacr;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_point;
  __Pyx_Buffer __pyx_pybuffer_point;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mj_jac", 0);
  __pyx_pybuffer_jacp.pybuffer.buf = NULL;
  __pyx_pybuffer_jacp.refcount = 0;
  __pyx_pybuffernd_jacp.data = NULL;
  __pyx_pybuffernd_jacp.rcbuffer = &__pyx_pybuffer_jacp;
  __pyx_pybuffer_jacr.pybuffer.buf = NULL;
  __pyx_pybuffer_jacr.refcount = 0;
  __pyx_pybuffernd_jacr.data = NULL;
  __pyx_pybuffernd_jacr.rcbuffer = &__pyx_pybuffer_jacr;
  __pyx_pybuffer_point.pybuffer.buf = NULL;
  __pyx_pybuffer_point.refcount = 0;
  __pyx_pybuffernd_point.data = NULL;
  __pyx_pybuffernd_point.rcbuffer = &__pyx_pybuffer_point;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4069, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4069, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_point.rcbuffer->pybuffer, (PyObject*)__pyx_v_point, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4069, __pyx_L1_error)
  }
  __pyx_pybuffernd_point.diminfo[0].strides = __pyx_pybuffernd_point.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_point.diminfo[0].shape = __pyx_pybuffernd_point.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4070
 * 
 * def _mj_jac(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body):
 *     mj_jac(m.ptr, d.ptr, &jacp[0], &jacr[0], &point[0], body)             # <<<<<<<<<<<<<<
 * 
 * def _mj_jacBody(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_jacp.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_jacp.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4070, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_jacr.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_jacr.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4070, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_point.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_point.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4070, __pyx_L1_error)
  }
  mj_jac(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacp.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_jacp.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacr.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_jacr.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_point.diminfo[0].strides))), __pyx_v_body);

  /* "mujoco_py/generated/wrappers.pxi":4069
 *     mj_mulJacTVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_jac(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body):             # <<<<<<<<<<<<<<
 *     mj_jac(m.ptr, d.ptr, &jacp[0], &jacr[0], &point[0], body)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jac", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4072
 *     mj_jac(m.ptr, d.ptr, &jacp[0], &jacr[0], &point[0], body)
 * 
 * def _mj_jacBody(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):             # <<<<<<<<<<<<<<
 *     mj_jacBody(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_163_mj_jacBody(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_163_mj_jacBody = {"_mj_jacBody", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_163_mj_jacBody, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_163_mj_jacBody(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_jacp = 0;
  PyArrayObject *__pyx_v_jacr = 0;
  int __pyx_v_body;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_jacBody (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_jacp,&__pyx_n_s_jacr,&__pyx_n_s_body,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacBody", 1, 5, 5, 1); __PYX_ERR(3, 4072, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacp)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacBody", 1, 5, 5, 2); __PYX_ERR(3, 4072, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacBody", 1, 5, 5, 3); __PYX_ERR(3, 4072, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_body)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacBody", 1, 5, 5, 4); __PYX_ERR(3, 4072, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_jacBody") < 0)) __PYX_ERR(3, 4072, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_jacp = ((PyArrayObject *)values[2]);
    __pyx_v_jacr = ((PyArrayObject *)values[3]);
    __pyx_v_body = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_body == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4072, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_jacBody", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4072, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacBody", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4072, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4072, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacp), __pyx_ptype_5numpy_ndarray, 1, "jacp", 0))) __PYX_ERR(3, 4072, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacr), __pyx_ptype_5numpy_ndarray, 1, "jacr", 0))) __PYX_ERR(3, 4072, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_162_mj_jacBody(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_jacp, __pyx_v_jacr, __pyx_v_body);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_162_mj_jacBody(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, int __pyx_v_body) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacp;
  __Pyx_Buffer __pyx_pybuffer_jacp;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacr;
  __Pyx_Buffer __pyx_pybuffer_jacr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_jacBody", 0);
  __pyx_pybuffer_jacp.pybuffer.buf = NULL;
  __pyx_pybuffer_jacp.refcount = 0;
  __pyx_pybuffernd_jacp.data = NULL;
  __pyx_pybuffernd_jacp.rcbuffer = &__pyx_pybuffer_jacp;
  __pyx_pybuffer_jacr.pybuffer.buf = NULL;
  __pyx_pybuffer_jacr.refcount = 0;
  __pyx_pybuffernd_jacr.data = NULL;
  __pyx_pybuffernd_jacr.rcbuffer = &__pyx_pybuffer_jacr;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4072, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4072, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4073
 * 
 * def _mj_jacBody(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):
 *     mj_jacBody(m.ptr, d.ptr, &jacp[0], &jacr[0], body)             # <<<<<<<<<<<<<<
 * 
 * def _mj_jacBodyCom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_jacp.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_jacp.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4073, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_jacr.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_jacr.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4073, __pyx_L1_error)
  }
  mj_jacBody(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacp.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_jacp.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacr.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_jacr.diminfo[0].strides))), __pyx_v_body);

  /* "mujoco_py/generated/wrappers.pxi":4072
 *     mj_jac(m.ptr, d.ptr, &jacp[0], &jacr[0], &point[0], body)
 * 
 * def _mj_jacBody(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):             # <<<<<<<<<<<<<<
 *     mj_jacBody(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacBody", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4075
 *     mj_jacBody(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 * def _mj_jacBodyCom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):             # <<<<<<<<<<<<<<
 *     mj_jacBodyCom(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_165_mj_jacBodyCom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_165_mj_jacBodyCom = {"_mj_jacBodyCom", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_165_mj_jacBodyCom, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_165_mj_jacBodyCom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_jacp = 0;
  PyArrayObject *__pyx_v_jacr = 0;
  int __pyx_v_body;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_jacBodyCom (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_jacp,&__pyx_n_s_jacr,&__pyx_n_s_body,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacBodyCom", 1, 5, 5, 1); __PYX_ERR(3, 4075, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacp)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacBodyCom", 1, 5, 5, 2); __PYX_ERR(3, 4075, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacBodyCom", 1, 5, 5, 3); __PYX_ERR(3, 4075, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_body)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacBodyCom", 1, 5, 5, 4); __PYX_ERR(3, 4075, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_jacBodyCom") < 0)) __PYX_ERR(3, 4075, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_jacp = ((PyArrayObject *)values[2]);
    __pyx_v_jacr = ((PyArrayObject *)values[3]);
    __pyx_v_body = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_body == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4075, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_jacBodyCom", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4075, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacBodyCom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4075, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4075, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacp), __pyx_ptype_5numpy_ndarray, 1, "jacp", 0))) __PYX_ERR(3, 4075, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacr), __pyx_ptype_5numpy_ndarray, 1, "jacr", 0))) __PYX_ERR(3, 4075, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_164_mj_jacBodyCom(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_jacp, __pyx_v_jacr, __pyx_v_body);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_164_mj_jacBodyCom(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, int __pyx_v_body) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacp;
  __Pyx_Buffer __pyx_pybuffer_jacp;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacr;
  __Pyx_Buffer __pyx_pybuffer_jacr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_jacBodyCom", 0);
  __pyx_pybuffer_jacp.pybuffer.buf = NULL;
  __pyx_pybuffer_jacp.refcount = 0;
  __pyx_pybuffernd_jacp.data = NULL;
  __pyx_pybuffernd_jacp.rcbuffer = &__pyx_pybuffer_jacp;
  __pyx_pybuffer_jacr.pybuffer.buf = NULL;
  __pyx_pybuffer_jacr.refcount = 0;
  __pyx_pybuffernd_jacr.data = NULL;
  __pyx_pybuffernd_jacr.rcbuffer = &__pyx_pybuffer_jacr;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4075, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4075, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4076
 * 
 * def _mj_jacBodyCom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):
 *     mj_jacBodyCom(m.ptr, d.ptr, &jacp[0], &jacr[0], body)             # <<<<<<<<<<<<<<
 * 
 * def _mj_jacGeom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int geom):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_jacp.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_jacp.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4076, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_jacr.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_jacr.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4076, __pyx_L1_error)
  }
  mj_jacBodyCom(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacp.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_jacp.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacr.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_jacr.diminfo[0].strides))), __pyx_v_body);

  /* "mujoco_py/generated/wrappers.pxi":4075
 *     mj_jacBody(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 * def _mj_jacBodyCom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):             # <<<<<<<<<<<<<<
 *     mj_jacBodyCom(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacBodyCom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4078
 *     mj_jacBodyCom(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 * def _mj_jacGeom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int geom):             # <<<<<<<<<<<<<<
 *     mj_jacGeom(m.ptr, d.ptr, &jacp[0], &jacr[0], geom)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_167_mj_jacGeom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_167_mj_jacGeom = {"_mj_jacGeom", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_167_mj_jacGeom, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_167_mj_jacGeom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_jacp = 0;
  PyArrayObject *__pyx_v_jacr = 0;
  int __pyx_v_geom;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_jacGeom (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_jacp,&__pyx_n_s_jacr,&__pyx_n_s_geom,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacGeom", 1, 5, 5, 1); __PYX_ERR(3, 4078, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacp)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacGeom", 1, 5, 5, 2); __PYX_ERR(3, 4078, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacGeom", 1, 5, 5, 3); __PYX_ERR(3, 4078, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_geom)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacGeom", 1, 5, 5, 4); __PYX_ERR(3, 4078, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_jacGeom") < 0)) __PYX_ERR(3, 4078, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_jacp = ((PyArrayObject *)values[2]);
    __pyx_v_jacr = ((PyArrayObject *)values[3]);
    __pyx_v_geom = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_geom == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4078, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_jacGeom", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4078, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacGeom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4078, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4078, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacp), __pyx_ptype_5numpy_ndarray, 1, "jacp", 0))) __PYX_ERR(3, 4078, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacr), __pyx_ptype_5numpy_ndarray, 1, "jacr", 0))) __PYX_ERR(3, 4078, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_166_mj_jacGeom(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_jacp, __pyx_v_jacr, __pyx_v_geom);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_166_mj_jacGeom(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, int __pyx_v_geom) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacp;
  __Pyx_Buffer __pyx_pybuffer_jacp;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacr;
  __Pyx_Buffer __pyx_pybuffer_jacr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_jacGeom", 0);
  __pyx_pybuffer_jacp.pybuffer.buf = NULL;
  __pyx_pybuffer_jacp.refcount = 0;
  __pyx_pybuffernd_jacp.data = NULL;
  __pyx_pybuffernd_jacp.rcbuffer = &__pyx_pybuffer_jacp;
  __pyx_pybuffer_jacr.pybuffer.buf = NULL;
  __pyx_pybuffer_jacr.refcount = 0;
  __pyx_pybuffernd_jacr.data = NULL;
  __pyx_pybuffernd_jacr.rcbuffer = &__pyx_pybuffer_jacr;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4078, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4078, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4079
 * 
 * def _mj_jacGeom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int geom):
 *     mj_jacGeom(m.ptr, d.ptr, &jacp[0], &jacr[0], geom)             # <<<<<<<<<<<<<<
 * 
 * def _mj_jacSite(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int site):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_jacp.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_jacp.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4079, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_jacr.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_jacr.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4079, __pyx_L1_error)
  }
  mj_jacGeom(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacp.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_jacp.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacr.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_jacr.diminfo[0].strides))), __pyx_v_geom);

  /* "mujoco_py/generated/wrappers.pxi":4078
 *     mj_jacBodyCom(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 * def _mj_jacGeom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int geom):             # <<<<<<<<<<<<<<
 *     mj_jacGeom(m.ptr, d.ptr, &jacp[0], &jacr[0], geom)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacGeom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4081
 *     mj_jacGeom(m.ptr, d.ptr, &jacp[0], &jacr[0], geom)
 * 
 * def _mj_jacSite(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int site):             # <<<<<<<<<<<<<<
 *     mj_jacSite(m.ptr, d.ptr, &jacp[0], &jacr[0], site)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_169_mj_jacSite(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_169_mj_jacSite = {"_mj_jacSite", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_169_mj_jacSite, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_169_mj_jacSite(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_jacp = 0;
  PyArrayObject *__pyx_v_jacr = 0;
  int __pyx_v_site;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_jacSite (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_jacp,&__pyx_n_s_jacr,&__pyx_n_s_site,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacSite", 1, 5, 5, 1); __PYX_ERR(3, 4081, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacp)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacSite", 1, 5, 5, 2); __PYX_ERR(3, 4081, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacSite", 1, 5, 5, 3); __PYX_ERR(3, 4081, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_site)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacSite", 1, 5, 5, 4); __PYX_ERR(3, 4081, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_jacSite") < 0)) __PYX_ERR(3, 4081, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_jacp = ((PyArrayObject *)values[2]);
    __pyx_v_jacr = ((PyArrayObject *)values[3]);
    __pyx_v_site = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_site == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4081, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_jacSite", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4081, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacSite", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4081, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4081, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacp), __pyx_ptype_5numpy_ndarray, 1, "jacp", 0))) __PYX_ERR(3, 4081, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacr), __pyx_ptype_5numpy_ndarray, 1, "jacr", 0))) __PYX_ERR(3, 4081, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_168_mj_jacSite(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_jacp, __pyx_v_jacr, __pyx_v_site);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_168_mj_jacSite(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacp, PyArrayObject *__pyx_v_jacr, int __pyx_v_site) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacp;
  __Pyx_Buffer __pyx_pybuffer_jacp;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacr;
  __Pyx_Buffer __pyx_pybuffer_jacr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_jacSite", 0);
  __pyx_pybuffer_jacp.pybuffer.buf = NULL;
  __pyx_pybuffer_jacp.refcount = 0;
  __pyx_pybuffernd_jacp.data = NULL;
  __pyx_pybuffernd_jacp.rcbuffer = &__pyx_pybuffer_jacp;
  __pyx_pybuffer_jacr.pybuffer.buf = NULL;
  __pyx_pybuffer_jacr.refcount = 0;
  __pyx_pybuffernd_jacr.data = NULL;
  __pyx_pybuffernd_jacr.rcbuffer = &__pyx_pybuffer_jacr;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacp, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4081, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacp.diminfo[0].strides = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacp.diminfo[0].shape = __pyx_pybuffernd_jacp.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4081, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacr.diminfo[0].strides = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacr.diminfo[0].shape = __pyx_pybuffernd_jacr.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4082
 * 
 * def _mj_jacSite(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int site):
 *     mj_jacSite(m.ptr, d.ptr, &jacp[0], &jacr[0], site)             # <<<<<<<<<<<<<<
 * 
 * def _mj_jacPointAxis(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacPoint, np.ndarray[np.float64_t, mode="c", ndim=1] jacAxis, np.ndarray[np.float64_t, mode="c", ndim=1] point, np.ndarray[np.float64_t, mode="c", ndim=1] axis, int body):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_jacp.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_jacp.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4082, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_jacr.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_jacr.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4082, __pyx_L1_error)
  }
  mj_jacSite(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacp.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_jacp.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacr.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_jacr.diminfo[0].strides))), __pyx_v_site);

  /* "mujoco_py/generated/wrappers.pxi":4081
 *     mj_jacGeom(m.ptr, d.ptr, &jacp[0], &jacr[0], geom)
 * 
 * def _mj_jacSite(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int site):             # <<<<<<<<<<<<<<
 *     mj_jacSite(m.ptr, d.ptr, &jacp[0], &jacr[0], site)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacSite", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacp.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacr.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4084
 *     mj_jacSite(m.ptr, d.ptr, &jacp[0], &jacr[0], site)
 * 
 * def _mj_jacPointAxis(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacPoint, np.ndarray[np.float64_t, mode="c", ndim=1] jacAxis, np.ndarray[np.float64_t, mode="c", ndim=1] point, np.ndarray[np.float64_t, mode="c", ndim=1] axis, int body):             # <<<<<<<<<<<<<<
 *     mj_jacPointAxis(m.ptr, d.ptr, &jacPoint[0], &jacAxis[0], &point[0], &axis[0], body)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_171_mj_jacPointAxis(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_171_mj_jacPointAxis = {"_mj_jacPointAxis", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_171_mj_jacPointAxis, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_171_mj_jacPointAxis(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_jacPoint = 0;
  PyArrayObject *__pyx_v_jacAxis = 0;
  PyArrayObject *__pyx_v_point = 0;
  PyArrayObject *__pyx_v_axis = 0;
  int __pyx_v_body;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_jacPointAxis (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_jacPoint,&__pyx_n_s_jacAxis,&__pyx_n_s_point,&__pyx_n_s_axis,&__pyx_n_s_body,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacPointAxis", 1, 7, 7, 1); __PYX_ERR(3, 4084, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacPoint)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacPointAxis", 1, 7, 7, 2); __PYX_ERR(3, 4084, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacAxis)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacPointAxis", 1, 7, 7, 3); __PYX_ERR(3, 4084, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_point)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacPointAxis", 1, 7, 7, 4); __PYX_ERR(3, 4084, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_axis)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacPointAxis", 1, 7, 7, 5); __PYX_ERR(3, 4084, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_body)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_jacPointAxis", 1, 7, 7, 6); __PYX_ERR(3, 4084, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_jacPointAxis") < 0)) __PYX_ERR(3, 4084, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_jacPoint = ((PyArrayObject *)values[2]);
    __pyx_v_jacAxis = ((PyArrayObject *)values[3]);
    __pyx_v_point = ((PyArrayObject *)values[4]);
    __pyx_v_axis = ((PyArrayObject *)values[5]);
    __pyx_v_body = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_body == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4084, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_jacPointAxis", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4084, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacPointAxis", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4084, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4084, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacPoint), __pyx_ptype_5numpy_ndarray, 1, "jacPoint", 0))) __PYX_ERR(3, 4084, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jacAxis), __pyx_ptype_5numpy_ndarray, 1, "jacAxis", 0))) __PYX_ERR(3, 4084, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_point), __pyx_ptype_5numpy_ndarray, 1, "point", 0))) __PYX_ERR(3, 4084, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_axis), __pyx_ptype_5numpy_ndarray, 1, "axis", 0))) __PYX_ERR(3, 4084, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_170_mj_jacPointAxis(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_jacPoint, __pyx_v_jacAxis, __pyx_v_point, __pyx_v_axis, __pyx_v_body);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_170_mj_jacPointAxis(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_jacPoint, PyArrayObject *__pyx_v_jacAxis, PyArrayObject *__pyx_v_point, PyArrayObject *__pyx_v_axis, int __pyx_v_body) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_axis;
  __Pyx_Buffer __pyx_pybuffer_axis;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacAxis;
  __Pyx_Buffer __pyx_pybuffer_jacAxis;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jacPoint;
  __Pyx_Buffer __pyx_pybuffer_jacPoint;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_point;
  __Pyx_Buffer __pyx_pybuffer_point;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  __Pyx_RefNannySetupContext("_mj_jacPointAxis", 0);
  __pyx_pybuffer_jacPoint.pybuffer.buf = NULL;
  __pyx_pybuffer_jacPoint.refcount = 0;
  __pyx_pybuffernd_jacPoint.data = NULL;
  __pyx_pybuffernd_jacPoint.rcbuffer = &__pyx_pybuffer_jacPoint;
  __pyx_pybuffer_jacAxis.pybuffer.buf = NULL;
  __pyx_pybuffer_jacAxis.refcount = 0;
  __pyx_pybuffernd_jacAxis.data = NULL;
  __pyx_pybuffernd_jacAxis.rcbuffer = &__pyx_pybuffer_jacAxis;
  __pyx_pybuffer_point.pybuffer.buf = NULL;
  __pyx_pybuffer_point.refcount = 0;
  __pyx_pybuffernd_point.data = NULL;
  __pyx_pybuffernd_point.rcbuffer = &__pyx_pybuffer_point;
  __pyx_pybuffer_axis.pybuffer.buf = NULL;
  __pyx_pybuffer_axis.refcount = 0;
  __pyx_pybuffernd_axis.data = NULL;
  __pyx_pybuffernd_axis.rcbuffer = &__pyx_pybuffer_axis;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacPoint.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacPoint, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4084, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacPoint.diminfo[0].strides = __pyx_pybuffernd_jacPoint.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacPoint.diminfo[0].shape = __pyx_pybuffernd_jacPoint.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jacAxis.rcbuffer->pybuffer, (PyObject*)__pyx_v_jacAxis, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4084, __pyx_L1_error)
  }
  __pyx_pybuffernd_jacAxis.diminfo[0].strides = __pyx_pybuffernd_jacAxis.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jacAxis.diminfo[0].shape = __pyx_pybuffernd_jacAxis.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_point.rcbuffer->pybuffer, (PyObject*)__pyx_v_point, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4084, __pyx_L1_error)
  }
  __pyx_pybuffernd_point.diminfo[0].strides = __pyx_pybuffernd_point.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_point.diminfo[0].shape = __pyx_pybuffernd_point.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_axis.rcbuffer->pybuffer, (PyObject*)__pyx_v_axis, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4084, __pyx_L1_error)
  }
  __pyx_pybuffernd_axis.diminfo[0].strides = __pyx_pybuffernd_axis.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_axis.diminfo[0].shape = __pyx_pybuffernd_axis.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4085
 * 
 * def _mj_jacPointAxis(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacPoint, np.ndarray[np.float64_t, mode="c", ndim=1] jacAxis, np.ndarray[np.float64_t, mode="c", ndim=1] point, np.ndarray[np.float64_t, mode="c", ndim=1] axis, int body):
 *     mj_jacPointAxis(m.ptr, d.ptr, &jacPoint[0], &jacAxis[0], &point[0], &axis[0], body)             # <<<<<<<<<<<<<<
 * 
 * def _mj_name2id(PyMjModel m, int type, str name):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_jacPoint.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_jacPoint.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4085, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_jacAxis.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_jacAxis.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4085, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_point.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_point.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4085, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_axis.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_axis.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4085, __pyx_L1_error)
  }
  mj_jacPointAxis(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacPoint.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_jacPoint.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jacAxis.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_jacAxis.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_point.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_axis.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_axis.diminfo[0].strides))), __pyx_v_body);

  /* "mujoco_py/generated/wrappers.pxi":4084
 *     mj_jacSite(m.ptr, d.ptr, &jacp[0], &jacr[0], site)
 * 
 * def _mj_jacPointAxis(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacPoint, np.ndarray[np.float64_t, mode="c", ndim=1] jacAxis, np.ndarray[np.float64_t, mode="c", ndim=1] point, np.ndarray[np.float64_t, mode="c", ndim=1] axis, int body):             # <<<<<<<<<<<<<<
 *     mj_jacPointAxis(m.ptr, d.ptr, &jacPoint[0], &jacAxis[0], &point[0], &axis[0], body)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_axis.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacAxis.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacPoint.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_jacPointAxis", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_axis.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacAxis.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jacPoint.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4087
 *     mj_jacPointAxis(m.ptr, d.ptr, &jacPoint[0], &jacAxis[0], &point[0], &axis[0], body)
 * 
 * def _mj_name2id(PyMjModel m, int type, str name):             # <<<<<<<<<<<<<<
 *     return mj_name2id(m.ptr, type, name.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_173_mj_name2id(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_173_mj_name2id = {"_mj_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_173_mj_name2id, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_173_mj_name2id(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  int __pyx_v_type;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_name2id (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_type,&__pyx_n_s_name,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_type)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_name2id", 1, 3, 3, 1); __PYX_ERR(3, 4087, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_name2id", 1, 3, 3, 2); __PYX_ERR(3, 4087, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_name2id") < 0)) __PYX_ERR(3, 4087, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_type = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4087, __pyx_L3_error)
    __pyx_v_name = ((PyObject*)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_name2id", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4087, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4087, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyUnicode_Type), 1, "name", 1))) __PYX_ERR(3, 4087, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_172_mj_name2id(__pyx_self, __pyx_v_m, __pyx_v_type, __pyx_v_name);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_172_mj_name2id(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, int __pyx_v_type, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mj_name2id", 0);

  /* "mujoco_py/generated/wrappers.pxi":4088
 * 
 * def _mj_name2id(PyMjModel m, int type, str name):
 *     return mj_name2id(m.ptr, type, name.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mj_fullM(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] dst, np.ndarray[np.float64_t, mode="c", ndim=1] M):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_name == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4088, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_name, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4088, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_int(mj_name2id(__pyx_v_m->ptr, __pyx_v_type, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4087
 *     mj_jacPointAxis(m.ptr, d.ptr, &jacPoint[0], &jacAxis[0], &point[0], &axis[0], body)
 * 
 * def _mj_name2id(PyMjModel m, int type, str name):             # <<<<<<<<<<<<<<
 *     return mj_name2id(m.ptr, type, name.encode())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_name2id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4090
 *     return mj_name2id(m.ptr, type, name.encode())
 * 
 * def _mj_fullM(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] dst, np.ndarray[np.float64_t, mode="c", ndim=1] M):             # <<<<<<<<<<<<<<
 *     mj_fullM(m.ptr, &dst[0], &M[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_175_mj_fullM(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_175_mj_fullM = {"_mj_fullM", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_175_mj_fullM, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_175_mj_fullM(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  PyArrayObject *__pyx_v_dst = 0;
  PyArrayObject *__pyx_v_M = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_fullM (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_dst,&__pyx_n_s_M,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dst)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_fullM", 1, 3, 3, 1); __PYX_ERR(3, 4090, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_fullM", 1, 3, 3, 2); __PYX_ERR(3, 4090, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_fullM") < 0)) __PYX_ERR(3, 4090, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_dst = ((PyArrayObject *)values[1]);
    __pyx_v_M = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_fullM", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4090, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_fullM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4090, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dst), __pyx_ptype_5numpy_ndarray, 1, "dst", 0))) __PYX_ERR(3, 4090, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_M), __pyx_ptype_5numpy_ndarray, 1, "M", 0))) __PYX_ERR(3, 4090, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_174_mj_fullM(__pyx_self, __pyx_v_m, __pyx_v_dst, __pyx_v_M);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_174_mj_fullM(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyArrayObject *__pyx_v_dst, PyArrayObject *__pyx_v_M) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_M;
  __Pyx_Buffer __pyx_pybuffer_M;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_dst;
  __Pyx_Buffer __pyx_pybuffer_dst;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_fullM", 0);
  __pyx_pybuffer_dst.pybuffer.buf = NULL;
  __pyx_pybuffer_dst.refcount = 0;
  __pyx_pybuffernd_dst.data = NULL;
  __pyx_pybuffernd_dst.rcbuffer = &__pyx_pybuffer_dst;
  __pyx_pybuffer_M.pybuffer.buf = NULL;
  __pyx_pybuffer_M.refcount = 0;
  __pyx_pybuffernd_M.data = NULL;
  __pyx_pybuffernd_M.rcbuffer = &__pyx_pybuffer_M;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dst.rcbuffer->pybuffer, (PyObject*)__pyx_v_dst, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4090, __pyx_L1_error)
  }
  __pyx_pybuffernd_dst.diminfo[0].strides = __pyx_pybuffernd_dst.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_dst.diminfo[0].shape = __pyx_pybuffernd_dst.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_M.rcbuffer->pybuffer, (PyObject*)__pyx_v_M, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4090, __pyx_L1_error)
  }
  __pyx_pybuffernd_M.diminfo[0].strides = __pyx_pybuffernd_M.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_M.diminfo[0].shape = __pyx_pybuffernd_M.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4091
 * 
 * def _mj_fullM(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] dst, np.ndarray[np.float64_t, mode="c", ndim=1] M):
 *     mj_fullM(m.ptr, &dst[0], &M[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_mulM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_dst.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_dst.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4091, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_M.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_M.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4091, __pyx_L1_error)
  }
  mj_fullM(__pyx_v_m->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_dst.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_dst.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_M.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_M.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4090
 *     return mj_name2id(m.ptr, type, name.encode())
 * 
 * def _mj_fullM(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] dst, np.ndarray[np.float64_t, mode="c", ndim=1] M):             # <<<<<<<<<<<<<<
 *     mj_fullM(m.ptr, &dst[0], &M[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_M.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dst.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_fullM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_M.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dst.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4093
 *     mj_fullM(m.ptr, &dst[0], &M[0])
 * 
 * def _mj_mulM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulM(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_177_mj_mulM(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_177_mj_mulM = {"_mj_mulM", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_177_mj_mulM, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_177_mj_mulM(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_mulM (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_res,&__pyx_n_s_vec,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_mulM", 1, 4, 4, 1); __PYX_ERR(3, 4093, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_mulM", 1, 4, 4, 2); __PYX_ERR(3, 4093, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_mulM", 1, 4, 4, 3); __PYX_ERR(3, 4093, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_mulM") < 0)) __PYX_ERR(3, 4093, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_res = ((PyArrayObject *)values[2]);
    __pyx_v_vec = ((PyArrayObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_mulM", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4093, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_mulM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4093, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4093, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4093, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4093, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_176_mj_mulM(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_res, __pyx_v_vec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_176_mj_mulM(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_mulM", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4093, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4093, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4094
 * 
 * def _mj_mulM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     mj_mulM(m.ptr, d.ptr, &res[0], &vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_applyFT(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] torque, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body, np.ndarray[np.float64_t, mode="c", ndim=1] qfrc_target):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4094, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4094, __pyx_L1_error)
  }
  mj_mulM(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4093
 *     mj_fullM(m.ptr, &dst[0], &M[0])
 * 
 * def _mj_mulM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulM(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_mulM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4096
 *     mj_mulM(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_applyFT(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] torque, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body, np.ndarray[np.float64_t, mode="c", ndim=1] qfrc_target):             # <<<<<<<<<<<<<<
 *     mj_applyFT(m.ptr, d.ptr, &force[0], &torque[0], &point[0], body, &qfrc_target[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_179_mj_applyFT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_179_mj_applyFT = {"_mj_applyFT", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_179_mj_applyFT, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_179_mj_applyFT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_force = 0;
  PyArrayObject *__pyx_v_torque = 0;
  PyArrayObject *__pyx_v_point = 0;
  int __pyx_v_body;
  PyArrayObject *__pyx_v_qfrc_target = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_applyFT (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_force,&__pyx_n_s_torque,&__pyx_n_s_point,&__pyx_n_s_body,&__pyx_n_s_qfrc_target,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_applyFT", 1, 7, 7, 1); __PYX_ERR(3, 4096, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_applyFT", 1, 7, 7, 2); __PYX_ERR(3, 4096, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_torque)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_applyFT", 1, 7, 7, 3); __PYX_ERR(3, 4096, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_point)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_applyFT", 1, 7, 7, 4); __PYX_ERR(3, 4096, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_body)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_applyFT", 1, 7, 7, 5); __PYX_ERR(3, 4096, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_qfrc_target)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_applyFT", 1, 7, 7, 6); __PYX_ERR(3, 4096, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_applyFT") < 0)) __PYX_ERR(3, 4096, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_force = ((PyArrayObject *)values[2]);
    __pyx_v_torque = ((PyArrayObject *)values[3]);
    __pyx_v_point = ((PyArrayObject *)values[4]);
    __pyx_v_body = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_body == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4096, __pyx_L3_error)
    __pyx_v_qfrc_target = ((PyArrayObject *)values[6]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_applyFT", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4096, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_applyFT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4096, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4096, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_force), __pyx_ptype_5numpy_ndarray, 1, "force", 0))) __PYX_ERR(3, 4096, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_torque), __pyx_ptype_5numpy_ndarray, 1, "torque", 0))) __PYX_ERR(3, 4096, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_point), __pyx_ptype_5numpy_ndarray, 1, "point", 0))) __PYX_ERR(3, 4096, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qfrc_target), __pyx_ptype_5numpy_ndarray, 1, "qfrc_target", 0))) __PYX_ERR(3, 4096, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_178_mj_applyFT(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_force, __pyx_v_torque, __pyx_v_point, __pyx_v_body, __pyx_v_qfrc_target);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_178_mj_applyFT(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_force, PyArrayObject *__pyx_v_torque, PyArrayObject *__pyx_v_point, int __pyx_v_body, PyArrayObject *__pyx_v_qfrc_target) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_force;
  __Pyx_Buffer __pyx_pybuffer_force;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_point;
  __Pyx_Buffer __pyx_pybuffer_point;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_qfrc_target;
  __Pyx_Buffer __pyx_pybuffer_qfrc_target;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_torque;
  __Pyx_Buffer __pyx_pybuffer_torque;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  __Pyx_RefNannySetupContext("_mj_applyFT", 0);
  __pyx_pybuffer_force.pybuffer.buf = NULL;
  __pyx_pybuffer_force.refcount = 0;
  __pyx_pybuffernd_force.data = NULL;
  __pyx_pybuffernd_force.rcbuffer = &__pyx_pybuffer_force;
  __pyx_pybuffer_torque.pybuffer.buf = NULL;
  __pyx_pybuffer_torque.refcount = 0;
  __pyx_pybuffernd_torque.data = NULL;
  __pyx_pybuffernd_torque.rcbuffer = &__pyx_pybuffer_torque;
  __pyx_pybuffer_point.pybuffer.buf = NULL;
  __pyx_pybuffer_point.refcount = 0;
  __pyx_pybuffernd_point.data = NULL;
  __pyx_pybuffernd_point.rcbuffer = &__pyx_pybuffer_point;
  __pyx_pybuffer_qfrc_target.pybuffer.buf = NULL;
  __pyx_pybuffer_qfrc_target.refcount = 0;
  __pyx_pybuffernd_qfrc_target.data = NULL;
  __pyx_pybuffernd_qfrc_target.rcbuffer = &__pyx_pybuffer_qfrc_target;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_force.rcbuffer->pybuffer, (PyObject*)__pyx_v_force, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4096, __pyx_L1_error)
  }
  __pyx_pybuffernd_force.diminfo[0].strides = __pyx_pybuffernd_force.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_force.diminfo[0].shape = __pyx_pybuffernd_force.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_torque.rcbuffer->pybuffer, (PyObject*)__pyx_v_torque, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4096, __pyx_L1_error)
  }
  __pyx_pybuffernd_torque.diminfo[0].strides = __pyx_pybuffernd_torque.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_torque.diminfo[0].shape = __pyx_pybuffernd_torque.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_point.rcbuffer->pybuffer, (PyObject*)__pyx_v_point, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4096, __pyx_L1_error)
  }
  __pyx_pybuffernd_point.diminfo[0].strides = __pyx_pybuffernd_point.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_point.diminfo[0].shape = __pyx_pybuffernd_point.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_qfrc_target.rcbuffer->pybuffer, (PyObject*)__pyx_v_qfrc_target, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4096, __pyx_L1_error)
  }
  __pyx_pybuffernd_qfrc_target.diminfo[0].strides = __pyx_pybuffernd_qfrc_target.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_qfrc_target.diminfo[0].shape = __pyx_pybuffernd_qfrc_target.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4097
 * 
 * def _mj_applyFT(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] torque, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body, np.ndarray[np.float64_t, mode="c", ndim=1] qfrc_target):
 *     mj_applyFT(m.ptr, d.ptr, &force[0], &torque[0], &point[0], body, &qfrc_target[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_objectVelocity(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_force.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_force.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4097, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_torque.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_torque.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4097, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_point.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_point.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4097, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_qfrc_target.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_qfrc_target.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4097, __pyx_L1_error)
  }
  mj_applyFT(__pyx_v_m->ptr, __pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_force.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_force.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_torque.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_torque.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_point.diminfo[0].strides))), __pyx_v_body, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_qfrc_target.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_qfrc_target.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4096
 *     mj_mulM(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_applyFT(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] torque, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body, np.ndarray[np.float64_t, mode="c", ndim=1] qfrc_target):             # <<<<<<<<<<<<<<
 *     mj_applyFT(m.ptr, d.ptr, &force[0], &torque[0], &point[0], body, &qfrc_target[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_force.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qfrc_target.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_torque.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_applyFT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_force.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qfrc_target.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_torque.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4099
 *     mj_applyFT(m.ptr, d.ptr, &force[0], &torque[0], &point[0], body, &qfrc_target[0])
 * 
 * def _mj_objectVelocity(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):             # <<<<<<<<<<<<<<
 *     mj_objectVelocity(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_181_mj_objectVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_181_mj_objectVelocity = {"_mj_objectVelocity", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_181_mj_objectVelocity, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_181_mj_objectVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_objtype;
  int __pyx_v_objid;
  PyArrayObject *__pyx_v_res = 0;
  int __pyx_v_flg_local;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_objectVelocity (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_objtype,&__pyx_n_s_objid,&__pyx_n_s_res,&__pyx_n_s_flg_local,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectVelocity", 1, 6, 6, 1); __PYX_ERR(3, 4099, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_objtype)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectVelocity", 1, 6, 6, 2); __PYX_ERR(3, 4099, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_objid)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectVelocity", 1, 6, 6, 3); __PYX_ERR(3, 4099, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectVelocity", 1, 6, 6, 4); __PYX_ERR(3, 4099, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_local)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectVelocity", 1, 6, 6, 5); __PYX_ERR(3, 4099, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_objectVelocity") < 0)) __PYX_ERR(3, 4099, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_objtype = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_objtype == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4099, __pyx_L3_error)
    __pyx_v_objid = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_objid == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4099, __pyx_L3_error)
    __pyx_v_res = ((PyArrayObject *)values[4]);
    __pyx_v_flg_local = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_flg_local == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4099, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_objectVelocity", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4099, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_objectVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4099, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4099, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4099, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_180_mj_objectVelocity(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_objtype, __pyx_v_objid, __pyx_v_res, __pyx_v_flg_local);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_180_mj_objectVelocity(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_objtype, int __pyx_v_objid, PyArrayObject *__pyx_v_res, int __pyx_v_flg_local) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mj_objectVelocity", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4099, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4100
 * 
 * def _mj_objectVelocity(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):
 *     mj_objectVelocity(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)             # <<<<<<<<<<<<<<
 * 
 * def _mj_objectAcceleration(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4100, __pyx_L1_error)
  }
  mj_objectVelocity(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_objtype, __pyx_v_objid, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), __pyx_v_flg_local);

  /* "mujoco_py/generated/wrappers.pxi":4099
 *     mj_applyFT(m.ptr, d.ptr, &force[0], &torque[0], &point[0], body, &qfrc_target[0])
 * 
 * def _mj_objectVelocity(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):             # <<<<<<<<<<<<<<
 *     mj_objectVelocity(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_objectVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4102
 *     mj_objectVelocity(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 * def _mj_objectAcceleration(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):             # <<<<<<<<<<<<<<
 *     mj_objectAcceleration(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_183_mj_objectAcceleration(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_183_mj_objectAcceleration = {"_mj_objectAcceleration", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_183_mj_objectAcceleration, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_183_mj_objectAcceleration(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_objtype;
  int __pyx_v_objid;
  PyArrayObject *__pyx_v_res = 0;
  int __pyx_v_flg_local;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_objectAcceleration (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_objtype,&__pyx_n_s_objid,&__pyx_n_s_res,&__pyx_n_s_flg_local,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectAcceleration", 1, 6, 6, 1); __PYX_ERR(3, 4102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_objtype)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectAcceleration", 1, 6, 6, 2); __PYX_ERR(3, 4102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_objid)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectAcceleration", 1, 6, 6, 3); __PYX_ERR(3, 4102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectAcceleration", 1, 6, 6, 4); __PYX_ERR(3, 4102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_local)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_objectAcceleration", 1, 6, 6, 5); __PYX_ERR(3, 4102, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_objectAcceleration") < 0)) __PYX_ERR(3, 4102, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_objtype = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_objtype == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4102, __pyx_L3_error)
    __pyx_v_objid = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_objid == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4102, __pyx_L3_error)
    __pyx_v_res = ((PyArrayObject *)values[4]);
    __pyx_v_flg_local = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_flg_local == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4102, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_objectAcceleration", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4102, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_objectAcceleration", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4102, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4102, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4102, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_182_mj_objectAcceleration(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_objtype, __pyx_v_objid, __pyx_v_res, __pyx_v_flg_local);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_182_mj_objectAcceleration(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_objtype, int __pyx_v_objid, PyArrayObject *__pyx_v_res, int __pyx_v_flg_local) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mj_objectAcceleration", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4102, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4103
 * 
 * def _mj_objectAcceleration(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):
 *     mj_objectAcceleration(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)             # <<<<<<<<<<<<<<
 * 
 * def _mj_differentiatePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt, np.ndarray[np.float64_t, mode="c", ndim=1] qpos1, np.ndarray[np.float64_t, mode="c", ndim=1] qpos2):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4103, __pyx_L1_error)
  }
  mj_objectAcceleration(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_objtype, __pyx_v_objid, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), __pyx_v_flg_local);

  /* "mujoco_py/generated/wrappers.pxi":4102
 *     mj_objectVelocity(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 * def _mj_objectAcceleration(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):             # <<<<<<<<<<<<<<
 *     mj_objectAcceleration(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_objectAcceleration", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4105
 *     mj_objectAcceleration(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 * def _mj_differentiatePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt, np.ndarray[np.float64_t, mode="c", ndim=1] qpos1, np.ndarray[np.float64_t, mode="c", ndim=1] qpos2):             # <<<<<<<<<<<<<<
 *     mj_differentiatePos(m.ptr, &qvel[0], dt, &qpos1[0], &qpos2[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_185_mj_differentiatePos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_185_mj_differentiatePos = {"_mj_differentiatePos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_185_mj_differentiatePos, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_185_mj_differentiatePos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  PyArrayObject *__pyx_v_qvel = 0;
  float __pyx_v_dt;
  PyArrayObject *__pyx_v_qpos1 = 0;
  PyArrayObject *__pyx_v_qpos2 = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_differentiatePos (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_qvel,&__pyx_n_s_dt,&__pyx_n_s_qpos1,&__pyx_n_s_qpos2,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_qvel)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_differentiatePos", 1, 5, 5, 1); __PYX_ERR(3, 4105, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_differentiatePos", 1, 5, 5, 2); __PYX_ERR(3, 4105, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_qpos1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_differentiatePos", 1, 5, 5, 3); __PYX_ERR(3, 4105, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_qpos2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_differentiatePos", 1, 5, 5, 4); __PYX_ERR(3, 4105, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_differentiatePos") < 0)) __PYX_ERR(3, 4105, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_qvel = ((PyArrayObject *)values[1]);
    __pyx_v_dt = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_dt == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4105, __pyx_L3_error)
    __pyx_v_qpos1 = ((PyArrayObject *)values[3]);
    __pyx_v_qpos2 = ((PyArrayObject *)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_differentiatePos", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4105, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_differentiatePos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4105, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qvel), __pyx_ptype_5numpy_ndarray, 1, "qvel", 0))) __PYX_ERR(3, 4105, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qpos1), __pyx_ptype_5numpy_ndarray, 1, "qpos1", 0))) __PYX_ERR(3, 4105, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qpos2), __pyx_ptype_5numpy_ndarray, 1, "qpos2", 0))) __PYX_ERR(3, 4105, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_184_mj_differentiatePos(__pyx_self, __pyx_v_m, __pyx_v_qvel, __pyx_v_dt, __pyx_v_qpos1, __pyx_v_qpos2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_184_mj_differentiatePos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyArrayObject *__pyx_v_qvel, float __pyx_v_dt, PyArrayObject *__pyx_v_qpos1, PyArrayObject *__pyx_v_qpos2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_qpos1;
  __Pyx_Buffer __pyx_pybuffer_qpos1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_qpos2;
  __Pyx_Buffer __pyx_pybuffer_qpos2;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_qvel;
  __Pyx_Buffer __pyx_pybuffer_qvel;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mj_differentiatePos", 0);
  __pyx_pybuffer_qvel.pybuffer.buf = NULL;
  __pyx_pybuffer_qvel.refcount = 0;
  __pyx_pybuffernd_qvel.data = NULL;
  __pyx_pybuffernd_qvel.rcbuffer = &__pyx_pybuffer_qvel;
  __pyx_pybuffer_qpos1.pybuffer.buf = NULL;
  __pyx_pybuffer_qpos1.refcount = 0;
  __pyx_pybuffernd_qpos1.data = NULL;
  __pyx_pybuffernd_qpos1.rcbuffer = &__pyx_pybuffer_qpos1;
  __pyx_pybuffer_qpos2.pybuffer.buf = NULL;
  __pyx_pybuffer_qpos2.refcount = 0;
  __pyx_pybuffernd_qpos2.data = NULL;
  __pyx_pybuffernd_qpos2.rcbuffer = &__pyx_pybuffer_qpos2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_qvel.rcbuffer->pybuffer, (PyObject*)__pyx_v_qvel, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4105, __pyx_L1_error)
  }
  __pyx_pybuffernd_qvel.diminfo[0].strides = __pyx_pybuffernd_qvel.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_qvel.diminfo[0].shape = __pyx_pybuffernd_qvel.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_qpos1.rcbuffer->pybuffer, (PyObject*)__pyx_v_qpos1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4105, __pyx_L1_error)
  }
  __pyx_pybuffernd_qpos1.diminfo[0].strides = __pyx_pybuffernd_qpos1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_qpos1.diminfo[0].shape = __pyx_pybuffernd_qpos1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_qpos2.rcbuffer->pybuffer, (PyObject*)__pyx_v_qpos2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4105, __pyx_L1_error)
  }
  __pyx_pybuffernd_qpos2.diminfo[0].strides = __pyx_pybuffernd_qpos2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_qpos2.diminfo[0].shape = __pyx_pybuffernd_qpos2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4106
 * 
 * def _mj_differentiatePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt, np.ndarray[np.float64_t, mode="c", ndim=1] qpos1, np.ndarray[np.float64_t, mode="c", ndim=1] qpos2):
 *     mj_differentiatePos(m.ptr, &qvel[0], dt, &qpos1[0], &qpos2[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_contactForce(PyMjModel m, PyMjData d, int id, np.ndarray[np.float64_t, mode="c", ndim=1] result):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_qvel.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_qvel.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4106, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_qpos1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_qpos1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4106, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_qpos2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_qpos2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4106, __pyx_L1_error)
  }
  mj_differentiatePos(__pyx_v_m->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_qvel.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_qvel.diminfo[0].strides))), __pyx_v_dt, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_qpos1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_qpos1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_qpos2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_qpos2.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4105
 *     mj_objectAcceleration(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 * def _mj_differentiatePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt, np.ndarray[np.float64_t, mode="c", ndim=1] qpos1, np.ndarray[np.float64_t, mode="c", ndim=1] qpos2):             # <<<<<<<<<<<<<<
 *     mj_differentiatePos(m.ptr, &qvel[0], dt, &qpos1[0], &qpos2[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qpos1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qpos2.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qvel.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_differentiatePos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qpos1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qpos2.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qvel.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4108
 *     mj_differentiatePos(m.ptr, &qvel[0], dt, &qpos1[0], &qpos2[0])
 * 
 * def _mj_contactForce(PyMjModel m, PyMjData d, int id, np.ndarray[np.float64_t, mode="c", ndim=1] result):             # <<<<<<<<<<<<<<
 *     mj_contactForce(m.ptr, d.ptr, id, &result[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_187_mj_contactForce(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_187_mj_contactForce = {"_mj_contactForce", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_187_mj_contactForce, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_187_mj_contactForce(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_id;
  PyArrayObject *__pyx_v_result = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_contactForce (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_id,&__pyx_n_s_result,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_contactForce", 1, 4, 4, 1); __PYX_ERR(3, 4108, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_id)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_contactForce", 1, 4, 4, 2); __PYX_ERR(3, 4108, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_result)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_contactForce", 1, 4, 4, 3); __PYX_ERR(3, 4108, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_contactForce") < 0)) __PYX_ERR(3, 4108, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_id = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4108, __pyx_L3_error)
    __pyx_v_result = ((PyArrayObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_contactForce", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4108, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_contactForce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4108, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4108, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_result), __pyx_ptype_5numpy_ndarray, 1, "result", 0))) __PYX_ERR(3, 4108, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_186_mj_contactForce(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_id, __pyx_v_result);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_186_mj_contactForce(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_id, PyArrayObject *__pyx_v_result) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_result;
  __Pyx_Buffer __pyx_pybuffer_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mj_contactForce", 0);
  __pyx_pybuffer_result.pybuffer.buf = NULL;
  __pyx_pybuffer_result.refcount = 0;
  __pyx_pybuffernd_result.data = NULL;
  __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4108, __pyx_L1_error)
  }
  __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4109
 * 
 * def _mj_contactForce(PyMjModel m, PyMjData d, int id, np.ndarray[np.float64_t, mode="c", ndim=1] result):
 *     mj_contactForce(m.ptr, d.ptr, id, &result[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_integratePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_result.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4109, __pyx_L1_error)
  }
  mj_contactForce(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_id, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_result.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4108
 *     mj_differentiatePos(m.ptr, &qvel[0], dt, &qpos1[0], &qpos2[0])
 * 
 * def _mj_contactForce(PyMjModel m, PyMjData d, int id, np.ndarray[np.float64_t, mode="c", ndim=1] result):             # <<<<<<<<<<<<<<
 *     mj_contactForce(m.ptr, d.ptr, id, &result[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_contactForce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4111
 *     mj_contactForce(m.ptr, d.ptr, id, &result[0])
 * 
 * def _mj_integratePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt):             # <<<<<<<<<<<<<<
 *     mj_integratePos(m.ptr, &qpos[0], &qvel[0], dt)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_189_mj_integratePos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_189_mj_integratePos = {"_mj_integratePos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_189_mj_integratePos, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_189_mj_integratePos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  PyArrayObject *__pyx_v_qpos = 0;
  PyArrayObject *__pyx_v_qvel = 0;
  float __pyx_v_dt;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_integratePos (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_qpos,&__pyx_n_s_qvel,&__pyx_n_s_dt,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_qpos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_integratePos", 1, 4, 4, 1); __PYX_ERR(3, 4111, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_qvel)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_integratePos", 1, 4, 4, 2); __PYX_ERR(3, 4111, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_integratePos", 1, 4, 4, 3); __PYX_ERR(3, 4111, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_integratePos") < 0)) __PYX_ERR(3, 4111, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_qpos = ((PyArrayObject *)values[1]);
    __pyx_v_qvel = ((PyArrayObject *)values[2]);
    __pyx_v_dt = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_dt == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4111, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_integratePos", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4111, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_integratePos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4111, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qpos), __pyx_ptype_5numpy_ndarray, 1, "qpos", 0))) __PYX_ERR(3, 4111, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qvel), __pyx_ptype_5numpy_ndarray, 1, "qvel", 0))) __PYX_ERR(3, 4111, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_188_mj_integratePos(__pyx_self, __pyx_v_m, __pyx_v_qpos, __pyx_v_qvel, __pyx_v_dt);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_188_mj_integratePos(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyArrayObject *__pyx_v_qpos, PyArrayObject *__pyx_v_qvel, float __pyx_v_dt) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_qpos;
  __Pyx_Buffer __pyx_pybuffer_qpos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_qvel;
  __Pyx_Buffer __pyx_pybuffer_qvel;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mj_integratePos", 0);
  __pyx_pybuffer_qpos.pybuffer.buf = NULL;
  __pyx_pybuffer_qpos.refcount = 0;
  __pyx_pybuffernd_qpos.data = NULL;
  __pyx_pybuffernd_qpos.rcbuffer = &__pyx_pybuffer_qpos;
  __pyx_pybuffer_qvel.pybuffer.buf = NULL;
  __pyx_pybuffer_qvel.refcount = 0;
  __pyx_pybuffernd_qvel.data = NULL;
  __pyx_pybuffernd_qvel.rcbuffer = &__pyx_pybuffer_qvel;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_qpos.rcbuffer->pybuffer, (PyObject*)__pyx_v_qpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4111, __pyx_L1_error)
  }
  __pyx_pybuffernd_qpos.diminfo[0].strides = __pyx_pybuffernd_qpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_qpos.diminfo[0].shape = __pyx_pybuffernd_qpos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_qvel.rcbuffer->pybuffer, (PyObject*)__pyx_v_qvel, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4111, __pyx_L1_error)
  }
  __pyx_pybuffernd_qvel.diminfo[0].strides = __pyx_pybuffernd_qvel.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_qvel.diminfo[0].shape = __pyx_pybuffernd_qvel.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4112
 * 
 * def _mj_integratePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt):
 *     mj_integratePos(m.ptr, &qpos[0], &qvel[0], dt)             # <<<<<<<<<<<<<<
 * 
 * def _mj_normalizeQuat(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_qpos.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_qpos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4112, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_qvel.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_qvel.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4112, __pyx_L1_error)
  }
  mj_integratePos(__pyx_v_m->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_qpos.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_qpos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_qvel.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_qvel.diminfo[0].strides))), __pyx_v_dt);

  /* "mujoco_py/generated/wrappers.pxi":4111
 *     mj_contactForce(m.ptr, d.ptr, id, &result[0])
 * 
 * def _mj_integratePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt):             # <<<<<<<<<<<<<<
 *     mj_integratePos(m.ptr, &qpos[0], &qvel[0], dt)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qpos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qvel.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_integratePos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qpos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qvel.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4114
 *     mj_integratePos(m.ptr, &qpos[0], &qvel[0], dt)
 * 
 * def _mj_normalizeQuat(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos):             # <<<<<<<<<<<<<<
 *     mj_normalizeQuat(m.ptr, &qpos[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_191_mj_normalizeQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_191_mj_normalizeQuat = {"_mj_normalizeQuat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_191_mj_normalizeQuat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_191_mj_normalizeQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  PyArrayObject *__pyx_v_qpos = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_normalizeQuat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_qpos,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_qpos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_normalizeQuat", 1, 2, 2, 1); __PYX_ERR(3, 4114, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_normalizeQuat") < 0)) __PYX_ERR(3, 4114, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_qpos = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_normalizeQuat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4114, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_normalizeQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4114, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qpos), __pyx_ptype_5numpy_ndarray, 1, "qpos", 0))) __PYX_ERR(3, 4114, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_190_mj_normalizeQuat(__pyx_self, __pyx_v_m, __pyx_v_qpos);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_190_mj_normalizeQuat(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, PyArrayObject *__pyx_v_qpos) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_qpos;
  __Pyx_Buffer __pyx_pybuffer_qpos;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mj_normalizeQuat", 0);
  __pyx_pybuffer_qpos.pybuffer.buf = NULL;
  __pyx_pybuffer_qpos.refcount = 0;
  __pyx_pybuffernd_qpos.data = NULL;
  __pyx_pybuffernd_qpos.rcbuffer = &__pyx_pybuffer_qpos;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_qpos.rcbuffer->pybuffer, (PyObject*)__pyx_v_qpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4114, __pyx_L1_error)
  }
  __pyx_pybuffernd_qpos.diminfo[0].strides = __pyx_pybuffernd_qpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_qpos.diminfo[0].shape = __pyx_pybuffernd_qpos.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4115
 * 
 * def _mj_normalizeQuat(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos):
 *     mj_normalizeQuat(m.ptr, &qpos[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_local2Global(PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] xpos, np.ndarray[np.float64_t, mode="c", ndim=1] xmat, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, int body):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_qpos.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_qpos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4115, __pyx_L1_error)
  }
  mj_normalizeQuat(__pyx_v_m->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_qpos.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_qpos.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4114
 *     mj_integratePos(m.ptr, &qpos[0], &qvel[0], dt)
 * 
 * def _mj_normalizeQuat(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos):             # <<<<<<<<<<<<<<
 *     mj_normalizeQuat(m.ptr, &qpos[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qpos.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_normalizeQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_qpos.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4117
 *     mj_normalizeQuat(m.ptr, &qpos[0])
 * 
 * def _mj_local2Global(PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] xpos, np.ndarray[np.float64_t, mode="c", ndim=1] xmat, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, int body):             # <<<<<<<<<<<<<<
 *     mj_local2Global(d.ptr, &xpos[0], &xmat[0], &pos[0], &quat[0], body)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_193_mj_local2Global(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_193_mj_local2Global = {"_mj_local2Global", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_193_mj_local2Global, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_193_mj_local2Global(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  PyArrayObject *__pyx_v_xpos = 0;
  PyArrayObject *__pyx_v_xmat = 0;
  PyArrayObject *__pyx_v_pos = 0;
  PyArrayObject *__pyx_v_quat = 0;
  int __pyx_v_body;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_local2Global (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_d,&__pyx_n_s_xpos,&__pyx_n_s_xmat,&__pyx_n_s_pos,&__pyx_n_s_quat,&__pyx_n_s_body,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_xpos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_local2Global", 1, 6, 6, 1); __PYX_ERR(3, 4117, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_xmat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_local2Global", 1, 6, 6, 2); __PYX_ERR(3, 4117, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_local2Global", 1, 6, 6, 3); __PYX_ERR(3, 4117, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_local2Global", 1, 6, 6, 4); __PYX_ERR(3, 4117, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_body)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_local2Global", 1, 6, 6, 5); __PYX_ERR(3, 4117, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_local2Global") < 0)) __PYX_ERR(3, 4117, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[0]);
    __pyx_v_xpos = ((PyArrayObject *)values[1]);
    __pyx_v_xmat = ((PyArrayObject *)values[2]);
    __pyx_v_pos = ((PyArrayObject *)values[3]);
    __pyx_v_quat = ((PyArrayObject *)values[4]);
    __pyx_v_body = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_body == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4117, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_local2Global", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4117, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_local2Global", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4117, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xpos), __pyx_ptype_5numpy_ndarray, 1, "xpos", 0))) __PYX_ERR(3, 4117, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xmat), __pyx_ptype_5numpy_ndarray, 1, "xmat", 0))) __PYX_ERR(3, 4117, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(3, 4117, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4117, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_192_mj_local2Global(__pyx_self, __pyx_v_d, __pyx_v_xpos, __pyx_v_xmat, __pyx_v_pos, __pyx_v_quat, __pyx_v_body);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_192_mj_local2Global(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, PyArrayObject *__pyx_v_xpos, PyArrayObject *__pyx_v_xmat, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_quat, int __pyx_v_body) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pos;
  __Pyx_Buffer __pyx_pybuffer_pos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xmat;
  __Pyx_Buffer __pyx_pybuffer_xmat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xpos;
  __Pyx_Buffer __pyx_pybuffer_xpos;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  __Pyx_RefNannySetupContext("_mj_local2Global", 0);
  __pyx_pybuffer_xpos.pybuffer.buf = NULL;
  __pyx_pybuffer_xpos.refcount = 0;
  __pyx_pybuffernd_xpos.data = NULL;
  __pyx_pybuffernd_xpos.rcbuffer = &__pyx_pybuffer_xpos;
  __pyx_pybuffer_xmat.pybuffer.buf = NULL;
  __pyx_pybuffer_xmat.refcount = 0;
  __pyx_pybuffernd_xmat.data = NULL;
  __pyx_pybuffernd_xmat.rcbuffer = &__pyx_pybuffer_xmat;
  __pyx_pybuffer_pos.pybuffer.buf = NULL;
  __pyx_pybuffer_pos.refcount = 0;
  __pyx_pybuffernd_pos.data = NULL;
  __pyx_pybuffernd_pos.rcbuffer = &__pyx_pybuffer_pos;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xpos.rcbuffer->pybuffer, (PyObject*)__pyx_v_xpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4117, __pyx_L1_error)
  }
  __pyx_pybuffernd_xpos.diminfo[0].strides = __pyx_pybuffernd_xpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xpos.diminfo[0].shape = __pyx_pybuffernd_xpos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xmat.rcbuffer->pybuffer, (PyObject*)__pyx_v_xmat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4117, __pyx_L1_error)
  }
  __pyx_pybuffernd_xmat.diminfo[0].strides = __pyx_pybuffernd_xmat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xmat.diminfo[0].shape = __pyx_pybuffernd_xmat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4117, __pyx_L1_error)
  }
  __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4117, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4118
 * 
 * def _mj_local2Global(PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] xpos, np.ndarray[np.float64_t, mode="c", ndim=1] xmat, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, int body):
 *     mj_local2Global(d.ptr, &xpos[0], &xmat[0], &pos[0], &quat[0], body)             # <<<<<<<<<<<<<<
 * 
 * def _mj_getTotalmass(PyMjModel m):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_xpos.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_xpos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4118, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_xmat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_xmat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4118, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_pos.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_pos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4118, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4118, __pyx_L1_error)
  }
  mj_local2Global(__pyx_v_d->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_xpos.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_xpos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_xmat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_xmat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pos.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_pos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_quat.diminfo[0].strides))), __pyx_v_body);

  /* "mujoco_py/generated/wrappers.pxi":4117
 *     mj_normalizeQuat(m.ptr, &qpos[0])
 * 
 * def _mj_local2Global(PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] xpos, np.ndarray[np.float64_t, mode="c", ndim=1] xmat, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, int body):             # <<<<<<<<<<<<<<
 *     mj_local2Global(d.ptr, &xpos[0], &xmat[0], &pos[0], &quat[0], body)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xmat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xpos.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_local2Global", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xmat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xpos.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4120
 *     mj_local2Global(d.ptr, &xpos[0], &xmat[0], &pos[0], &quat[0], body)
 * 
 * def _mj_getTotalmass(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_getTotalmass(m.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_195_mj_getTotalmass(PyObject *__pyx_self, PyObject *__pyx_v_m); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_195_mj_getTotalmass = {"_mj_getTotalmass", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_195_mj_getTotalmass, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_195_mj_getTotalmass(PyObject *__pyx_self, PyObject *__pyx_v_m) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_getTotalmass (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4120, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_194_mj_getTotalmass(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_v_m));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_194_mj_getTotalmass(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mj_getTotalmass", 0);

  /* "mujoco_py/generated/wrappers.pxi":4121
 * 
 * def _mj_getTotalmass(PyMjModel m):
 *     return mj_getTotalmass(m.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mj_setTotalmass(PyMjModel m, float newmass):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(mj_getTotalmass(__pyx_v_m->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4120
 *     mj_local2Global(d.ptr, &xpos[0], &xmat[0], &pos[0], &quat[0], body)
 * 
 * def _mj_getTotalmass(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_getTotalmass(m.ptr)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_getTotalmass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4123
 *     return mj_getTotalmass(m.ptr)
 * 
 * def _mj_setTotalmass(PyMjModel m, float newmass):             # <<<<<<<<<<<<<<
 *     mj_setTotalmass(m.ptr, newmass)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_197_mj_setTotalmass(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_197_mj_setTotalmass = {"_mj_setTotalmass", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_197_mj_setTotalmass, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_197_mj_setTotalmass(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  float __pyx_v_newmass;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_setTotalmass (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_newmass,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_newmass)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_setTotalmass", 1, 2, 2, 1); __PYX_ERR(3, 4123, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_setTotalmass") < 0)) __PYX_ERR(3, 4123, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_newmass = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_newmass == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4123, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_setTotalmass", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4123, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_setTotalmass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4123, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_196_mj_setTotalmass(__pyx_self, __pyx_v_m, __pyx_v_newmass);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_196_mj_setTotalmass(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, float __pyx_v_newmass) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_setTotalmass", 0);

  /* "mujoco_py/generated/wrappers.pxi":4124
 * 
 * def _mj_setTotalmass(PyMjModel m, float newmass):
 *     mj_setTotalmass(m.ptr, newmass)             # <<<<<<<<<<<<<<
 * 
 * def _mj_version():
 */
  mj_setTotalmass(__pyx_v_m->ptr, __pyx_v_newmass);

  /* "mujoco_py/generated/wrappers.pxi":4123
 *     return mj_getTotalmass(m.ptr)
 * 
 * def _mj_setTotalmass(PyMjModel m, float newmass):             # <<<<<<<<<<<<<<
 *     mj_setTotalmass(m.ptr, newmass)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4126
 *     mj_setTotalmass(m.ptr, newmass)
 * 
 * def _mj_version():             # <<<<<<<<<<<<<<
 *     return mj_version()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_199_mj_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_199_mj_version = {"_mj_version", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_199_mj_version, METH_NOARGS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_199_mj_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_version (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_198_mj_version(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_198_mj_version(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mj_version", 0);

  /* "mujoco_py/generated/wrappers.pxi":4127
 * 
 * def _mj_version():
 *     return mj_version()             # <<<<<<<<<<<<<<
 * 
 * def _mj_rayHfield(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(mj_version()); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4126
 *     mj_setTotalmass(m.ptr, newmass)
 * 
 * def _mj_version():             # <<<<<<<<<<<<<<
 *     return mj_version()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mj_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4129
 *     return mj_version()
 * 
 * def _mj_rayHfield(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mj_rayHfield(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_201_mj_rayHfield(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_201_mj_rayHfield = {"_mj_rayHfield", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_201_mj_rayHfield, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_201_mj_rayHfield(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_geomid;
  PyArrayObject *__pyx_v_pnt = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_rayHfield (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_geomid,&__pyx_n_s_pnt,&__pyx_n_s_vec,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rayHfield", 1, 5, 5, 1); __PYX_ERR(3, 4129, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_geomid)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rayHfield", 1, 5, 5, 2); __PYX_ERR(3, 4129, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pnt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rayHfield", 1, 5, 5, 3); __PYX_ERR(3, 4129, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rayHfield", 1, 5, 5, 4); __PYX_ERR(3, 4129, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_rayHfield") < 0)) __PYX_ERR(3, 4129, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_geomid = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_geomid == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4129, __pyx_L3_error)
    __pyx_v_pnt = ((PyArrayObject *)values[3]);
    __pyx_v_vec = ((PyArrayObject *)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_rayHfield", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4129, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_rayHfield", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4129, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4129, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pnt), __pyx_ptype_5numpy_ndarray, 1, "pnt", 0))) __PYX_ERR(3, 4129, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4129, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_200_mj_rayHfield(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_geomid, __pyx_v_pnt, __pyx_v_vec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_200_mj_rayHfield(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_geomid, PyArrayObject *__pyx_v_pnt, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pnt;
  __Pyx_Buffer __pyx_pybuffer_pnt;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_mj_rayHfield", 0);
  __pyx_pybuffer_pnt.pybuffer.buf = NULL;
  __pyx_pybuffer_pnt.refcount = 0;
  __pyx_pybuffernd_pnt.data = NULL;
  __pyx_pybuffernd_pnt.rcbuffer = &__pyx_pybuffer_pnt;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pnt.rcbuffer->pybuffer, (PyObject*)__pyx_v_pnt, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4129, __pyx_L1_error)
  }
  __pyx_pybuffernd_pnt.diminfo[0].strides = __pyx_pybuffernd_pnt.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pnt.diminfo[0].shape = __pyx_pybuffernd_pnt.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4129, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4130
 * 
 * def _mj_rayHfield(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     return mj_rayHfield(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mj_rayMesh(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_pnt.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_pnt.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4130, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4130, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(mj_rayHfield(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_geomid, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pnt.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_pnt.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 4130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4129
 *     return mj_version()
 * 
 * def _mj_rayHfield(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mj_rayHfield(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pnt.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_rayHfield", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pnt.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4132
 *     return mj_rayHfield(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 * def _mj_rayMesh(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mj_rayMesh(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_203_mj_rayMesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_203_mj_rayMesh = {"_mj_rayMesh", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_203_mj_rayMesh, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_203_mj_rayMesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_geomid;
  PyArrayObject *__pyx_v_pnt = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_rayMesh (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_geomid,&__pyx_n_s_pnt,&__pyx_n_s_vec,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rayMesh", 1, 5, 5, 1); __PYX_ERR(3, 4132, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_geomid)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rayMesh", 1, 5, 5, 2); __PYX_ERR(3, 4132, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pnt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rayMesh", 1, 5, 5, 3); __PYX_ERR(3, 4132, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_rayMesh", 1, 5, 5, 4); __PYX_ERR(3, 4132, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_rayMesh") < 0)) __PYX_ERR(3, 4132, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_geomid = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_geomid == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4132, __pyx_L3_error)
    __pyx_v_pnt = ((PyArrayObject *)values[3]);
    __pyx_v_vec = ((PyArrayObject *)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_rayMesh", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4132, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_rayMesh", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4132, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4132, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pnt), __pyx_ptype_5numpy_ndarray, 1, "pnt", 0))) __PYX_ERR(3, 4132, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4132, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_202_mj_rayMesh(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_geomid, __pyx_v_pnt, __pyx_v_vec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_202_mj_rayMesh(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_geomid, PyArrayObject *__pyx_v_pnt, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pnt;
  __Pyx_Buffer __pyx_pybuffer_pnt;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_mj_rayMesh", 0);
  __pyx_pybuffer_pnt.pybuffer.buf = NULL;
  __pyx_pybuffer_pnt.refcount = 0;
  __pyx_pybuffernd_pnt.data = NULL;
  __pyx_pybuffernd_pnt.rcbuffer = &__pyx_pybuffer_pnt;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pnt.rcbuffer->pybuffer, (PyObject*)__pyx_v_pnt, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4132, __pyx_L1_error)
  }
  __pyx_pybuffernd_pnt.diminfo[0].strides = __pyx_pybuffernd_pnt.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pnt.diminfo[0].shape = __pyx_pybuffernd_pnt.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4132, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4133
 * 
 * def _mj_rayMesh(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     return mj_rayMesh(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_rayGeom(np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] size, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int geomtype):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_pnt.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_pnt.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4133, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4133, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(mj_rayMesh(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_geomid, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pnt.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_pnt.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 4133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4132
 *     return mj_rayHfield(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 * def _mj_rayMesh(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mj_rayMesh(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pnt.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mj_rayMesh", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pnt.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4135
 *     return mj_rayMesh(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 * def _mju_rayGeom(np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] size, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int geomtype):             # <<<<<<<<<<<<<<
 *     return mju_rayGeom(&pos[0], &mat[0], &size[0], &pnt[0], &vec[0], geomtype)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_205_mju_rayGeom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_205_mju_rayGeom = {"_mju_rayGeom", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_205_mju_rayGeom, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_205_mju_rayGeom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_pos = 0;
  PyArrayObject *__pyx_v_mat = 0;
  PyArrayObject *__pyx_v_size = 0;
  PyArrayObject *__pyx_v_pnt = 0;
  PyArrayObject *__pyx_v_vec = 0;
  int __pyx_v_geomtype;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_rayGeom (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pos,&__pyx_n_s_mat,&__pyx_n_s_size,&__pyx_n_s_pnt,&__pyx_n_s_vec,&__pyx_n_s_geomtype,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rayGeom", 1, 6, 6, 1); __PYX_ERR(3, 4135, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rayGeom", 1, 6, 6, 2); __PYX_ERR(3, 4135, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pnt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rayGeom", 1, 6, 6, 3); __PYX_ERR(3, 4135, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rayGeom", 1, 6, 6, 4); __PYX_ERR(3, 4135, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_geomtype)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rayGeom", 1, 6, 6, 5); __PYX_ERR(3, 4135, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_rayGeom") < 0)) __PYX_ERR(3, 4135, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_pos = ((PyArrayObject *)values[0]);
    __pyx_v_mat = ((PyArrayObject *)values[1]);
    __pyx_v_size = ((PyArrayObject *)values[2]);
    __pyx_v_pnt = ((PyArrayObject *)values[3]);
    __pyx_v_vec = ((PyArrayObject *)values[4]);
    __pyx_v_geomtype = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_geomtype == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4135, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_rayGeom", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4135, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_rayGeom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(3, 4135, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4135, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_size), __pyx_ptype_5numpy_ndarray, 1, "size", 0))) __PYX_ERR(3, 4135, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pnt), __pyx_ptype_5numpy_ndarray, 1, "pnt", 0))) __PYX_ERR(3, 4135, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4135, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_204_mju_rayGeom(__pyx_self, __pyx_v_pos, __pyx_v_mat, __pyx_v_size, __pyx_v_pnt, __pyx_v_vec, __pyx_v_geomtype);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_204_mju_rayGeom(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_size, PyArrayObject *__pyx_v_pnt, PyArrayObject *__pyx_v_vec, int __pyx_v_geomtype) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pnt;
  __Pyx_Buffer __pyx_pybuffer_pnt;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pos;
  __Pyx_Buffer __pyx_pybuffer_pos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_size;
  __Pyx_Buffer __pyx_pybuffer_size;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_mju_rayGeom", 0);
  __pyx_pybuffer_pos.pybuffer.buf = NULL;
  __pyx_pybuffer_pos.refcount = 0;
  __pyx_pybuffernd_pos.data = NULL;
  __pyx_pybuffernd_pos.rcbuffer = &__pyx_pybuffer_pos;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  __pyx_pybuffer_size.pybuffer.buf = NULL;
  __pyx_pybuffer_size.refcount = 0;
  __pyx_pybuffernd_size.data = NULL;
  __pyx_pybuffernd_size.rcbuffer = &__pyx_pybuffer_size;
  __pyx_pybuffer_pnt.pybuffer.buf = NULL;
  __pyx_pybuffer_pnt.refcount = 0;
  __pyx_pybuffernd_pnt.data = NULL;
  __pyx_pybuffernd_pnt.rcbuffer = &__pyx_pybuffer_pnt;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4135, __pyx_L1_error)
  }
  __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4135, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_size.rcbuffer->pybuffer, (PyObject*)__pyx_v_size, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4135, __pyx_L1_error)
  }
  __pyx_pybuffernd_size.diminfo[0].strides = __pyx_pybuffernd_size.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_size.diminfo[0].shape = __pyx_pybuffernd_size.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pnt.rcbuffer->pybuffer, (PyObject*)__pyx_v_pnt, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4135, __pyx_L1_error)
  }
  __pyx_pybuffernd_pnt.diminfo[0].strides = __pyx_pybuffernd_pnt.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pnt.diminfo[0].shape = __pyx_pybuffernd_pnt.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4135, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4136
 * 
 * def _mju_rayGeom(np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] size, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int geomtype):
 *     return mju_rayGeom(&pos[0], &mat[0], &size[0], &pnt[0], &vec[0], geomtype)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_defaultCamera(PyMjvCamera cam):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_pos.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_pos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4136, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4136, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_size.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_size.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4136, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_pnt.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_pnt.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4136, __pyx_L1_error)
  }
  __pyx_t_6 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_6 < 0) {
    __pyx_t_6 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_6 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4136, __pyx_L1_error)
  }
  __pyx_t_7 = PyFloat_FromDouble(mju_rayGeom((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pos.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_pos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_size.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_size.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pnt.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_pnt.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_geomtype)); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 4136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4135
 *     return mj_rayMesh(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 * def _mju_rayGeom(np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] size, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int geomtype):             # <<<<<<<<<<<<<<
 *     return mju_rayGeom(&pos[0], &mat[0], &size[0], &pnt[0], &vec[0], geomtype)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_7);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pnt.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_size.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_rayGeom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pnt.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_size.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4138
 *     return mju_rayGeom(&pos[0], &mat[0], &size[0], &pnt[0], &vec[0], geomtype)
 * 
 * def _mjv_defaultCamera(PyMjvCamera cam):             # <<<<<<<<<<<<<<
 *     mjv_defaultCamera(cam.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_207_mjv_defaultCamera(PyObject *__pyx_self, PyObject *__pyx_v_cam); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_207_mjv_defaultCamera = {"_mjv_defaultCamera", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_207_mjv_defaultCamera, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_207_mjv_defaultCamera(PyObject *__pyx_self, PyObject *__pyx_v_cam) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_defaultCamera (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cam), __pyx_ptype_9mujoco_py_4cymj_PyMjvCamera, 1, "cam", 0))) __PYX_ERR(3, 4138, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_206_mjv_defaultCamera(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_v_cam));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_206_mjv_defaultCamera(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_defaultCamera", 0);

  /* "mujoco_py/generated/wrappers.pxi":4139
 * 
 * def _mjv_defaultCamera(PyMjvCamera cam):
 *     mjv_defaultCamera(cam.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_defaultPerturb(PyMjvPerturb pert):
 */
  mjv_defaultCamera(__pyx_v_cam->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4138
 *     return mju_rayGeom(&pos[0], &mat[0], &size[0], &pnt[0], &vec[0], geomtype)
 * 
 * def _mjv_defaultCamera(PyMjvCamera cam):             # <<<<<<<<<<<<<<
 *     mjv_defaultCamera(cam.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4141
 *     mjv_defaultCamera(cam.ptr)
 * 
 * def _mjv_defaultPerturb(PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_defaultPerturb(pert.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_209_mjv_defaultPerturb(PyObject *__pyx_self, PyObject *__pyx_v_pert); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_209_mjv_defaultPerturb = {"_mjv_defaultPerturb", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_209_mjv_defaultPerturb, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_209_mjv_defaultPerturb(PyObject *__pyx_self, PyObject *__pyx_v_pert) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_defaultPerturb (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pert), __pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb, 1, "pert", 0))) __PYX_ERR(3, 4141, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_208_mjv_defaultPerturb(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_v_pert));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_208_mjv_defaultPerturb(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_defaultPerturb", 0);

  /* "mujoco_py/generated/wrappers.pxi":4142
 * 
 * def _mjv_defaultPerturb(PyMjvPerturb pert):
 *     mjv_defaultPerturb(pert.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_room2model(np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, PyMjvScene scn):
 */
  mjv_defaultPerturb(__pyx_v_pert->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4141
 *     mjv_defaultCamera(cam.ptr)
 * 
 * def _mjv_defaultPerturb(PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_defaultPerturb(pert.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4144
 *     mjv_defaultPerturb(pert.ptr)
 * 
 * def _mjv_room2model(np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_room2model(&modelpos[0], &modelquat[0], &roompos[0], &roomquat[0], scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_211_mjv_room2model(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_211_mjv_room2model = {"_mjv_room2model", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_211_mjv_room2model, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_211_mjv_room2model(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_modelpos = 0;
  PyArrayObject *__pyx_v_modelquat = 0;
  PyArrayObject *__pyx_v_roompos = 0;
  PyArrayObject *__pyx_v_roomquat = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_room2model (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_modelpos,&__pyx_n_s_modelquat,&__pyx_n_s_roompos,&__pyx_n_s_roomquat,&__pyx_n_s_scn,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_modelpos)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_modelquat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_room2model", 1, 5, 5, 1); __PYX_ERR(3, 4144, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_roompos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_room2model", 1, 5, 5, 2); __PYX_ERR(3, 4144, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_roomquat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_room2model", 1, 5, 5, 3); __PYX_ERR(3, 4144, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_room2model", 1, 5, 5, 4); __PYX_ERR(3, 4144, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_room2model") < 0)) __PYX_ERR(3, 4144, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_modelpos = ((PyArrayObject *)values[0]);
    __pyx_v_modelquat = ((PyArrayObject *)values[1]);
    __pyx_v_roompos = ((PyArrayObject *)values[2]);
    __pyx_v_roomquat = ((PyArrayObject *)values[3]);
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_room2model", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4144, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_room2model", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_modelpos), __pyx_ptype_5numpy_ndarray, 1, "modelpos", 0))) __PYX_ERR(3, 4144, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_modelquat), __pyx_ptype_5numpy_ndarray, 1, "modelquat", 0))) __PYX_ERR(3, 4144, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_roompos), __pyx_ptype_5numpy_ndarray, 1, "roompos", 0))) __PYX_ERR(3, 4144, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_roomquat), __pyx_ptype_5numpy_ndarray, 1, "roomquat", 0))) __PYX_ERR(3, 4144, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4144, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_210_mjv_room2model(__pyx_self, __pyx_v_modelpos, __pyx_v_modelquat, __pyx_v_roompos, __pyx_v_roomquat, __pyx_v_scn);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_210_mjv_room2model(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_modelpos, PyArrayObject *__pyx_v_modelquat, PyArrayObject *__pyx_v_roompos, PyArrayObject *__pyx_v_roomquat, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_modelpos;
  __Pyx_Buffer __pyx_pybuffer_modelpos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_modelquat;
  __Pyx_Buffer __pyx_pybuffer_modelquat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_roompos;
  __Pyx_Buffer __pyx_pybuffer_roompos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_roomquat;
  __Pyx_Buffer __pyx_pybuffer_roomquat;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  __Pyx_RefNannySetupContext("_mjv_room2model", 0);
  __pyx_pybuffer_modelpos.pybuffer.buf = NULL;
  __pyx_pybuffer_modelpos.refcount = 0;
  __pyx_pybuffernd_modelpos.data = NULL;
  __pyx_pybuffernd_modelpos.rcbuffer = &__pyx_pybuffer_modelpos;
  __pyx_pybuffer_modelquat.pybuffer.buf = NULL;
  __pyx_pybuffer_modelquat.refcount = 0;
  __pyx_pybuffernd_modelquat.data = NULL;
  __pyx_pybuffernd_modelquat.rcbuffer = &__pyx_pybuffer_modelquat;
  __pyx_pybuffer_roompos.pybuffer.buf = NULL;
  __pyx_pybuffer_roompos.refcount = 0;
  __pyx_pybuffernd_roompos.data = NULL;
  __pyx_pybuffernd_roompos.rcbuffer = &__pyx_pybuffer_roompos;
  __pyx_pybuffer_roomquat.pybuffer.buf = NULL;
  __pyx_pybuffer_roomquat.refcount = 0;
  __pyx_pybuffernd_roomquat.data = NULL;
  __pyx_pybuffernd_roomquat.rcbuffer = &__pyx_pybuffer_roomquat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_modelpos.rcbuffer->pybuffer, (PyObject*)__pyx_v_modelpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4144, __pyx_L1_error)
  }
  __pyx_pybuffernd_modelpos.diminfo[0].strides = __pyx_pybuffernd_modelpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_modelpos.diminfo[0].shape = __pyx_pybuffernd_modelpos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_modelquat.rcbuffer->pybuffer, (PyObject*)__pyx_v_modelquat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4144, __pyx_L1_error)
  }
  __pyx_pybuffernd_modelquat.diminfo[0].strides = __pyx_pybuffernd_modelquat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_modelquat.diminfo[0].shape = __pyx_pybuffernd_modelquat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_roompos.rcbuffer->pybuffer, (PyObject*)__pyx_v_roompos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4144, __pyx_L1_error)
  }
  __pyx_pybuffernd_roompos.diminfo[0].strides = __pyx_pybuffernd_roompos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_roompos.diminfo[0].shape = __pyx_pybuffernd_roompos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_roomquat.rcbuffer->pybuffer, (PyObject*)__pyx_v_roomquat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4144, __pyx_L1_error)
  }
  __pyx_pybuffernd_roomquat.diminfo[0].strides = __pyx_pybuffernd_roomquat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_roomquat.diminfo[0].shape = __pyx_pybuffernd_roomquat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4145
 * 
 * def _mjv_room2model(np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, PyMjvScene scn):
 *     mjv_room2model(&modelpos[0], &modelquat[0], &roompos[0], &roomquat[0], scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_model2room(np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, PyMjvScene scn):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_modelpos.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_modelpos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4145, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_modelquat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_modelquat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4145, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_roompos.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_roompos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4145, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_roomquat.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_roomquat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4145, __pyx_L1_error)
  }
  mjv_room2model((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_modelpos.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_modelpos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_modelquat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_modelquat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_roompos.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_roompos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_roomquat.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_roomquat.diminfo[0].strides))), __pyx_v_scn->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4144
 *     mjv_defaultPerturb(pert.ptr)
 * 
 * def _mjv_room2model(np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_room2model(&modelpos[0], &modelquat[0], &roompos[0], &roomquat[0], scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_modelpos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_modelquat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roompos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roomquat.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_room2model", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_modelpos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_modelquat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roompos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roomquat.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4147
 *     mjv_room2model(&modelpos[0], &modelquat[0], &roompos[0], &roomquat[0], scn.ptr)
 * 
 * def _mjv_model2room(np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_model2room(&roompos[0], &roomquat[0], &modelpos[0], &modelquat[0], scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_213_mjv_model2room(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_213_mjv_model2room = {"_mjv_model2room", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_213_mjv_model2room, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_213_mjv_model2room(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_roompos = 0;
  PyArrayObject *__pyx_v_roomquat = 0;
  PyArrayObject *__pyx_v_modelpos = 0;
  PyArrayObject *__pyx_v_modelquat = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_model2room (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_roompos,&__pyx_n_s_roomquat,&__pyx_n_s_modelpos,&__pyx_n_s_modelquat,&__pyx_n_s_scn,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_roompos)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_roomquat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_model2room", 1, 5, 5, 1); __PYX_ERR(3, 4147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_modelpos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_model2room", 1, 5, 5, 2); __PYX_ERR(3, 4147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_modelquat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_model2room", 1, 5, 5, 3); __PYX_ERR(3, 4147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_model2room", 1, 5, 5, 4); __PYX_ERR(3, 4147, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_model2room") < 0)) __PYX_ERR(3, 4147, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_roompos = ((PyArrayObject *)values[0]);
    __pyx_v_roomquat = ((PyArrayObject *)values[1]);
    __pyx_v_modelpos = ((PyArrayObject *)values[2]);
    __pyx_v_modelquat = ((PyArrayObject *)values[3]);
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_model2room", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4147, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_model2room", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_roompos), __pyx_ptype_5numpy_ndarray, 1, "roompos", 0))) __PYX_ERR(3, 4147, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_roomquat), __pyx_ptype_5numpy_ndarray, 1, "roomquat", 0))) __PYX_ERR(3, 4147, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_modelpos), __pyx_ptype_5numpy_ndarray, 1, "modelpos", 0))) __PYX_ERR(3, 4147, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_modelquat), __pyx_ptype_5numpy_ndarray, 1, "modelquat", 0))) __PYX_ERR(3, 4147, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4147, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_212_mjv_model2room(__pyx_self, __pyx_v_roompos, __pyx_v_roomquat, __pyx_v_modelpos, __pyx_v_modelquat, __pyx_v_scn);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_212_mjv_model2room(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_roompos, PyArrayObject *__pyx_v_roomquat, PyArrayObject *__pyx_v_modelpos, PyArrayObject *__pyx_v_modelquat, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_modelpos;
  __Pyx_Buffer __pyx_pybuffer_modelpos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_modelquat;
  __Pyx_Buffer __pyx_pybuffer_modelquat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_roompos;
  __Pyx_Buffer __pyx_pybuffer_roompos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_roomquat;
  __Pyx_Buffer __pyx_pybuffer_roomquat;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  __Pyx_RefNannySetupContext("_mjv_model2room", 0);
  __pyx_pybuffer_roompos.pybuffer.buf = NULL;
  __pyx_pybuffer_roompos.refcount = 0;
  __pyx_pybuffernd_roompos.data = NULL;
  __pyx_pybuffernd_roompos.rcbuffer = &__pyx_pybuffer_roompos;
  __pyx_pybuffer_roomquat.pybuffer.buf = NULL;
  __pyx_pybuffer_roomquat.refcount = 0;
  __pyx_pybuffernd_roomquat.data = NULL;
  __pyx_pybuffernd_roomquat.rcbuffer = &__pyx_pybuffer_roomquat;
  __pyx_pybuffer_modelpos.pybuffer.buf = NULL;
  __pyx_pybuffer_modelpos.refcount = 0;
  __pyx_pybuffernd_modelpos.data = NULL;
  __pyx_pybuffernd_modelpos.rcbuffer = &__pyx_pybuffer_modelpos;
  __pyx_pybuffer_modelquat.pybuffer.buf = NULL;
  __pyx_pybuffer_modelquat.refcount = 0;
  __pyx_pybuffernd_modelquat.data = NULL;
  __pyx_pybuffernd_modelquat.rcbuffer = &__pyx_pybuffer_modelquat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_roompos.rcbuffer->pybuffer, (PyObject*)__pyx_v_roompos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4147, __pyx_L1_error)
  }
  __pyx_pybuffernd_roompos.diminfo[0].strides = __pyx_pybuffernd_roompos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_roompos.diminfo[0].shape = __pyx_pybuffernd_roompos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_roomquat.rcbuffer->pybuffer, (PyObject*)__pyx_v_roomquat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4147, __pyx_L1_error)
  }
  __pyx_pybuffernd_roomquat.diminfo[0].strides = __pyx_pybuffernd_roomquat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_roomquat.diminfo[0].shape = __pyx_pybuffernd_roomquat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_modelpos.rcbuffer->pybuffer, (PyObject*)__pyx_v_modelpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4147, __pyx_L1_error)
  }
  __pyx_pybuffernd_modelpos.diminfo[0].strides = __pyx_pybuffernd_modelpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_modelpos.diminfo[0].shape = __pyx_pybuffernd_modelpos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_modelquat.rcbuffer->pybuffer, (PyObject*)__pyx_v_modelquat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4147, __pyx_L1_error)
  }
  __pyx_pybuffernd_modelquat.diminfo[0].strides = __pyx_pybuffernd_modelquat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_modelquat.diminfo[0].shape = __pyx_pybuffernd_modelquat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4148
 * 
 * def _mjv_model2room(np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, PyMjvScene scn):
 *     mjv_model2room(&roompos[0], &roomquat[0], &modelpos[0], &modelquat[0], scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_cameraInModel(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_roompos.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_roompos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4148, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_roomquat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_roomquat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4148, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_modelpos.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_modelpos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4148, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_modelquat.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_modelquat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4148, __pyx_L1_error)
  }
  mjv_model2room((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_roompos.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_roompos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_roomquat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_roomquat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_modelpos.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_modelpos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_modelquat.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_modelquat.diminfo[0].strides))), __pyx_v_scn->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4147
 *     mjv_room2model(&modelpos[0], &modelquat[0], &roompos[0], &roomquat[0], scn.ptr)
 * 
 * def _mjv_model2room(np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_model2room(&roompos[0], &roomquat[0], &modelpos[0], &modelquat[0], scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_modelpos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_modelquat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roompos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roomquat.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_model2room", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_modelpos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_modelquat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roompos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roomquat.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4150
 *     mjv_model2room(&roompos[0], &roomquat[0], &modelpos[0], &modelquat[0], scn.ptr)
 * 
 * def _mjv_cameraInModel(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_cameraInModel(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_215_mjv_cameraInModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_215_mjv_cameraInModel = {"_mjv_cameraInModel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_215_mjv_cameraInModel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_215_mjv_cameraInModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_headpos = 0;
  PyArrayObject *__pyx_v_forward = 0;
  PyArrayObject *__pyx_v_up = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_cameraInModel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_headpos,&__pyx_n_s_forward,&__pyx_n_s_up,&__pyx_n_s_scn,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_headpos)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_forward)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_cameraInModel", 1, 4, 4, 1); __PYX_ERR(3, 4150, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_up)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_cameraInModel", 1, 4, 4, 2); __PYX_ERR(3, 4150, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_cameraInModel", 1, 4, 4, 3); __PYX_ERR(3, 4150, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_cameraInModel") < 0)) __PYX_ERR(3, 4150, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_headpos = ((PyArrayObject *)values[0]);
    __pyx_v_forward = ((PyArrayObject *)values[1]);
    __pyx_v_up = ((PyArrayObject *)values[2]);
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_cameraInModel", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4150, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_cameraInModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_headpos), __pyx_ptype_5numpy_ndarray, 1, "headpos", 0))) __PYX_ERR(3, 4150, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_forward), __pyx_ptype_5numpy_ndarray, 1, "forward", 0))) __PYX_ERR(3, 4150, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_up), __pyx_ptype_5numpy_ndarray, 1, "up", 0))) __PYX_ERR(3, 4150, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4150, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_214_mjv_cameraInModel(__pyx_self, __pyx_v_headpos, __pyx_v_forward, __pyx_v_up, __pyx_v_scn);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_214_mjv_cameraInModel(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_headpos, PyArrayObject *__pyx_v_forward, PyArrayObject *__pyx_v_up, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_forward;
  __Pyx_Buffer __pyx_pybuffer_forward;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_headpos;
  __Pyx_Buffer __pyx_pybuffer_headpos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_up;
  __Pyx_Buffer __pyx_pybuffer_up;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mjv_cameraInModel", 0);
  __pyx_pybuffer_headpos.pybuffer.buf = NULL;
  __pyx_pybuffer_headpos.refcount = 0;
  __pyx_pybuffernd_headpos.data = NULL;
  __pyx_pybuffernd_headpos.rcbuffer = &__pyx_pybuffer_headpos;
  __pyx_pybuffer_forward.pybuffer.buf = NULL;
  __pyx_pybuffer_forward.refcount = 0;
  __pyx_pybuffernd_forward.data = NULL;
  __pyx_pybuffernd_forward.rcbuffer = &__pyx_pybuffer_forward;
  __pyx_pybuffer_up.pybuffer.buf = NULL;
  __pyx_pybuffer_up.refcount = 0;
  __pyx_pybuffernd_up.data = NULL;
  __pyx_pybuffernd_up.rcbuffer = &__pyx_pybuffer_up;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_headpos.rcbuffer->pybuffer, (PyObject*)__pyx_v_headpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4150, __pyx_L1_error)
  }
  __pyx_pybuffernd_headpos.diminfo[0].strides = __pyx_pybuffernd_headpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_headpos.diminfo[0].shape = __pyx_pybuffernd_headpos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_forward.rcbuffer->pybuffer, (PyObject*)__pyx_v_forward, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4150, __pyx_L1_error)
  }
  __pyx_pybuffernd_forward.diminfo[0].strides = __pyx_pybuffernd_forward.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_forward.diminfo[0].shape = __pyx_pybuffernd_forward.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_up.rcbuffer->pybuffer, (PyObject*)__pyx_v_up, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4150, __pyx_L1_error)
  }
  __pyx_pybuffernd_up.diminfo[0].strides = __pyx_pybuffernd_up.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_up.diminfo[0].shape = __pyx_pybuffernd_up.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4151
 * 
 * def _mjv_cameraInModel(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):
 *     mjv_cameraInModel(&headpos[0], &forward[0], &up[0], scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_cameraInRoom(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_headpos.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_headpos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4151, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_forward.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_forward.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4151, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_up.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_up.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4151, __pyx_L1_error)
  }
  mjv_cameraInModel((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_headpos.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_headpos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_forward.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_forward.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_up.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_up.diminfo[0].strides))), __pyx_v_scn->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4150
 *     mjv_model2room(&roompos[0], &roomquat[0], &modelpos[0], &modelquat[0], scn.ptr)
 * 
 * def _mjv_cameraInModel(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_cameraInModel(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_forward.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_headpos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_up.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_cameraInModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_forward.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_headpos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_up.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4153
 *     mjv_cameraInModel(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 * def _mjv_cameraInRoom(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_cameraInRoom(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_217_mjv_cameraInRoom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_217_mjv_cameraInRoom = {"_mjv_cameraInRoom", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_217_mjv_cameraInRoom, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_217_mjv_cameraInRoom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_headpos = 0;
  PyArrayObject *__pyx_v_forward = 0;
  PyArrayObject *__pyx_v_up = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_cameraInRoom (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_headpos,&__pyx_n_s_forward,&__pyx_n_s_up,&__pyx_n_s_scn,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_headpos)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_forward)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_cameraInRoom", 1, 4, 4, 1); __PYX_ERR(3, 4153, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_up)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_cameraInRoom", 1, 4, 4, 2); __PYX_ERR(3, 4153, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_cameraInRoom", 1, 4, 4, 3); __PYX_ERR(3, 4153, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_cameraInRoom") < 0)) __PYX_ERR(3, 4153, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_headpos = ((PyArrayObject *)values[0]);
    __pyx_v_forward = ((PyArrayObject *)values[1]);
    __pyx_v_up = ((PyArrayObject *)values[2]);
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_cameraInRoom", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4153, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_cameraInRoom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_headpos), __pyx_ptype_5numpy_ndarray, 1, "headpos", 0))) __PYX_ERR(3, 4153, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_forward), __pyx_ptype_5numpy_ndarray, 1, "forward", 0))) __PYX_ERR(3, 4153, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_up), __pyx_ptype_5numpy_ndarray, 1, "up", 0))) __PYX_ERR(3, 4153, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4153, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_216_mjv_cameraInRoom(__pyx_self, __pyx_v_headpos, __pyx_v_forward, __pyx_v_up, __pyx_v_scn);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_216_mjv_cameraInRoom(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_headpos, PyArrayObject *__pyx_v_forward, PyArrayObject *__pyx_v_up, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_forward;
  __Pyx_Buffer __pyx_pybuffer_forward;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_headpos;
  __Pyx_Buffer __pyx_pybuffer_headpos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_up;
  __Pyx_Buffer __pyx_pybuffer_up;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mjv_cameraInRoom", 0);
  __pyx_pybuffer_headpos.pybuffer.buf = NULL;
  __pyx_pybuffer_headpos.refcount = 0;
  __pyx_pybuffernd_headpos.data = NULL;
  __pyx_pybuffernd_headpos.rcbuffer = &__pyx_pybuffer_headpos;
  __pyx_pybuffer_forward.pybuffer.buf = NULL;
  __pyx_pybuffer_forward.refcount = 0;
  __pyx_pybuffernd_forward.data = NULL;
  __pyx_pybuffernd_forward.rcbuffer = &__pyx_pybuffer_forward;
  __pyx_pybuffer_up.pybuffer.buf = NULL;
  __pyx_pybuffer_up.refcount = 0;
  __pyx_pybuffernd_up.data = NULL;
  __pyx_pybuffernd_up.rcbuffer = &__pyx_pybuffer_up;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_headpos.rcbuffer->pybuffer, (PyObject*)__pyx_v_headpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4153, __pyx_L1_error)
  }
  __pyx_pybuffernd_headpos.diminfo[0].strides = __pyx_pybuffernd_headpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_headpos.diminfo[0].shape = __pyx_pybuffernd_headpos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_forward.rcbuffer->pybuffer, (PyObject*)__pyx_v_forward, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4153, __pyx_L1_error)
  }
  __pyx_pybuffernd_forward.diminfo[0].strides = __pyx_pybuffernd_forward.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_forward.diminfo[0].shape = __pyx_pybuffernd_forward.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_up.rcbuffer->pybuffer, (PyObject*)__pyx_v_up, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4153, __pyx_L1_error)
  }
  __pyx_pybuffernd_up.diminfo[0].strides = __pyx_pybuffernd_up.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_up.diminfo[0].shape = __pyx_pybuffernd_up.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4154
 * 
 * def _mjv_cameraInRoom(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):
 *     mjv_cameraInRoom(&headpos[0], &forward[0], &up[0], scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_frustumHeight(PyMjvScene scn):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_headpos.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_headpos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4154, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_forward.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_forward.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4154, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_up.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_up.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4154, __pyx_L1_error)
  }
  mjv_cameraInRoom((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_headpos.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_headpos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_forward.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_forward.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_up.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_up.diminfo[0].strides))), __pyx_v_scn->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4153
 *     mjv_cameraInModel(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 * def _mjv_cameraInRoom(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_cameraInRoom(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_forward.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_headpos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_up.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_cameraInRoom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_forward.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_headpos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_up.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4156
 *     mjv_cameraInRoom(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 * def _mjv_frustumHeight(PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     return mjv_frustumHeight(scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_219_mjv_frustumHeight(PyObject *__pyx_self, PyObject *__pyx_v_scn); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_219_mjv_frustumHeight = {"_mjv_frustumHeight", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_219_mjv_frustumHeight, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_219_mjv_frustumHeight(PyObject *__pyx_self, PyObject *__pyx_v_scn) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_frustumHeight (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4156, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_218_mjv_frustumHeight(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_scn));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_218_mjv_frustumHeight(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mjv_frustumHeight", 0);

  /* "mujoco_py/generated/wrappers.pxi":4157
 * 
 * def _mjv_frustumHeight(PyMjvScene scn):
 *     return mjv_frustumHeight(scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_alignToCamera(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] forward):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(mjv_frustumHeight(__pyx_v_scn->ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4156
 *     mjv_cameraInRoom(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 * def _mjv_frustumHeight(PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     return mjv_frustumHeight(scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_frustumHeight", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4159
 *     return mjv_frustumHeight(scn.ptr)
 * 
 * def _mjv_alignToCamera(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] forward):             # <<<<<<<<<<<<<<
 *     mjv_alignToCamera(&res[0], &vec[0], &forward[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_221_mjv_alignToCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_221_mjv_alignToCamera = {"_mjv_alignToCamera", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_221_mjv_alignToCamera, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_221_mjv_alignToCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyArrayObject *__pyx_v_forward = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_alignToCamera (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_forward,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_alignToCamera", 1, 3, 3, 1); __PYX_ERR(3, 4159, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_forward)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_alignToCamera", 1, 3, 3, 2); __PYX_ERR(3, 4159, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_alignToCamera") < 0)) __PYX_ERR(3, 4159, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_forward = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_alignToCamera", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4159, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_alignToCamera", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4159, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4159, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_forward), __pyx_ptype_5numpy_ndarray, 1, "forward", 0))) __PYX_ERR(3, 4159, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_220_mjv_alignToCamera(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_forward);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_220_mjv_alignToCamera(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, PyArrayObject *__pyx_v_forward) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_forward;
  __Pyx_Buffer __pyx_pybuffer_forward;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mjv_alignToCamera", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  __pyx_pybuffer_forward.pybuffer.buf = NULL;
  __pyx_pybuffer_forward.refcount = 0;
  __pyx_pybuffernd_forward.data = NULL;
  __pyx_pybuffernd_forward.rcbuffer = &__pyx_pybuffer_forward;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4159, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4159, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_forward.rcbuffer->pybuffer, (PyObject*)__pyx_v_forward, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4159, __pyx_L1_error)
  }
  __pyx_pybuffernd_forward.diminfo[0].strides = __pyx_pybuffernd_forward.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_forward.diminfo[0].shape = __pyx_pybuffernd_forward.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4160
 * 
 * def _mjv_alignToCamera(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] forward):
 *     mjv_alignToCamera(&res[0], &vec[0], &forward[0])             # <<<<<<<<<<<<<<
 * 
 * def _mjv_moveCamera(PyMjModel m, int action, float reldx, float reldy, PyMjvScene scn, PyMjvCamera cam):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4160, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4160, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_forward.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_forward.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4160, __pyx_L1_error)
  }
  mjv_alignToCamera((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_forward.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_forward.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4159
 *     return mjv_frustumHeight(scn.ptr)
 * 
 * def _mjv_alignToCamera(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] forward):             # <<<<<<<<<<<<<<
 *     mjv_alignToCamera(&res[0], &vec[0], &forward[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_forward.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_alignToCamera", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_forward.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4162
 *     mjv_alignToCamera(&res[0], &vec[0], &forward[0])
 * 
 * def _mjv_moveCamera(PyMjModel m, int action, float reldx, float reldy, PyMjvScene scn, PyMjvCamera cam):             # <<<<<<<<<<<<<<
 *     mjv_moveCamera(m.ptr, action, reldx, reldy, scn.ptr, cam.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_223_mjv_moveCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_223_mjv_moveCamera = {"_mjv_moveCamera", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_223_mjv_moveCamera, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_223_mjv_moveCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  int __pyx_v_action;
  float __pyx_v_reldx;
  float __pyx_v_reldy;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_moveCamera (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_action,&__pyx_n_s_reldx,&__pyx_n_s_reldy,&__pyx_n_s_scn,&__pyx_n_s_cam,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_action)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveCamera", 1, 6, 6, 1); __PYX_ERR(3, 4162, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_reldx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveCamera", 1, 6, 6, 2); __PYX_ERR(3, 4162, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_reldy)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveCamera", 1, 6, 6, 3); __PYX_ERR(3, 4162, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveCamera", 1, 6, 6, 4); __PYX_ERR(3, 4162, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cam)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveCamera", 1, 6, 6, 5); __PYX_ERR(3, 4162, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_moveCamera") < 0)) __PYX_ERR(3, 4162, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_action = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_action == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4162, __pyx_L3_error)
    __pyx_v_reldx = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_reldx == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4162, __pyx_L3_error)
    __pyx_v_reldy = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_reldy == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4162, __pyx_L3_error)
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[4]);
    __pyx_v_cam = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)values[5]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_moveCamera", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4162, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_moveCamera", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4162, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4162, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cam), __pyx_ptype_9mujoco_py_4cymj_PyMjvCamera, 1, "cam", 0))) __PYX_ERR(3, 4162, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_222_mjv_moveCamera(__pyx_self, __pyx_v_m, __pyx_v_action, __pyx_v_reldx, __pyx_v_reldy, __pyx_v_scn, __pyx_v_cam);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_222_mjv_moveCamera(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, int __pyx_v_action, float __pyx_v_reldx, float __pyx_v_reldy, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_moveCamera", 0);

  /* "mujoco_py/generated/wrappers.pxi":4163
 * 
 * def _mjv_moveCamera(PyMjModel m, int action, float reldx, float reldy, PyMjvScene scn, PyMjvCamera cam):
 *     mjv_moveCamera(m.ptr, action, reldx, reldy, scn.ptr, cam.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_movePerturb(PyMjModel m, PyMjData d, int action, float reldx, float reldy, PyMjvScene scn, PyMjvPerturb pert):
 */
  mjv_moveCamera(__pyx_v_m->ptr, __pyx_v_action, __pyx_v_reldx, __pyx_v_reldy, __pyx_v_scn->ptr, __pyx_v_cam->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4162
 *     mjv_alignToCamera(&res[0], &vec[0], &forward[0])
 * 
 * def _mjv_moveCamera(PyMjModel m, int action, float reldx, float reldy, PyMjvScene scn, PyMjvCamera cam):             # <<<<<<<<<<<<<<
 *     mjv_moveCamera(m.ptr, action, reldx, reldy, scn.ptr, cam.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4165
 *     mjv_moveCamera(m.ptr, action, reldx, reldy, scn.ptr, cam.ptr)
 * 
 * def _mjv_movePerturb(PyMjModel m, PyMjData d, int action, float reldx, float reldy, PyMjvScene scn, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_movePerturb(m.ptr, d.ptr, action, reldx, reldy, scn.ptr, pert.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_225_mjv_movePerturb(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_225_mjv_movePerturb = {"_mjv_movePerturb", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_225_mjv_movePerturb, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_225_mjv_movePerturb(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_action;
  float __pyx_v_reldx;
  float __pyx_v_reldy;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_movePerturb (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_action,&__pyx_n_s_reldx,&__pyx_n_s_reldy,&__pyx_n_s_scn,&__pyx_n_s_pert,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_movePerturb", 1, 7, 7, 1); __PYX_ERR(3, 4165, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_action)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_movePerturb", 1, 7, 7, 2); __PYX_ERR(3, 4165, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_reldx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_movePerturb", 1, 7, 7, 3); __PYX_ERR(3, 4165, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_reldy)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_movePerturb", 1, 7, 7, 4); __PYX_ERR(3, 4165, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_movePerturb", 1, 7, 7, 5); __PYX_ERR(3, 4165, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pert)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_movePerturb", 1, 7, 7, 6); __PYX_ERR(3, 4165, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_movePerturb") < 0)) __PYX_ERR(3, 4165, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_action = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_action == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4165, __pyx_L3_error)
    __pyx_v_reldx = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_reldx == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4165, __pyx_L3_error)
    __pyx_v_reldy = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_reldy == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4165, __pyx_L3_error)
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[5]);
    __pyx_v_pert = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)values[6]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_movePerturb", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4165, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_movePerturb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4165, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4165, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4165, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pert), __pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb, 1, "pert", 0))) __PYX_ERR(3, 4165, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_224_mjv_movePerturb(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_action, __pyx_v_reldx, __pyx_v_reldy, __pyx_v_scn, __pyx_v_pert);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_224_mjv_movePerturb(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_action, float __pyx_v_reldx, float __pyx_v_reldy, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_movePerturb", 0);

  /* "mujoco_py/generated/wrappers.pxi":4166
 * 
 * def _mjv_movePerturb(PyMjModel m, PyMjData d, int action, float reldx, float reldy, PyMjvScene scn, PyMjvPerturb pert):
 *     mjv_movePerturb(m.ptr, d.ptr, action, reldx, reldy, scn.ptr, pert.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_moveModel(PyMjModel m, int action, float reldx, float reldy, np.ndarray[np.float64_t, mode="c", ndim=1] roomup, PyMjvScene scn):
 */
  mjv_movePerturb(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_action, __pyx_v_reldx, __pyx_v_reldy, __pyx_v_scn->ptr, __pyx_v_pert->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4165
 *     mjv_moveCamera(m.ptr, action, reldx, reldy, scn.ptr, cam.ptr)
 * 
 * def _mjv_movePerturb(PyMjModel m, PyMjData d, int action, float reldx, float reldy, PyMjvScene scn, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_movePerturb(m.ptr, d.ptr, action, reldx, reldy, scn.ptr, pert.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4168
 *     mjv_movePerturb(m.ptr, d.ptr, action, reldx, reldy, scn.ptr, pert.ptr)
 * 
 * def _mjv_moveModel(PyMjModel m, int action, float reldx, float reldy, np.ndarray[np.float64_t, mode="c", ndim=1] roomup, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_moveModel(m.ptr, action, reldx, reldy, &roomup[0], scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_227_mjv_moveModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_227_mjv_moveModel = {"_mjv_moveModel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_227_mjv_moveModel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_227_mjv_moveModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  int __pyx_v_action;
  float __pyx_v_reldx;
  float __pyx_v_reldy;
  PyArrayObject *__pyx_v_roomup = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_moveModel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_action,&__pyx_n_s_reldx,&__pyx_n_s_reldy,&__pyx_n_s_roomup,&__pyx_n_s_scn,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_action)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveModel", 1, 6, 6, 1); __PYX_ERR(3, 4168, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_reldx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveModel", 1, 6, 6, 2); __PYX_ERR(3, 4168, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_reldy)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveModel", 1, 6, 6, 3); __PYX_ERR(3, 4168, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_roomup)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveModel", 1, 6, 6, 4); __PYX_ERR(3, 4168, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_moveModel", 1, 6, 6, 5); __PYX_ERR(3, 4168, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_moveModel") < 0)) __PYX_ERR(3, 4168, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_action = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_action == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4168, __pyx_L3_error)
    __pyx_v_reldx = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_reldx == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4168, __pyx_L3_error)
    __pyx_v_reldy = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_reldy == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4168, __pyx_L3_error)
    __pyx_v_roomup = ((PyArrayObject *)values[4]);
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[5]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_moveModel", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4168, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_moveModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4168, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_roomup), __pyx_ptype_5numpy_ndarray, 1, "roomup", 0))) __PYX_ERR(3, 4168, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4168, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_226_mjv_moveModel(__pyx_self, __pyx_v_m, __pyx_v_action, __pyx_v_reldx, __pyx_v_reldy, __pyx_v_roomup, __pyx_v_scn);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_226_mjv_moveModel(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, int __pyx_v_action, float __pyx_v_reldx, float __pyx_v_reldy, PyArrayObject *__pyx_v_roomup, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_roomup;
  __Pyx_Buffer __pyx_pybuffer_roomup;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mjv_moveModel", 0);
  __pyx_pybuffer_roomup.pybuffer.buf = NULL;
  __pyx_pybuffer_roomup.refcount = 0;
  __pyx_pybuffernd_roomup.data = NULL;
  __pyx_pybuffernd_roomup.rcbuffer = &__pyx_pybuffer_roomup;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_roomup.rcbuffer->pybuffer, (PyObject*)__pyx_v_roomup, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4168, __pyx_L1_error)
  }
  __pyx_pybuffernd_roomup.diminfo[0].strides = __pyx_pybuffernd_roomup.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_roomup.diminfo[0].shape = __pyx_pybuffernd_roomup.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4169
 * 
 * def _mjv_moveModel(PyMjModel m, int action, float reldx, float reldy, np.ndarray[np.float64_t, mode="c", ndim=1] roomup, PyMjvScene scn):
 *     mjv_moveModel(m.ptr, action, reldx, reldy, &roomup[0], scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_initPerturb(PyMjModel m, PyMjData d, PyMjvScene scn, PyMjvPerturb pert):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_roomup.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_roomup.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4169, __pyx_L1_error)
  }
  mjv_moveModel(__pyx_v_m->ptr, __pyx_v_action, __pyx_v_reldx, __pyx_v_reldy, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_roomup.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_roomup.diminfo[0].strides))), __pyx_v_scn->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4168
 *     mjv_movePerturb(m.ptr, d.ptr, action, reldx, reldy, scn.ptr, pert.ptr)
 * 
 * def _mjv_moveModel(PyMjModel m, int action, float reldx, float reldy, np.ndarray[np.float64_t, mode="c", ndim=1] roomup, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_moveModel(m.ptr, action, reldx, reldy, &roomup[0], scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roomup.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_moveModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_roomup.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4171
 *     mjv_moveModel(m.ptr, action, reldx, reldy, &roomup[0], scn.ptr)
 * 
 * def _mjv_initPerturb(PyMjModel m, PyMjData d, PyMjvScene scn, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_initPerturb(m.ptr, d.ptr, scn.ptr, pert.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_229_mjv_initPerturb(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_229_mjv_initPerturb = {"_mjv_initPerturb", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_229_mjv_initPerturb, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_229_mjv_initPerturb(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_initPerturb (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_scn,&__pyx_n_s_pert,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_initPerturb", 1, 4, 4, 1); __PYX_ERR(3, 4171, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_initPerturb", 1, 4, 4, 2); __PYX_ERR(3, 4171, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pert)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_initPerturb", 1, 4, 4, 3); __PYX_ERR(3, 4171, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_initPerturb") < 0)) __PYX_ERR(3, 4171, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[2]);
    __pyx_v_pert = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_initPerturb", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4171, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_initPerturb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4171, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4171, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4171, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pert), __pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb, 1, "pert", 0))) __PYX_ERR(3, 4171, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_228_mjv_initPerturb(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_scn, __pyx_v_pert);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_228_mjv_initPerturb(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_initPerturb", 0);

  /* "mujoco_py/generated/wrappers.pxi":4172
 * 
 * def _mjv_initPerturb(PyMjModel m, PyMjData d, PyMjvScene scn, PyMjvPerturb pert):
 *     mjv_initPerturb(m.ptr, d.ptr, scn.ptr, pert.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_applyPerturbPose(PyMjModel m, PyMjData d, PyMjvPerturb pert, int flg_paused):
 */
  mjv_initPerturb(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_scn->ptr, __pyx_v_pert->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4171
 *     mjv_moveModel(m.ptr, action, reldx, reldy, &roomup[0], scn.ptr)
 * 
 * def _mjv_initPerturb(PyMjModel m, PyMjData d, PyMjvScene scn, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_initPerturb(m.ptr, d.ptr, scn.ptr, pert.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4174
 *     mjv_initPerturb(m.ptr, d.ptr, scn.ptr, pert.ptr)
 * 
 * def _mjv_applyPerturbPose(PyMjModel m, PyMjData d, PyMjvPerturb pert, int flg_paused):             # <<<<<<<<<<<<<<
 *     mjv_applyPerturbPose(m.ptr, d.ptr, pert.ptr, flg_paused)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_231_mjv_applyPerturbPose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_231_mjv_applyPerturbPose = {"_mjv_applyPerturbPose", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_231_mjv_applyPerturbPose, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_231_mjv_applyPerturbPose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert = 0;
  int __pyx_v_flg_paused;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_applyPerturbPose (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_pert,&__pyx_n_s_flg_paused,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_applyPerturbPose", 1, 4, 4, 1); __PYX_ERR(3, 4174, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pert)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_applyPerturbPose", 1, 4, 4, 2); __PYX_ERR(3, 4174, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_paused)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_applyPerturbPose", 1, 4, 4, 3); __PYX_ERR(3, 4174, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_applyPerturbPose") < 0)) __PYX_ERR(3, 4174, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_pert = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)values[2]);
    __pyx_v_flg_paused = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_flg_paused == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4174, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_applyPerturbPose", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4174, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_applyPerturbPose", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4174, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4174, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pert), __pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb, 1, "pert", 0))) __PYX_ERR(3, 4174, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_230_mjv_applyPerturbPose(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_pert, __pyx_v_flg_paused);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_230_mjv_applyPerturbPose(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert, int __pyx_v_flg_paused) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_applyPerturbPose", 0);

  /* "mujoco_py/generated/wrappers.pxi":4175
 * 
 * def _mjv_applyPerturbPose(PyMjModel m, PyMjData d, PyMjvPerturb pert, int flg_paused):
 *     mjv_applyPerturbPose(m.ptr, d.ptr, pert.ptr, flg_paused)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_applyPerturbForce(PyMjModel m, PyMjData d, PyMjvPerturb pert):
 */
  mjv_applyPerturbPose(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_pert->ptr, __pyx_v_flg_paused);

  /* "mujoco_py/generated/wrappers.pxi":4174
 *     mjv_initPerturb(m.ptr, d.ptr, scn.ptr, pert.ptr)
 * 
 * def _mjv_applyPerturbPose(PyMjModel m, PyMjData d, PyMjvPerturb pert, int flg_paused):             # <<<<<<<<<<<<<<
 *     mjv_applyPerturbPose(m.ptr, d.ptr, pert.ptr, flg_paused)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4177
 *     mjv_applyPerturbPose(m.ptr, d.ptr, pert.ptr, flg_paused)
 * 
 * def _mjv_applyPerturbForce(PyMjModel m, PyMjData d, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_applyPerturbForce(m.ptr, d.ptr, pert.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_233_mjv_applyPerturbForce(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_233_mjv_applyPerturbForce = {"_mjv_applyPerturbForce", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_233_mjv_applyPerturbForce, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_233_mjv_applyPerturbForce(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_applyPerturbForce (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_pert,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_applyPerturbForce", 1, 3, 3, 1); __PYX_ERR(3, 4177, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pert)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_applyPerturbForce", 1, 3, 3, 2); __PYX_ERR(3, 4177, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_applyPerturbForce") < 0)) __PYX_ERR(3, 4177, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_pert = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_applyPerturbForce", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4177, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_applyPerturbForce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4177, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4177, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pert), __pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb, 1, "pert", 0))) __PYX_ERR(3, 4177, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_232_mjv_applyPerturbForce(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_pert);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_232_mjv_applyPerturbForce(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_applyPerturbForce", 0);

  /* "mujoco_py/generated/wrappers.pxi":4178
 * 
 * def _mjv_applyPerturbForce(PyMjModel m, PyMjData d, PyMjvPerturb pert):
 *     mjv_applyPerturbForce(m.ptr, d.ptr, pert.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_select(PyMjModel m, PyMjData d, PyMjvOption vopt, float aspectratio, float relx, float rely, PyMjvScene scn, np.ndarray[np.float64_t, mode="c", ndim=1] selpnt):
 */
  mjv_applyPerturbForce(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_pert->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4177
 *     mjv_applyPerturbPose(m.ptr, d.ptr, pert.ptr, flg_paused)
 * 
 * def _mjv_applyPerturbForce(PyMjModel m, PyMjData d, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_applyPerturbForce(m.ptr, d.ptr, pert.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4180
 *     mjv_applyPerturbForce(m.ptr, d.ptr, pert.ptr)
 * 
 * def _mjv_select(PyMjModel m, PyMjData d, PyMjvOption vopt, float aspectratio, float relx, float rely, PyMjvScene scn, np.ndarray[np.float64_t, mode="c", ndim=1] selpnt):             # <<<<<<<<<<<<<<
 *     return mjv_select(m.ptr, d.ptr, vopt.ptr, aspectratio, relx, rely, scn.ptr, &selpnt[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_235_mjv_select(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_235_mjv_select = {"_mjv_select", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_235_mjv_select, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_235_mjv_select(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_vopt = 0;
  float __pyx_v_aspectratio;
  float __pyx_v_relx;
  float __pyx_v_rely;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  PyArrayObject *__pyx_v_selpnt = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_select (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_vopt,&__pyx_n_s_aspectratio,&__pyx_n_s_relx,&__pyx_n_s_rely,&__pyx_n_s_scn,&__pyx_n_s_selpnt,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_select", 1, 8, 8, 1); __PYX_ERR(3, 4180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vopt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_select", 1, 8, 8, 2); __PYX_ERR(3, 4180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_aspectratio)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_select", 1, 8, 8, 3); __PYX_ERR(3, 4180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_relx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_select", 1, 8, 8, 4); __PYX_ERR(3, 4180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rely)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_select", 1, 8, 8, 5); __PYX_ERR(3, 4180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_select", 1, 8, 8, 6); __PYX_ERR(3, 4180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_selpnt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_select", 1, 8, 8, 7); __PYX_ERR(3, 4180, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_select") < 0)) __PYX_ERR(3, 4180, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_vopt = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)values[2]);
    __pyx_v_aspectratio = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_aspectratio == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4180, __pyx_L3_error)
    __pyx_v_relx = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_relx == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4180, __pyx_L3_error)
    __pyx_v_rely = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_rely == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4180, __pyx_L3_error)
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[6]);
    __pyx_v_selpnt = ((PyArrayObject *)values[7]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_select", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4180, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_select", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4180, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4180, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vopt), __pyx_ptype_9mujoco_py_4cymj_PyMjvOption, 1, "vopt", 0))) __PYX_ERR(3, 4180, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4180, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selpnt), __pyx_ptype_5numpy_ndarray, 1, "selpnt", 0))) __PYX_ERR(3, 4180, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_234_mjv_select(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_vopt, __pyx_v_aspectratio, __pyx_v_relx, __pyx_v_rely, __pyx_v_scn, __pyx_v_selpnt);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_234_mjv_select(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_vopt, float __pyx_v_aspectratio, float __pyx_v_relx, float __pyx_v_rely, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, PyArrayObject *__pyx_v_selpnt) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_selpnt;
  __Pyx_Buffer __pyx_pybuffer_selpnt;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mjv_select", 0);
  __pyx_pybuffer_selpnt.pybuffer.buf = NULL;
  __pyx_pybuffer_selpnt.refcount = 0;
  __pyx_pybuffernd_selpnt.data = NULL;
  __pyx_pybuffernd_selpnt.rcbuffer = &__pyx_pybuffer_selpnt;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_selpnt.rcbuffer->pybuffer, (PyObject*)__pyx_v_selpnt, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4180, __pyx_L1_error)
  }
  __pyx_pybuffernd_selpnt.diminfo[0].strides = __pyx_pybuffernd_selpnt.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_selpnt.diminfo[0].shape = __pyx_pybuffernd_selpnt.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4181
 * 
 * def _mjv_select(PyMjModel m, PyMjData d, PyMjvOption vopt, float aspectratio, float relx, float rely, PyMjvScene scn, np.ndarray[np.float64_t, mode="c", ndim=1] selpnt):
 *     return mjv_select(m.ptr, d.ptr, vopt.ptr, aspectratio, relx, rely, scn.ptr, &selpnt[0])             # <<<<<<<<<<<<<<
 * 
 * def _mjv_defaultOption(PyMjvOption opt):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_selpnt.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_selpnt.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4181, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(mjv_select(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_vopt->ptr, __pyx_v_aspectratio, __pyx_v_relx, __pyx_v_rely, __pyx_v_scn->ptr, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_selpnt.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_selpnt.diminfo[0].strides))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4180
 *     mjv_applyPerturbForce(m.ptr, d.ptr, pert.ptr)
 * 
 * def _mjv_select(PyMjModel m, PyMjData d, PyMjvOption vopt, float aspectratio, float relx, float rely, PyMjvScene scn, np.ndarray[np.float64_t, mode="c", ndim=1] selpnt):             # <<<<<<<<<<<<<<
 *     return mjv_select(m.ptr, d.ptr, vopt.ptr, aspectratio, relx, rely, scn.ptr, &selpnt[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_selpnt.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_select", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_selpnt.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4183
 *     return mjv_select(m.ptr, d.ptr, vopt.ptr, aspectratio, relx, rely, scn.ptr, &selpnt[0])
 * 
 * def _mjv_defaultOption(PyMjvOption opt):             # <<<<<<<<<<<<<<
 *     mjv_defaultOption(opt.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_237_mjv_defaultOption(PyObject *__pyx_self, PyObject *__pyx_v_opt); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_237_mjv_defaultOption = {"_mjv_defaultOption", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_237_mjv_defaultOption, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_237_mjv_defaultOption(PyObject *__pyx_self, PyObject *__pyx_v_opt) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_defaultOption (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_opt), __pyx_ptype_9mujoco_py_4cymj_PyMjvOption, 1, "opt", 0))) __PYX_ERR(3, 4183, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_236_mjv_defaultOption(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_v_opt));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_236_mjv_defaultOption(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_opt) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_defaultOption", 0);

  /* "mujoco_py/generated/wrappers.pxi":4184
 * 
 * def _mjv_defaultOption(PyMjvOption opt):
 *     mjv_defaultOption(opt.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_defaultFigure(PyMjvFigure fig):
 */
  mjv_defaultOption(__pyx_v_opt->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4183
 *     return mjv_select(m.ptr, d.ptr, vopt.ptr, aspectratio, relx, rely, scn.ptr, &selpnt[0])
 * 
 * def _mjv_defaultOption(PyMjvOption opt):             # <<<<<<<<<<<<<<
 *     mjv_defaultOption(opt.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4186
 *     mjv_defaultOption(opt.ptr)
 * 
 * def _mjv_defaultFigure(PyMjvFigure fig):             # <<<<<<<<<<<<<<
 *     mjv_defaultFigure(fig.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_239_mjv_defaultFigure(PyObject *__pyx_self, PyObject *__pyx_v_fig); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_239_mjv_defaultFigure = {"_mjv_defaultFigure", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_239_mjv_defaultFigure, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_239_mjv_defaultFigure(PyObject *__pyx_self, PyObject *__pyx_v_fig) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_defaultFigure (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fig), __pyx_ptype_9mujoco_py_4cymj_PyMjvFigure, 1, "fig", 0))) __PYX_ERR(3, 4186, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_238_mjv_defaultFigure(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)__pyx_v_fig));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_238_mjv_defaultFigure(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_fig) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_defaultFigure", 0);

  /* "mujoco_py/generated/wrappers.pxi":4187
 * 
 * def _mjv_defaultFigure(PyMjvFigure fig):
 *     mjv_defaultFigure(fig.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_makeConnector(PyMjvGeom geom, int type, float width, float a0, float a1, float a2, float b0, float b1, float b2):
 */
  mjv_defaultFigure(__pyx_v_fig->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4186
 *     mjv_defaultOption(opt.ptr)
 * 
 * def _mjv_defaultFigure(PyMjvFigure fig):             # <<<<<<<<<<<<<<
 *     mjv_defaultFigure(fig.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4189
 *     mjv_defaultFigure(fig.ptr)
 * 
 * def _mjv_makeConnector(PyMjvGeom geom, int type, float width, float a0, float a1, float a2, float b0, float b1, float b2):             # <<<<<<<<<<<<<<
 *     mjv_makeConnector(geom.ptr, type, width, a0, a1, a2, b0, b1, b2)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_241_mjv_makeConnector(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_241_mjv_makeConnector = {"_mjv_makeConnector", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_241_mjv_makeConnector, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_241_mjv_makeConnector(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_geom = 0;
  int __pyx_v_type;
  float __pyx_v_width;
  float __pyx_v_a0;
  float __pyx_v_a1;
  float __pyx_v_a2;
  float __pyx_v_b0;
  float __pyx_v_b1;
  float __pyx_v_b2;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_makeConnector (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_geom,&__pyx_n_s_type,&__pyx_n_s_width,&__pyx_n_s_a0,&__pyx_n_s_a1,&__pyx_n_s_a2,&__pyx_n_s_b0,&__pyx_n_s_b1,&__pyx_n_s_b2,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_geom)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_type)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_makeConnector", 1, 9, 9, 1); __PYX_ERR(3, 4189, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_makeConnector", 1, 9, 9, 2); __PYX_ERR(3, 4189, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_makeConnector", 1, 9, 9, 3); __PYX_ERR(3, 4189, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_makeConnector", 1, 9, 9, 4); __PYX_ERR(3, 4189, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_makeConnector", 1, 9, 9, 5); __PYX_ERR(3, 4189, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_b0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_makeConnector", 1, 9, 9, 6); __PYX_ERR(3, 4189, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_b1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_makeConnector", 1, 9, 9, 7); __PYX_ERR(3, 4189, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_b2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_makeConnector", 1, 9, 9, 8); __PYX_ERR(3, 4189, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_makeConnector") < 0)) __PYX_ERR(3, 4189, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_geom = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)values[0]);
    __pyx_v_type = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4189, __pyx_L3_error)
    __pyx_v_width = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_width == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4189, __pyx_L3_error)
    __pyx_v_a0 = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_a0 == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4189, __pyx_L3_error)
    __pyx_v_a1 = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_a1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4189, __pyx_L3_error)
    __pyx_v_a2 = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_a2 == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4189, __pyx_L3_error)
    __pyx_v_b0 = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_b0 == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4189, __pyx_L3_error)
    __pyx_v_b1 = __pyx_PyFloat_AsFloat(values[7]); if (unlikely((__pyx_v_b1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4189, __pyx_L3_error)
    __pyx_v_b2 = __pyx_PyFloat_AsFloat(values[8]); if (unlikely((__pyx_v_b2 == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4189, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_makeConnector", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4189, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_makeConnector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_geom), __pyx_ptype_9mujoco_py_4cymj_PyMjvGeom, 1, "geom", 0))) __PYX_ERR(3, 4189, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_240_mjv_makeConnector(__pyx_self, __pyx_v_geom, __pyx_v_type, __pyx_v_width, __pyx_v_a0, __pyx_v_a1, __pyx_v_a2, __pyx_v_b0, __pyx_v_b1, __pyx_v_b2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_240_mjv_makeConnector(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_geom, int __pyx_v_type, float __pyx_v_width, float __pyx_v_a0, float __pyx_v_a1, float __pyx_v_a2, float __pyx_v_b0, float __pyx_v_b1, float __pyx_v_b2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_makeConnector", 0);

  /* "mujoco_py/generated/wrappers.pxi":4190
 * 
 * def _mjv_makeConnector(PyMjvGeom geom, int type, float width, float a0, float a1, float a2, float b0, float b1, float b2):
 *     mjv_makeConnector(geom.ptr, type, width, a0, a1, a2, b0, b1, b2)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_makeScene(PyMjvScene scn, int maxgeom):
 */
  mjv_makeConnector(__pyx_v_geom->ptr, __pyx_v_type, __pyx_v_width, __pyx_v_a0, __pyx_v_a1, __pyx_v_a2, __pyx_v_b0, __pyx_v_b1, __pyx_v_b2);

  /* "mujoco_py/generated/wrappers.pxi":4189
 *     mjv_defaultFigure(fig.ptr)
 * 
 * def _mjv_makeConnector(PyMjvGeom geom, int type, float width, float a0, float a1, float a2, float b0, float b1, float b2):             # <<<<<<<<<<<<<<
 *     mjv_makeConnector(geom.ptr, type, width, a0, a1, a2, b0, b1, b2)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4192
 *     mjv_makeConnector(geom.ptr, type, width, a0, a1, a2, b0, b1, b2)
 * 
 * def _mjv_makeScene(PyMjvScene scn, int maxgeom):             # <<<<<<<<<<<<<<
 *     mjv_makeScene(scn.ptr, maxgeom)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_243_mjv_makeScene(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_243_mjv_makeScene = {"_mjv_makeScene", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_243_mjv_makeScene, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_243_mjv_makeScene(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  int __pyx_v_maxgeom;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_makeScene (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_scn,&__pyx_n_s_maxgeom,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxgeom)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_makeScene", 1, 2, 2, 1); __PYX_ERR(3, 4192, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_makeScene") < 0)) __PYX_ERR(3, 4192, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[0]);
    __pyx_v_maxgeom = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_maxgeom == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4192, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_makeScene", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4192, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_makeScene", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4192, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_242_mjv_makeScene(__pyx_self, __pyx_v_scn, __pyx_v_maxgeom);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_242_mjv_makeScene(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, int __pyx_v_maxgeom) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_makeScene", 0);

  /* "mujoco_py/generated/wrappers.pxi":4193
 * 
 * def _mjv_makeScene(PyMjvScene scn, int maxgeom):
 *     mjv_makeScene(scn.ptr, maxgeom)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_freeScene(PyMjvScene scn):
 */
  mjv_makeScene(__pyx_v_scn->ptr, __pyx_v_maxgeom);

  /* "mujoco_py/generated/wrappers.pxi":4192
 *     mjv_makeConnector(geom.ptr, type, width, a0, a1, a2, b0, b1, b2)
 * 
 * def _mjv_makeScene(PyMjvScene scn, int maxgeom):             # <<<<<<<<<<<<<<
 *     mjv_makeScene(scn.ptr, maxgeom)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4195
 *     mjv_makeScene(scn.ptr, maxgeom)
 * 
 * def _mjv_freeScene(PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_freeScene(scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_245_mjv_freeScene(PyObject *__pyx_self, PyObject *__pyx_v_scn); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_245_mjv_freeScene = {"_mjv_freeScene", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_245_mjv_freeScene, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_245_mjv_freeScene(PyObject *__pyx_self, PyObject *__pyx_v_scn) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_freeScene (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4195, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_244_mjv_freeScene(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_v_scn));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_244_mjv_freeScene(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_freeScene", 0);

  /* "mujoco_py/generated/wrappers.pxi":4196
 * 
 * def _mjv_freeScene(PyMjvScene scn):
 *     mjv_freeScene(scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_updateScene(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, PyMjvCamera cam, int catmask, PyMjvScene scn):
 */
  mjv_freeScene(__pyx_v_scn->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4195
 *     mjv_makeScene(scn.ptr, maxgeom)
 * 
 * def _mjv_freeScene(PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_freeScene(scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4198
 *     mjv_freeScene(scn.ptr)
 * 
 * def _mjv_updateScene(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, PyMjvCamera cam, int catmask, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_updateScene(m.ptr, d.ptr, opt.ptr, pert.ptr, cam.ptr, catmask, scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_247_mjv_updateScene(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_247_mjv_updateScene = {"_mjv_updateScene", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_247_mjv_updateScene, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_247_mjv_updateScene(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_opt = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam = 0;
  int __pyx_v_catmask;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_updateScene (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_opt,&__pyx_n_s_pert,&__pyx_n_s_cam,&__pyx_n_s_catmask,&__pyx_n_s_scn,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_updateScene", 1, 7, 7, 1); __PYX_ERR(3, 4198, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_opt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_updateScene", 1, 7, 7, 2); __PYX_ERR(3, 4198, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pert)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_updateScene", 1, 7, 7, 3); __PYX_ERR(3, 4198, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cam)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_updateScene", 1, 7, 7, 4); __PYX_ERR(3, 4198, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_catmask)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_updateScene", 1, 7, 7, 5); __PYX_ERR(3, 4198, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_updateScene", 1, 7, 7, 6); __PYX_ERR(3, 4198, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_updateScene") < 0)) __PYX_ERR(3, 4198, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_opt = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)values[2]);
    __pyx_v_pert = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)values[3]);
    __pyx_v_cam = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)values[4]);
    __pyx_v_catmask = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_catmask == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4198, __pyx_L3_error)
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[6]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_updateScene", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4198, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_updateScene", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4198, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4198, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_opt), __pyx_ptype_9mujoco_py_4cymj_PyMjvOption, 1, "opt", 0))) __PYX_ERR(3, 4198, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pert), __pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb, 1, "pert", 0))) __PYX_ERR(3, 4198, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cam), __pyx_ptype_9mujoco_py_4cymj_PyMjvCamera, 1, "cam", 0))) __PYX_ERR(3, 4198, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4198, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_246_mjv_updateScene(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_opt, __pyx_v_pert, __pyx_v_cam, __pyx_v_catmask, __pyx_v_scn);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_246_mjv_updateScene(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_opt, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert, struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam, int __pyx_v_catmask, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_updateScene", 0);

  /* "mujoco_py/generated/wrappers.pxi":4199
 * 
 * def _mjv_updateScene(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, PyMjvCamera cam, int catmask, PyMjvScene scn):
 *     mjv_updateScene(m.ptr, d.ptr, opt.ptr, pert.ptr, cam.ptr, catmask, scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_addGeoms(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, int catmask, PyMjvScene scn):
 */
  mjv_updateScene(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_opt->ptr, __pyx_v_pert->ptr, __pyx_v_cam->ptr, __pyx_v_catmask, __pyx_v_scn->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4198
 *     mjv_freeScene(scn.ptr)
 * 
 * def _mjv_updateScene(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, PyMjvCamera cam, int catmask, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_updateScene(m.ptr, d.ptr, opt.ptr, pert.ptr, cam.ptr, catmask, scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4201
 *     mjv_updateScene(m.ptr, d.ptr, opt.ptr, pert.ptr, cam.ptr, catmask, scn.ptr)
 * 
 * def _mjv_addGeoms(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, int catmask, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_addGeoms(m.ptr, d.ptr, opt.ptr, pert.ptr, catmask, scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_249_mjv_addGeoms(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_249_mjv_addGeoms = {"_mjv_addGeoms", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_249_mjv_addGeoms, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_249_mjv_addGeoms(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_opt = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert = 0;
  int __pyx_v_catmask;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_addGeoms (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_opt,&__pyx_n_s_pert,&__pyx_n_s_catmask,&__pyx_n_s_scn,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_addGeoms", 1, 6, 6, 1); __PYX_ERR(3, 4201, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_opt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_addGeoms", 1, 6, 6, 2); __PYX_ERR(3, 4201, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pert)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_addGeoms", 1, 6, 6, 3); __PYX_ERR(3, 4201, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_catmask)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_addGeoms", 1, 6, 6, 4); __PYX_ERR(3, 4201, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_addGeoms", 1, 6, 6, 5); __PYX_ERR(3, 4201, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_addGeoms") < 0)) __PYX_ERR(3, 4201, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_opt = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)values[2]);
    __pyx_v_pert = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)values[3]);
    __pyx_v_catmask = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_catmask == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4201, __pyx_L3_error)
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[5]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_addGeoms", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4201, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_addGeoms", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4201, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4201, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_opt), __pyx_ptype_9mujoco_py_4cymj_PyMjvOption, 1, "opt", 0))) __PYX_ERR(3, 4201, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pert), __pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb, 1, "pert", 0))) __PYX_ERR(3, 4201, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4201, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_248_mjv_addGeoms(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_opt, __pyx_v_pert, __pyx_v_catmask, __pyx_v_scn);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_248_mjv_addGeoms(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *__pyx_v_opt, struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *__pyx_v_pert, int __pyx_v_catmask, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_addGeoms", 0);

  /* "mujoco_py/generated/wrappers.pxi":4202
 * 
 * def _mjv_addGeoms(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, int catmask, PyMjvScene scn):
 *     mjv_addGeoms(m.ptr, d.ptr, opt.ptr, pert.ptr, catmask, scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjv_updateCamera(PyMjModel m, PyMjData d, PyMjvCamera cam, PyMjvScene scn):
 */
  mjv_addGeoms(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_opt->ptr, __pyx_v_pert->ptr, __pyx_v_catmask, __pyx_v_scn->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4201
 *     mjv_updateScene(m.ptr, d.ptr, opt.ptr, pert.ptr, cam.ptr, catmask, scn.ptr)
 * 
 * def _mjv_addGeoms(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, int catmask, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_addGeoms(m.ptr, d.ptr, opt.ptr, pert.ptr, catmask, scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4204
 *     mjv_addGeoms(m.ptr, d.ptr, opt.ptr, pert.ptr, catmask, scn.ptr)
 * 
 * def _mjv_updateCamera(PyMjModel m, PyMjData d, PyMjvCamera cam, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_updateCamera(m.ptr, d.ptr, cam.ptr, scn.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_251_mjv_updateCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_251_mjv_updateCamera = {"_mjv_updateCamera", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_251_mjv_updateCamera, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_251_mjv_updateCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_updateCamera (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_d,&__pyx_n_s_cam,&__pyx_n_s_scn,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_updateCamera", 1, 4, 4, 1); __PYX_ERR(3, 4204, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cam)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_updateCamera", 1, 4, 4, 2); __PYX_ERR(3, 4204, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjv_updateCamera", 1, 4, 4, 3); __PYX_ERR(3, 4204, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjv_updateCamera") < 0)) __PYX_ERR(3, 4204, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    __pyx_v_cam = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)values[2]);
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjv_updateCamera", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4204, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjv_updateCamera", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4204, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4204, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cam), __pyx_ptype_9mujoco_py_4cymj_PyMjvCamera, 1, "cam", 0))) __PYX_ERR(3, 4204, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4204, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_250_mjv_updateCamera(__pyx_self, __pyx_v_m, __pyx_v_d, __pyx_v_cam, __pyx_v_scn);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_250_mjv_updateCamera(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *__pyx_v_cam, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjv_updateCamera", 0);

  /* "mujoco_py/generated/wrappers.pxi":4205
 * 
 * def _mjv_updateCamera(PyMjModel m, PyMjData d, PyMjvCamera cam, PyMjvScene scn):
 *     mjv_updateCamera(m.ptr, d.ptr, cam.ptr, scn.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_defaultContext(PyMjrContext con):
 */
  mjv_updateCamera(__pyx_v_m->ptr, __pyx_v_d->ptr, __pyx_v_cam->ptr, __pyx_v_scn->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4204
 *     mjv_addGeoms(m.ptr, d.ptr, opt.ptr, pert.ptr, catmask, scn.ptr)
 * 
 * def _mjv_updateCamera(PyMjModel m, PyMjData d, PyMjvCamera cam, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_updateCamera(m.ptr, d.ptr, cam.ptr, scn.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4207
 *     mjv_updateCamera(m.ptr, d.ptr, cam.ptr, scn.ptr)
 * 
 * def _mjr_defaultContext(PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_defaultContext(con.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_253_mjr_defaultContext(PyObject *__pyx_self, PyObject *__pyx_v_con); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_253_mjr_defaultContext = {"_mjr_defaultContext", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_253_mjr_defaultContext, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_253_mjr_defaultContext(PyObject *__pyx_self, PyObject *__pyx_v_con) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_defaultContext (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4207, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_252_mjr_defaultContext(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_con));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_252_mjr_defaultContext(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_defaultContext", 0);

  /* "mujoco_py/generated/wrappers.pxi":4208
 * 
 * def _mjr_defaultContext(PyMjrContext con):
 *     mjr_defaultContext(con.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_makeContext(PyMjModel m, PyMjrContext con, int fontscale):
 */
  mjr_defaultContext(__pyx_v_con->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4207
 *     mjv_updateCamera(m.ptr, d.ptr, cam.ptr, scn.ptr)
 * 
 * def _mjr_defaultContext(PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_defaultContext(con.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4210
 *     mjr_defaultContext(con.ptr)
 * 
 * def _mjr_makeContext(PyMjModel m, PyMjrContext con, int fontscale):             # <<<<<<<<<<<<<<
 *     mjr_makeContext(m.ptr, con.ptr, fontscale)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_255_mjr_makeContext(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_255_mjr_makeContext = {"_mjr_makeContext", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_255_mjr_makeContext, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_255_mjr_makeContext(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  int __pyx_v_fontscale;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_makeContext (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_con,&__pyx_n_s_fontscale,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_makeContext", 1, 3, 3, 1); __PYX_ERR(3, 4210, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fontscale)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_makeContext", 1, 3, 3, 2); __PYX_ERR(3, 4210, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjr_makeContext") < 0)) __PYX_ERR(3, 4210, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)values[1]);
    __pyx_v_fontscale = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_fontscale == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4210, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjr_makeContext", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4210, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_makeContext", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4210, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4210, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_254_mjr_makeContext(__pyx_self, __pyx_v_m, __pyx_v_con, __pyx_v_fontscale);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_254_mjr_makeContext(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con, int __pyx_v_fontscale) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_makeContext", 0);

  /* "mujoco_py/generated/wrappers.pxi":4211
 * 
 * def _mjr_makeContext(PyMjModel m, PyMjrContext con, int fontscale):
 *     mjr_makeContext(m.ptr, con.ptr, fontscale)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_freeContext(PyMjrContext con):
 */
  mjr_makeContext(__pyx_v_m->ptr, __pyx_v_con->ptr, __pyx_v_fontscale);

  /* "mujoco_py/generated/wrappers.pxi":4210
 *     mjr_defaultContext(con.ptr)
 * 
 * def _mjr_makeContext(PyMjModel m, PyMjrContext con, int fontscale):             # <<<<<<<<<<<<<<
 *     mjr_makeContext(m.ptr, con.ptr, fontscale)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4213
 *     mjr_makeContext(m.ptr, con.ptr, fontscale)
 * 
 * def _mjr_freeContext(PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_freeContext(con.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_257_mjr_freeContext(PyObject *__pyx_self, PyObject *__pyx_v_con); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_257_mjr_freeContext = {"_mjr_freeContext", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_257_mjr_freeContext, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_257_mjr_freeContext(PyObject *__pyx_self, PyObject *__pyx_v_con) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_freeContext (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4213, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_256_mjr_freeContext(__pyx_self, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_v_con));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_256_mjr_freeContext(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_freeContext", 0);

  /* "mujoco_py/generated/wrappers.pxi":4214
 * 
 * def _mjr_freeContext(PyMjrContext con):
 *     mjr_freeContext(con.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_uploadTexture(PyMjModel m, PyMjrContext con, int texid):
 */
  mjr_freeContext(__pyx_v_con->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4213
 *     mjr_makeContext(m.ptr, con.ptr, fontscale)
 * 
 * def _mjr_freeContext(PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_freeContext(con.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4216
 *     mjr_freeContext(con.ptr)
 * 
 * def _mjr_uploadTexture(PyMjModel m, PyMjrContext con, int texid):             # <<<<<<<<<<<<<<
 *     mjr_uploadTexture(m.ptr, con.ptr, texid)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_259_mjr_uploadTexture(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_259_mjr_uploadTexture = {"_mjr_uploadTexture", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_259_mjr_uploadTexture, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_259_mjr_uploadTexture(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  int __pyx_v_texid;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_uploadTexture (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_con,&__pyx_n_s_texid,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_uploadTexture", 1, 3, 3, 1); __PYX_ERR(3, 4216, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texid)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_uploadTexture", 1, 3, 3, 2); __PYX_ERR(3, 4216, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjr_uploadTexture") < 0)) __PYX_ERR(3, 4216, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)values[1]);
    __pyx_v_texid = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_texid == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4216, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjr_uploadTexture", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4216, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_uploadTexture", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4216, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4216, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_258_mjr_uploadTexture(__pyx_self, __pyx_v_m, __pyx_v_con, __pyx_v_texid);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_258_mjr_uploadTexture(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con, int __pyx_v_texid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_uploadTexture", 0);

  /* "mujoco_py/generated/wrappers.pxi":4217
 * 
 * def _mjr_uploadTexture(PyMjModel m, PyMjrContext con, int texid):
 *     mjr_uploadTexture(m.ptr, con.ptr, texid)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_uploadMesh(PyMjModel m, PyMjrContext con, int meshid):
 */
  mjr_uploadTexture(__pyx_v_m->ptr, __pyx_v_con->ptr, __pyx_v_texid);

  /* "mujoco_py/generated/wrappers.pxi":4216
 *     mjr_freeContext(con.ptr)
 * 
 * def _mjr_uploadTexture(PyMjModel m, PyMjrContext con, int texid):             # <<<<<<<<<<<<<<
 *     mjr_uploadTexture(m.ptr, con.ptr, texid)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4219
 *     mjr_uploadTexture(m.ptr, con.ptr, texid)
 * 
 * def _mjr_uploadMesh(PyMjModel m, PyMjrContext con, int meshid):             # <<<<<<<<<<<<<<
 *     mjr_uploadMesh(m.ptr, con.ptr, meshid)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_261_mjr_uploadMesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_261_mjr_uploadMesh = {"_mjr_uploadMesh", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_261_mjr_uploadMesh, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_261_mjr_uploadMesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  int __pyx_v_meshid;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_uploadMesh (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_con,&__pyx_n_s_meshid,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_uploadMesh", 1, 3, 3, 1); __PYX_ERR(3, 4219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_meshid)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_uploadMesh", 1, 3, 3, 2); __PYX_ERR(3, 4219, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjr_uploadMesh") < 0)) __PYX_ERR(3, 4219, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)values[1]);
    __pyx_v_meshid = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_meshid == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4219, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjr_uploadMesh", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4219, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_uploadMesh", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4219, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4219, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_260_mjr_uploadMesh(__pyx_self, __pyx_v_m, __pyx_v_con, __pyx_v_meshid);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_260_mjr_uploadMesh(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con, int __pyx_v_meshid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_uploadMesh", 0);

  /* "mujoco_py/generated/wrappers.pxi":4220
 * 
 * def _mjr_uploadMesh(PyMjModel m, PyMjrContext con, int meshid):
 *     mjr_uploadMesh(m.ptr, con.ptr, meshid)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_uploadHField(PyMjModel m, PyMjrContext con, int hfieldid):
 */
  mjr_uploadMesh(__pyx_v_m->ptr, __pyx_v_con->ptr, __pyx_v_meshid);

  /* "mujoco_py/generated/wrappers.pxi":4219
 *     mjr_uploadTexture(m.ptr, con.ptr, texid)
 * 
 * def _mjr_uploadMesh(PyMjModel m, PyMjrContext con, int meshid):             # <<<<<<<<<<<<<<
 *     mjr_uploadMesh(m.ptr, con.ptr, meshid)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4222
 *     mjr_uploadMesh(m.ptr, con.ptr, meshid)
 * 
 * def _mjr_uploadHField(PyMjModel m, PyMjrContext con, int hfieldid):             # <<<<<<<<<<<<<<
 *     mjr_uploadHField(m.ptr, con.ptr, hfieldid)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_263_mjr_uploadHField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_263_mjr_uploadHField = {"_mjr_uploadHField", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_263_mjr_uploadHField, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_263_mjr_uploadHField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  int __pyx_v_hfieldid;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_uploadHField (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,&__pyx_n_s_con,&__pyx_n_s_hfieldid,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_uploadHField", 1, 3, 3, 1); __PYX_ERR(3, 4222, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_hfieldid)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_uploadHField", 1, 3, 3, 2); __PYX_ERR(3, 4222, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjr_uploadHField") < 0)) __PYX_ERR(3, 4222, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_m = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)values[1]);
    __pyx_v_hfieldid = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_hfieldid == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4222, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjr_uploadHField", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4222, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_uploadHField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "m", 0))) __PYX_ERR(3, 4222, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4222, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_262_mjr_uploadHField(__pyx_self, __pyx_v_m, __pyx_v_con, __pyx_v_hfieldid);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_262_mjr_uploadHField(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_m, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con, int __pyx_v_hfieldid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_uploadHField", 0);

  /* "mujoco_py/generated/wrappers.pxi":4223
 * 
 * def _mjr_uploadHField(PyMjModel m, PyMjrContext con, int hfieldid):
 *     mjr_uploadHField(m.ptr, con.ptr, hfieldid)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_setBuffer(int framebuffer, PyMjrContext con):
 */
  mjr_uploadHField(__pyx_v_m->ptr, __pyx_v_con->ptr, __pyx_v_hfieldid);

  /* "mujoco_py/generated/wrappers.pxi":4222
 *     mjr_uploadMesh(m.ptr, con.ptr, meshid)
 * 
 * def _mjr_uploadHField(PyMjModel m, PyMjrContext con, int hfieldid):             # <<<<<<<<<<<<<<
 *     mjr_uploadHField(m.ptr, con.ptr, hfieldid)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4225
 *     mjr_uploadHField(m.ptr, con.ptr, hfieldid)
 * 
 * def _mjr_setBuffer(int framebuffer, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_setBuffer(framebuffer, con.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_265_mjr_setBuffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_265_mjr_setBuffer = {"_mjr_setBuffer", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_265_mjr_setBuffer, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_265_mjr_setBuffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_framebuffer;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_setBuffer (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_framebuffer,&__pyx_n_s_con,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_framebuffer)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_setBuffer", 1, 2, 2, 1); __PYX_ERR(3, 4225, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjr_setBuffer") < 0)) __PYX_ERR(3, 4225, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_framebuffer = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_framebuffer == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4225, __pyx_L3_error)
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjr_setBuffer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4225, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_setBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4225, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_264_mjr_setBuffer(__pyx_self, __pyx_v_framebuffer, __pyx_v_con);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_264_mjr_setBuffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_framebuffer, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_setBuffer", 0);

  /* "mujoco_py/generated/wrappers.pxi":4226
 * 
 * def _mjr_setBuffer(int framebuffer, PyMjrContext con):
 *     mjr_setBuffer(framebuffer, con.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_blitBuffer(PyMjrRect src, PyMjrRect dst, int flg_color, int flg_depth, PyMjrContext con):
 */
  mjr_setBuffer(__pyx_v_framebuffer, __pyx_v_con->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4225
 *     mjr_uploadHField(m.ptr, con.ptr, hfieldid)
 * 
 * def _mjr_setBuffer(int framebuffer, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_setBuffer(framebuffer, con.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4228
 *     mjr_setBuffer(framebuffer, con.ptr)
 * 
 * def _mjr_blitBuffer(PyMjrRect src, PyMjrRect dst, int flg_color, int flg_depth, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_blitBuffer(src.ptr[0], dst.ptr[0], flg_color, flg_depth, con.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_267_mjr_blitBuffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_267_mjr_blitBuffer = {"_mjr_blitBuffer", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_267_mjr_blitBuffer, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_267_mjr_blitBuffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_src = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_dst = 0;
  int __pyx_v_flg_color;
  int __pyx_v_flg_depth;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_blitBuffer (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_src,&__pyx_n_s_dst,&__pyx_n_s_flg_color,&__pyx_n_s_flg_depth,&__pyx_n_s_con,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_src)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dst)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_blitBuffer", 1, 5, 5, 1); __PYX_ERR(3, 4228, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_color)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_blitBuffer", 1, 5, 5, 2); __PYX_ERR(3, 4228, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_depth)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_blitBuffer", 1, 5, 5, 3); __PYX_ERR(3, 4228, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_blitBuffer", 1, 5, 5, 4); __PYX_ERR(3, 4228, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjr_blitBuffer") < 0)) __PYX_ERR(3, 4228, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_src = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)values[0]);
    __pyx_v_dst = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)values[1]);
    __pyx_v_flg_color = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_flg_color == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4228, __pyx_L3_error)
    __pyx_v_flg_depth = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_flg_depth == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4228, __pyx_L3_error)
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjr_blitBuffer", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4228, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_blitBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_src), __pyx_ptype_9mujoco_py_4cymj_PyMjrRect, 1, "src", 0))) __PYX_ERR(3, 4228, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dst), __pyx_ptype_9mujoco_py_4cymj_PyMjrRect, 1, "dst", 0))) __PYX_ERR(3, 4228, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4228, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_266_mjr_blitBuffer(__pyx_self, __pyx_v_src, __pyx_v_dst, __pyx_v_flg_color, __pyx_v_flg_depth, __pyx_v_con);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_266_mjr_blitBuffer(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_src, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_dst, int __pyx_v_flg_color, int __pyx_v_flg_depth, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_blitBuffer", 0);

  /* "mujoco_py/generated/wrappers.pxi":4229
 * 
 * def _mjr_blitBuffer(PyMjrRect src, PyMjrRect dst, int flg_color, int flg_depth, PyMjrContext con):
 *     mjr_blitBuffer(src.ptr[0], dst.ptr[0], flg_color, flg_depth, con.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_overlay(int font, int gridpos, PyMjrRect viewport, str overlay, str overlay2, PyMjrContext con):
 */
  mjr_blitBuffer((__pyx_v_src->ptr[0]), (__pyx_v_dst->ptr[0]), __pyx_v_flg_color, __pyx_v_flg_depth, __pyx_v_con->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4228
 *     mjr_setBuffer(framebuffer, con.ptr)
 * 
 * def _mjr_blitBuffer(PyMjrRect src, PyMjrRect dst, int flg_color, int flg_depth, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_blitBuffer(src.ptr[0], dst.ptr[0], flg_color, flg_depth, con.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4231
 *     mjr_blitBuffer(src.ptr[0], dst.ptr[0], flg_color, flg_depth, con.ptr)
 * 
 * def _mjr_overlay(int font, int gridpos, PyMjrRect viewport, str overlay, str overlay2, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_overlay(font, gridpos, viewport.ptr[0], overlay.encode(), overlay2.encode(), con.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_269_mjr_overlay(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_269_mjr_overlay = {"_mjr_overlay", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_269_mjr_overlay, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_269_mjr_overlay(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_font;
  int __pyx_v_gridpos;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_viewport = 0;
  PyObject *__pyx_v_overlay = 0;
  PyObject *__pyx_v_overlay2 = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_overlay (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_font,&__pyx_n_s_gridpos,&__pyx_n_s_viewport,&__pyx_n_s_overlay,&__pyx_n_s_overlay2,&__pyx_n_s_con,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_font)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gridpos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_overlay", 1, 6, 6, 1); __PYX_ERR(3, 4231, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_viewport)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_overlay", 1, 6, 6, 2); __PYX_ERR(3, 4231, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_overlay)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_overlay", 1, 6, 6, 3); __PYX_ERR(3, 4231, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_overlay2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_overlay", 1, 6, 6, 4); __PYX_ERR(3, 4231, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_overlay", 1, 6, 6, 5); __PYX_ERR(3, 4231, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjr_overlay") < 0)) __PYX_ERR(3, 4231, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_font = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_font == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4231, __pyx_L3_error)
    __pyx_v_gridpos = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_gridpos == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4231, __pyx_L3_error)
    __pyx_v_viewport = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)values[2]);
    __pyx_v_overlay = ((PyObject*)values[3]);
    __pyx_v_overlay2 = ((PyObject*)values[4]);
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)values[5]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjr_overlay", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4231, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_overlay", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewport), __pyx_ptype_9mujoco_py_4cymj_PyMjrRect, 1, "viewport", 0))) __PYX_ERR(3, 4231, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_overlay), (&PyUnicode_Type), 1, "overlay", 1))) __PYX_ERR(3, 4231, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_overlay2), (&PyUnicode_Type), 1, "overlay2", 1))) __PYX_ERR(3, 4231, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4231, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_268_mjr_overlay(__pyx_self, __pyx_v_font, __pyx_v_gridpos, __pyx_v_viewport, __pyx_v_overlay, __pyx_v_overlay2, __pyx_v_con);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_268_mjr_overlay(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_font, int __pyx_v_gridpos, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_viewport, PyObject *__pyx_v_overlay, PyObject *__pyx_v_overlay2, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char const *__pyx_t_4;
  __Pyx_RefNannySetupContext("_mjr_overlay", 0);

  /* "mujoco_py/generated/wrappers.pxi":4232
 * 
 * def _mjr_overlay(int font, int gridpos, PyMjrRect viewport, str overlay, str overlay2, PyMjrContext con):
 *     mjr_overlay(font, gridpos, viewport.ptr[0], overlay.encode(), overlay2.encode(), con.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_figure(PyMjrRect viewport, PyMjvFigure fig, PyMjrContext con):
 */
  if (unlikely(__pyx_v_overlay == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4232, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_overlay, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4232, __pyx_L1_error)
  if (unlikely(__pyx_v_overlay2 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4232, __pyx_L1_error)
  }
  __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_overlay2, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 4232, __pyx_L1_error)
  mjr_overlay(__pyx_v_font, __pyx_v_gridpos, (__pyx_v_viewport->ptr[0]), __pyx_t_2, __pyx_t_4, __pyx_v_con->ptr);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4231
 *     mjr_blitBuffer(src.ptr[0], dst.ptr[0], flg_color, flg_depth, con.ptr)
 * 
 * def _mjr_overlay(int font, int gridpos, PyMjrRect viewport, str overlay, str overlay2, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_overlay(font, gridpos, viewport.ptr[0], overlay.encode(), overlay2.encode(), con.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_overlay", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4234
 *     mjr_overlay(font, gridpos, viewport.ptr[0], overlay.encode(), overlay2.encode(), con.ptr)
 * 
 * def _mjr_figure(PyMjrRect viewport, PyMjvFigure fig, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_figure(viewport.ptr[0], fig.ptr, con.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_271_mjr_figure(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_271_mjr_figure = {"_mjr_figure", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_271_mjr_figure, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_271_mjr_figure(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_viewport = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_fig = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_figure (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_viewport,&__pyx_n_s_fig,&__pyx_n_s_con,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_viewport)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fig)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_figure", 1, 3, 3, 1); __PYX_ERR(3, 4234, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_figure", 1, 3, 3, 2); __PYX_ERR(3, 4234, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjr_figure") < 0)) __PYX_ERR(3, 4234, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_viewport = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)values[0]);
    __pyx_v_fig = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)values[1]);
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjr_figure", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4234, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_figure", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewport), __pyx_ptype_9mujoco_py_4cymj_PyMjrRect, 1, "viewport", 0))) __PYX_ERR(3, 4234, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fig), __pyx_ptype_9mujoco_py_4cymj_PyMjvFigure, 1, "fig", 0))) __PYX_ERR(3, 4234, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4234, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_270_mjr_figure(__pyx_self, __pyx_v_viewport, __pyx_v_fig, __pyx_v_con);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_270_mjr_figure(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_viewport, struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *__pyx_v_fig, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_figure", 0);

  /* "mujoco_py/generated/wrappers.pxi":4235
 * 
 * def _mjr_figure(PyMjrRect viewport, PyMjvFigure fig, PyMjrContext con):
 *     mjr_figure(viewport.ptr[0], fig.ptr, con.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_render(PyMjrRect viewport, PyMjvScene scn, PyMjrContext con):
 */
  mjr_figure((__pyx_v_viewport->ptr[0]), __pyx_v_fig->ptr, __pyx_v_con->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4234
 *     mjr_overlay(font, gridpos, viewport.ptr[0], overlay.encode(), overlay2.encode(), con.ptr)
 * 
 * def _mjr_figure(PyMjrRect viewport, PyMjvFigure fig, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_figure(viewport.ptr[0], fig.ptr, con.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4237
 *     mjr_figure(viewport.ptr[0], fig.ptr, con.ptr)
 * 
 * def _mjr_render(PyMjrRect viewport, PyMjvScene scn, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_render(viewport.ptr[0], scn.ptr, con.ptr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_273_mjr_render(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_273_mjr_render = {"_mjr_render", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_273_mjr_render, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_273_mjr_render(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_viewport = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_render (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_viewport,&__pyx_n_s_scn,&__pyx_n_s_con,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_viewport)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scn)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_render", 1, 3, 3, 1); __PYX_ERR(3, 4237, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_con)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mjr_render", 1, 3, 3, 2); __PYX_ERR(3, 4237, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mjr_render") < 0)) __PYX_ERR(3, 4237, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_viewport = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)values[0]);
    __pyx_v_scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)values[1]);
    __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mjr_render", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4237, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_render", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewport), __pyx_ptype_9mujoco_py_4cymj_PyMjrRect, 1, "viewport", 0))) __PYX_ERR(3, 4237, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scn), __pyx_ptype_9mujoco_py_4cymj_PyMjvScene, 1, "scn", 0))) __PYX_ERR(3, 4237, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_con), __pyx_ptype_9mujoco_py_4cymj_PyMjrContext, 1, "con", 0))) __PYX_ERR(3, 4237, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_272_mjr_render(__pyx_self, __pyx_v_viewport, __pyx_v_scn, __pyx_v_con);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_272_mjr_render(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *__pyx_v_viewport, struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *__pyx_v_scn, struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_render", 0);

  /* "mujoco_py/generated/wrappers.pxi":4238
 * 
 * def _mjr_render(PyMjrRect viewport, PyMjvScene scn, PyMjrContext con):
 *     mjr_render(viewport.ptr[0], scn.ptr, con.ptr)             # <<<<<<<<<<<<<<
 * 
 * def _mjr_finish():
 */
  mjr_render((__pyx_v_viewport->ptr[0]), __pyx_v_scn->ptr, __pyx_v_con->ptr);

  /* "mujoco_py/generated/wrappers.pxi":4237
 *     mjr_figure(viewport.ptr[0], fig.ptr, con.ptr)
 * 
 * def _mjr_render(PyMjrRect viewport, PyMjvScene scn, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_render(viewport.ptr[0], scn.ptr, con.ptr)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4240
 *     mjr_render(viewport.ptr[0], scn.ptr, con.ptr)
 * 
 * def _mjr_finish():             # <<<<<<<<<<<<<<
 *     mjr_finish()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_275_mjr_finish(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_275_mjr_finish = {"_mjr_finish", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_275_mjr_finish, METH_NOARGS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_275_mjr_finish(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_finish (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_274_mjr_finish(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_274_mjr_finish(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_finish", 0);

  /* "mujoco_py/generated/wrappers.pxi":4241
 * 
 * def _mjr_finish():
 *     mjr_finish()             # <<<<<<<<<<<<<<
 * 
 * def _mjr_getError():
 */
  mjr_finish();

  /* "mujoco_py/generated/wrappers.pxi":4240
 *     mjr_render(viewport.ptr[0], scn.ptr, con.ptr)
 * 
 * def _mjr_finish():             # <<<<<<<<<<<<<<
 *     mjr_finish()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4243
 *     mjr_finish()
 * 
 * def _mjr_getError():             # <<<<<<<<<<<<<<
 *     return mjr_getError()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_277_mjr_getError(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_277_mjr_getError = {"_mjr_getError", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_277_mjr_getError, METH_NOARGS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_277_mjr_getError(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mjr_getError (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_276_mjr_getError(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_276_mjr_getError(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mjr_getError", 0);

  /* "mujoco_py/generated/wrappers.pxi":4244
 * 
 * def _mjr_getError():
 *     return mjr_getError()             # <<<<<<<<<<<<<<
 * 
 * def _mju_error(str msg):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(mjr_getError()); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4243
 *     mjr_finish()
 * 
 * def _mjr_getError():             # <<<<<<<<<<<<<<
 *     return mjr_getError()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mjr_getError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4246
 *     return mjr_getError()
 * 
 * def _mju_error(str msg):             # <<<<<<<<<<<<<<
 *     mju_error(msg.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_279_mju_error(PyObject *__pyx_self, PyObject *__pyx_v_msg); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_279_mju_error = {"_mju_error", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_279_mju_error, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_279_mju_error(PyObject *__pyx_self, PyObject *__pyx_v_msg) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_error (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_msg), (&PyUnicode_Type), 1, "msg", 1))) __PYX_ERR(3, 4246, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_278_mju_error(__pyx_self, ((PyObject*)__pyx_v_msg));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_278_mju_error(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_error", 0);

  /* "mujoco_py/generated/wrappers.pxi":4247
 * 
 * def _mju_error(str msg):
 *     mju_error(msg.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mju_error_i(str msg, int i):
 */
  if (unlikely(__pyx_v_msg == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4247, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_msg, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4247, __pyx_L1_error)
  mju_error(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4246
 *     return mjr_getError()
 * 
 * def _mju_error(str msg):             # <<<<<<<<<<<<<<
 *     mju_error(msg.encode())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4249
 *     mju_error(msg.encode())
 * 
 * def _mju_error_i(str msg, int i):             # <<<<<<<<<<<<<<
 *     mju_error_i(msg.encode(), i)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_281_mju_error_i(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_281_mju_error_i = {"_mju_error_i", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_281_mju_error_i, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_281_mju_error_i(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_msg = 0;
  int __pyx_v_i;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_error_i (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msg,&__pyx_n_s_i,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_msg)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_error_i", 1, 2, 2, 1); __PYX_ERR(3, 4249, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_error_i") < 0)) __PYX_ERR(3, 4249, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_msg = ((PyObject*)values[0]);
    __pyx_v_i = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4249, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_error_i", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4249, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_error_i", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_msg), (&PyUnicode_Type), 1, "msg", 1))) __PYX_ERR(3, 4249, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_280_mju_error_i(__pyx_self, __pyx_v_msg, __pyx_v_i);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_280_mju_error_i(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg, int __pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_error_i", 0);

  /* "mujoco_py/generated/wrappers.pxi":4250
 * 
 * def _mju_error_i(str msg, int i):
 *     mju_error_i(msg.encode(), i)             # <<<<<<<<<<<<<<
 * 
 * def _mju_error_s(str msg, str text):
 */
  if (unlikely(__pyx_v_msg == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4250, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_msg, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4250, __pyx_L1_error)
  mju_error_i(__pyx_t_2, __pyx_v_i);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4249
 *     mju_error(msg.encode())
 * 
 * def _mju_error_i(str msg, int i):             # <<<<<<<<<<<<<<
 *     mju_error_i(msg.encode(), i)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_error_i", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4252
 *     mju_error_i(msg.encode(), i)
 * 
 * def _mju_error_s(str msg, str text):             # <<<<<<<<<<<<<<
 *     mju_error_s(msg.encode(), text.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_283_mju_error_s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_283_mju_error_s = {"_mju_error_s", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_283_mju_error_s, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_283_mju_error_s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_v_text = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_error_s (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msg,&__pyx_n_s_text,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_msg)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_text)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_error_s", 1, 2, 2, 1); __PYX_ERR(3, 4252, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_error_s") < 0)) __PYX_ERR(3, 4252, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_msg = ((PyObject*)values[0]);
    __pyx_v_text = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_error_s", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4252, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_error_s", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_msg), (&PyUnicode_Type), 1, "msg", 1))) __PYX_ERR(3, 4252, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_text), (&PyUnicode_Type), 1, "text", 1))) __PYX_ERR(3, 4252, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_282_mju_error_s(__pyx_self, __pyx_v_msg, __pyx_v_text);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_282_mju_error_s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg, PyObject *__pyx_v_text) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char const *__pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_error_s", 0);

  /* "mujoco_py/generated/wrappers.pxi":4253
 * 
 * def _mju_error_s(str msg, str text):
 *     mju_error_s(msg.encode(), text.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mju_warning(str msg):
 */
  if (unlikely(__pyx_v_msg == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4253, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_msg, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4253, __pyx_L1_error)
  if (unlikely(__pyx_v_text == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4253, __pyx_L1_error)
  }
  __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_text, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 4253, __pyx_L1_error)
  mju_error_s(__pyx_t_2, __pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4252
 *     mju_error_i(msg.encode(), i)
 * 
 * def _mju_error_s(str msg, str text):             # <<<<<<<<<<<<<<
 *     mju_error_s(msg.encode(), text.encode())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_error_s", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4255
 *     mju_error_s(msg.encode(), text.encode())
 * 
 * def _mju_warning(str msg):             # <<<<<<<<<<<<<<
 *     mju_warning(msg.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_285_mju_warning(PyObject *__pyx_self, PyObject *__pyx_v_msg); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_285_mju_warning = {"_mju_warning", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_285_mju_warning, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_285_mju_warning(PyObject *__pyx_self, PyObject *__pyx_v_msg) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_warning (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_msg), (&PyUnicode_Type), 1, "msg", 1))) __PYX_ERR(3, 4255, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_284_mju_warning(__pyx_self, ((PyObject*)__pyx_v_msg));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_284_mju_warning(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_warning", 0);

  /* "mujoco_py/generated/wrappers.pxi":4256
 * 
 * def _mju_warning(str msg):
 *     mju_warning(msg.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mju_warning_i(str msg, int i):
 */
  if (unlikely(__pyx_v_msg == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4256, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_msg, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4256, __pyx_L1_error)
  mju_warning(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4255
 *     mju_error_s(msg.encode(), text.encode())
 * 
 * def _mju_warning(str msg):             # <<<<<<<<<<<<<<
 *     mju_warning(msg.encode())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_warning", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4258
 *     mju_warning(msg.encode())
 * 
 * def _mju_warning_i(str msg, int i):             # <<<<<<<<<<<<<<
 *     mju_warning_i(msg.encode(), i)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_287_mju_warning_i(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_287_mju_warning_i = {"_mju_warning_i", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_287_mju_warning_i, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_287_mju_warning_i(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_msg = 0;
  int __pyx_v_i;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_warning_i (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msg,&__pyx_n_s_i,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_msg)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_warning_i", 1, 2, 2, 1); __PYX_ERR(3, 4258, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_warning_i") < 0)) __PYX_ERR(3, 4258, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_msg = ((PyObject*)values[0]);
    __pyx_v_i = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4258, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_warning_i", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4258, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_warning_i", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_msg), (&PyUnicode_Type), 1, "msg", 1))) __PYX_ERR(3, 4258, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_286_mju_warning_i(__pyx_self, __pyx_v_msg, __pyx_v_i);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_286_mju_warning_i(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg, int __pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_warning_i", 0);

  /* "mujoco_py/generated/wrappers.pxi":4259
 * 
 * def _mju_warning_i(str msg, int i):
 *     mju_warning_i(msg.encode(), i)             # <<<<<<<<<<<<<<
 * 
 * def _mju_warning_s(str msg, str text):
 */
  if (unlikely(__pyx_v_msg == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4259, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_msg, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4259, __pyx_L1_error)
  mju_warning_i(__pyx_t_2, __pyx_v_i);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4258
 *     mju_warning(msg.encode())
 * 
 * def _mju_warning_i(str msg, int i):             # <<<<<<<<<<<<<<
 *     mju_warning_i(msg.encode(), i)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_warning_i", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4261
 *     mju_warning_i(msg.encode(), i)
 * 
 * def _mju_warning_s(str msg, str text):             # <<<<<<<<<<<<<<
 *     mju_warning_s(msg.encode(), text.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_289_mju_warning_s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_289_mju_warning_s = {"_mju_warning_s", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_289_mju_warning_s, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_289_mju_warning_s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_v_text = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_warning_s (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msg,&__pyx_n_s_text,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_msg)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_text)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_warning_s", 1, 2, 2, 1); __PYX_ERR(3, 4261, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_warning_s") < 0)) __PYX_ERR(3, 4261, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_msg = ((PyObject*)values[0]);
    __pyx_v_text = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_warning_s", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4261, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_warning_s", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_msg), (&PyUnicode_Type), 1, "msg", 1))) __PYX_ERR(3, 4261, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_text), (&PyUnicode_Type), 1, "text", 1))) __PYX_ERR(3, 4261, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_288_mju_warning_s(__pyx_self, __pyx_v_msg, __pyx_v_text);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_288_mju_warning_s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msg, PyObject *__pyx_v_text) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char const *__pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_warning_s", 0);

  /* "mujoco_py/generated/wrappers.pxi":4262
 * 
 * def _mju_warning_s(str msg, str text):
 *     mju_warning_s(msg.encode(), text.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mju_clearHandlers():
 */
  if (unlikely(__pyx_v_msg == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4262, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_msg, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4262, __pyx_L1_error)
  if (unlikely(__pyx_v_text == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4262, __pyx_L1_error)
  }
  __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_text, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 4262, __pyx_L1_error)
  mju_warning_s(__pyx_t_2, __pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4261
 *     mju_warning_i(msg.encode(), i)
 * 
 * def _mju_warning_s(str msg, str text):             # <<<<<<<<<<<<<<
 *     mju_warning_s(msg.encode(), text.encode())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_warning_s", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4264
 *     mju_warning_s(msg.encode(), text.encode())
 * 
 * def _mju_clearHandlers():             # <<<<<<<<<<<<<<
 *     mju_clearHandlers()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_291_mju_clearHandlers(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_291_mju_clearHandlers = {"_mju_clearHandlers", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_291_mju_clearHandlers, METH_NOARGS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_291_mju_clearHandlers(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_clearHandlers (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_290_mju_clearHandlers(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_290_mju_clearHandlers(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_clearHandlers", 0);

  /* "mujoco_py/generated/wrappers.pxi":4265
 * 
 * def _mju_clearHandlers():
 *     mju_clearHandlers()             # <<<<<<<<<<<<<<
 * 
 * def _mj_warning(PyMjData d, int warning, int info):
 */
  mju_clearHandlers();

  /* "mujoco_py/generated/wrappers.pxi":4264
 *     mju_warning_s(msg.encode(), text.encode())
 * 
 * def _mju_clearHandlers():             # <<<<<<<<<<<<<<
 *     mju_clearHandlers()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4267
 *     mju_clearHandlers()
 * 
 * def _mj_warning(PyMjData d, int warning, int info):             # <<<<<<<<<<<<<<
 *     mj_warning(d.ptr, warning, info)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_293_mj_warning(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_293_mj_warning = {"_mj_warning", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_293_mj_warning, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_293_mj_warning(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d = 0;
  int __pyx_v_warning;
  int __pyx_v_info;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_warning (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_d,&__pyx_n_s_warning,&__pyx_n_s_info,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_warning)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_warning", 1, 3, 3, 1); __PYX_ERR(3, 4267, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mj_warning", 1, 3, 3, 2); __PYX_ERR(3, 4267, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mj_warning") < 0)) __PYX_ERR(3, 4267, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_d = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[0]);
    __pyx_v_warning = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_warning == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4267, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_info == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4267, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mj_warning", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4267, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mj_warning", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_d), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "d", 0))) __PYX_ERR(3, 4267, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_292_mj_warning(__pyx_self, __pyx_v_d, __pyx_v_warning, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_292_mj_warning(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_d, int __pyx_v_warning, int __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mj_warning", 0);

  /* "mujoco_py/generated/wrappers.pxi":4268
 * 
 * def _mj_warning(PyMjData d, int warning, int info):
 *     mj_warning(d.ptr, warning, info)             # <<<<<<<<<<<<<<
 * 
 * def _mju_writeLog(str type, str msg):
 */
  mj_warning(__pyx_v_d->ptr, __pyx_v_warning, __pyx_v_info);

  /* "mujoco_py/generated/wrappers.pxi":4267
 *     mju_clearHandlers()
 * 
 * def _mj_warning(PyMjData d, int warning, int info):             # <<<<<<<<<<<<<<
 *     mj_warning(d.ptr, warning, info)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4270
 *     mj_warning(d.ptr, warning, info)
 * 
 * def _mju_writeLog(str type, str msg):             # <<<<<<<<<<<<<<
 *     mju_writeLog(type.encode(), msg.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_295_mju_writeLog(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_295_mju_writeLog = {"_mju_writeLog", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_295_mju_writeLog, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_295_mju_writeLog(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_type = 0;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_writeLog (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_type,&__pyx_n_s_msg,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_msg)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_writeLog", 1, 2, 2, 1); __PYX_ERR(3, 4270, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_writeLog") < 0)) __PYX_ERR(3, 4270, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_type = ((PyObject*)values[0]);
    __pyx_v_msg = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_writeLog", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4270, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_writeLog", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_type), (&PyUnicode_Type), 1, "type", 1))) __PYX_ERR(3, 4270, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_msg), (&PyUnicode_Type), 1, "msg", 1))) __PYX_ERR(3, 4270, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_294_mju_writeLog(__pyx_self, __pyx_v_type, __pyx_v_msg);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_294_mju_writeLog(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_type, PyObject *__pyx_v_msg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char const *__pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_writeLog", 0);

  /* "mujoco_py/generated/wrappers.pxi":4271
 * 
 * def _mju_writeLog(str type, str msg):
 *     mju_writeLog(type.encode(), msg.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mju_zero3(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 */
  if (unlikely(__pyx_v_type == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4271, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_type, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4271, __pyx_L1_error)
  if (unlikely(__pyx_v_msg == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4271, __pyx_L1_error)
  }
  __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_msg, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 4271, __pyx_L1_error)
  mju_writeLog(__pyx_t_2, __pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4270
 *     mj_warning(d.ptr, warning, info)
 * 
 * def _mju_writeLog(str type, str msg):             # <<<<<<<<<<<<<<
 *     mju_writeLog(type.encode(), msg.encode())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_writeLog", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4273
 *     mju_writeLog(type.encode(), msg.encode())
 * 
 * def _mju_zero3(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_zero3(&res[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_297_mju_zero3(PyObject *__pyx_self, PyObject *__pyx_v_res); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_297_mju_zero3 = {"_mju_zero3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_297_mju_zero3, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_297_mju_zero3(PyObject *__pyx_self, PyObject *__pyx_v_res) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_zero3 (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4273, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_296_mju_zero3(__pyx_self, ((PyArrayObject *)__pyx_v_res));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_296_mju_zero3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_zero3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4273, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4274
 * 
 * def _mju_zero3(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 *     mju_zero3(&res[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_copy3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4274, __pyx_L1_error)
  }
  mju_zero3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4273
 *     mju_writeLog(type.encode(), msg.encode())
 * 
 * def _mju_zero3(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_zero3(&res[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_zero3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4276
 *     mju_zero3(&res[0])
 * 
 * def _mju_copy3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):             # <<<<<<<<<<<<<<
 *     mju_copy3(&res[0], &data[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_299_mju_copy3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_299_mju_copy3 = {"_mju_copy3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_299_mju_copy3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_299_mju_copy3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_data = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_copy3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_data,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_copy3", 1, 2, 2, 1); __PYX_ERR(3, 4276, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_copy3") < 0)) __PYX_ERR(3, 4276, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_data = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_copy3", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4276, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_copy3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4276, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) __PYX_ERR(3, 4276, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_298_mju_copy3(__pyx_self, __pyx_v_res, __pyx_v_data);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_298_mju_copy3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_data) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_data;
  __Pyx_Buffer __pyx_pybuffer_data;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_copy3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_data.pybuffer.buf = NULL;
  __pyx_pybuffer_data.refcount = 0;
  __pyx_pybuffernd_data.data = NULL;
  __pyx_pybuffernd_data.rcbuffer = &__pyx_pybuffer_data;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4276, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_data.rcbuffer->pybuffer, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4276, __pyx_L1_error)
  }
  __pyx_pybuffernd_data.diminfo[0].strides = __pyx_pybuffernd_data.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_data.diminfo[0].shape = __pyx_pybuffernd_data.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4277
 * 
 * def _mju_copy3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):
 *     mju_copy3(&res[0], &data[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_scl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4277, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_data.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_data.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4277, __pyx_L1_error)
  }
  mju_copy3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_data.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_data.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4276
 *     mju_zero3(&res[0])
 * 
 * def _mju_copy3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):             # <<<<<<<<<<<<<<
 *     mju_copy3(&res[0], &data[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_data.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_copy3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_data.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4279
 *     mju_copy3(&res[0], &data[0])
 * 
 * def _mju_scl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):             # <<<<<<<<<<<<<<
 *     mju_scl3(&res[0], &vec[0], scl)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_301_mju_scl3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_301_mju_scl3 = {"_mju_scl3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_301_mju_scl3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_301_mju_scl3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  float __pyx_v_scl;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_scl3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_scl,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_scl3", 1, 3, 3, 1); __PYX_ERR(3, 4279, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scl)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_scl3", 1, 3, 3, 2); __PYX_ERR(3, 4279, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_scl3") < 0)) __PYX_ERR(3, 4279, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_scl = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_scl == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4279, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_scl3", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4279, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_scl3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4279, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4279, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_300_mju_scl3(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_scl);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_300_mju_scl3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, float __pyx_v_scl) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_scl3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4279, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4279, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4280
 * 
 * def _mju_scl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):
 *     mju_scl3(&res[0], &vec[0], scl)             # <<<<<<<<<<<<<<
 * 
 * def _mju_add3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4280, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4280, __pyx_L1_error)
  }
  mju_scl3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_scl);

  /* "mujoco_py/generated/wrappers.pxi":4279
 *     mju_copy3(&res[0], &data[0])
 * 
 * def _mju_scl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):             # <<<<<<<<<<<<<<
 *     mju_scl3(&res[0], &vec[0], scl)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_scl3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4282
 *     mju_scl3(&res[0], &vec[0], scl)
 * 
 * def _mju_add3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     mju_add3(&res[0], &vec1[0], &vec2[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_303_mju_add3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_303_mju_add3 = {"_mju_add3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_303_mju_add3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_303_mju_add3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec1 = 0;
  PyArrayObject *__pyx_v_vec2 = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_add3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec1,&__pyx_n_s_vec2,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_add3", 1, 3, 3, 1); __PYX_ERR(3, 4282, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_add3", 1, 3, 3, 2); __PYX_ERR(3, 4282, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_add3") < 0)) __PYX_ERR(3, 4282, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec1 = ((PyArrayObject *)values[1]);
    __pyx_v_vec2 = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_add3", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4282, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_add3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4282, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec1), __pyx_ptype_5numpy_ndarray, 1, "vec1", 0))) __PYX_ERR(3, 4282, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec2), __pyx_ptype_5numpy_ndarray, 1, "vec2", 0))) __PYX_ERR(3, 4282, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_302_mju_add3(__pyx_self, __pyx_v_res, __pyx_v_vec1, __pyx_v_vec2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_302_mju_add3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec1;
  __Pyx_Buffer __pyx_pybuffer_vec1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec2;
  __Pyx_Buffer __pyx_pybuffer_vec2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_add3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec1.pybuffer.buf = NULL;
  __pyx_pybuffer_vec1.refcount = 0;
  __pyx_pybuffernd_vec1.data = NULL;
  __pyx_pybuffernd_vec1.rcbuffer = &__pyx_pybuffer_vec1;
  __pyx_pybuffer_vec2.pybuffer.buf = NULL;
  __pyx_pybuffer_vec2.refcount = 0;
  __pyx_pybuffernd_vec2.data = NULL;
  __pyx_pybuffernd_vec2.rcbuffer = &__pyx_pybuffer_vec2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4282, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4282, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec1.diminfo[0].strides = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec1.diminfo[0].shape = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4282, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec2.diminfo[0].strides = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec2.diminfo[0].shape = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4283
 * 
 * def _mju_add3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):
 *     mju_add3(&res[0], &vec1[0], &vec2[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_sub3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4283, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4283, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vec2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vec2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4283, __pyx_L1_error)
  }
  mju_add3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vec2.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4282
 *     mju_scl3(&res[0], &vec[0], scl)
 * 
 * def _mju_add3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     mju_add3(&res[0], &vec1[0], &vec2[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_add3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4285
 *     mju_add3(&res[0], &vec1[0], &vec2[0])
 * 
 * def _mju_sub3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     mju_sub3(&res[0], &vec1[0], &vec2[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_305_mju_sub3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_305_mju_sub3 = {"_mju_sub3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_305_mju_sub3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_305_mju_sub3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec1 = 0;
  PyArrayObject *__pyx_v_vec2 = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_sub3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec1,&__pyx_n_s_vec2,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_sub3", 1, 3, 3, 1); __PYX_ERR(3, 4285, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_sub3", 1, 3, 3, 2); __PYX_ERR(3, 4285, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_sub3") < 0)) __PYX_ERR(3, 4285, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec1 = ((PyArrayObject *)values[1]);
    __pyx_v_vec2 = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_sub3", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4285, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_sub3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4285, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec1), __pyx_ptype_5numpy_ndarray, 1, "vec1", 0))) __PYX_ERR(3, 4285, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec2), __pyx_ptype_5numpy_ndarray, 1, "vec2", 0))) __PYX_ERR(3, 4285, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_304_mju_sub3(__pyx_self, __pyx_v_res, __pyx_v_vec1, __pyx_v_vec2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_304_mju_sub3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec1;
  __Pyx_Buffer __pyx_pybuffer_vec1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec2;
  __Pyx_Buffer __pyx_pybuffer_vec2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_sub3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec1.pybuffer.buf = NULL;
  __pyx_pybuffer_vec1.refcount = 0;
  __pyx_pybuffernd_vec1.data = NULL;
  __pyx_pybuffernd_vec1.rcbuffer = &__pyx_pybuffer_vec1;
  __pyx_pybuffer_vec2.pybuffer.buf = NULL;
  __pyx_pybuffer_vec2.refcount = 0;
  __pyx_pybuffernd_vec2.data = NULL;
  __pyx_pybuffernd_vec2.rcbuffer = &__pyx_pybuffer_vec2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4285, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4285, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec1.diminfo[0].strides = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec1.diminfo[0].shape = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4285, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec2.diminfo[0].strides = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec2.diminfo[0].shape = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4286
 * 
 * def _mju_sub3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):
 *     mju_sub3(&res[0], &vec1[0], &vec2[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_addTo3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4286, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4286, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vec2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vec2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4286, __pyx_L1_error)
  }
  mju_sub3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vec2.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4285
 *     mju_add3(&res[0], &vec1[0], &vec2[0])
 * 
 * def _mju_sub3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     mju_sub3(&res[0], &vec1[0], &vec2[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_sub3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4288
 *     mju_sub3(&res[0], &vec1[0], &vec2[0])
 * 
 * def _mju_addTo3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_addTo3(&res[0], &vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_307_mju_addTo3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_307_mju_addTo3 = {"_mju_addTo3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_307_mju_addTo3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_307_mju_addTo3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_addTo3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addTo3", 1, 2, 2, 1); __PYX_ERR(3, 4288, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_addTo3") < 0)) __PYX_ERR(3, 4288, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_addTo3", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4288, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addTo3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4288, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4288, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_306_mju_addTo3(__pyx_self, __pyx_v_res, __pyx_v_vec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_306_mju_addTo3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_addTo3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4288, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4288, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4289
 * 
 * def _mju_addTo3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     mju_addTo3(&res[0], &vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_subFrom3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4289, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4289, __pyx_L1_error)
  }
  mju_addTo3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4288
 *     mju_sub3(&res[0], &vec1[0], &vec2[0])
 * 
 * def _mju_addTo3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_addTo3(&res[0], &vec[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addTo3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4291
 *     mju_addTo3(&res[0], &vec[0])
 * 
 * def _mju_subFrom3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_subFrom3(&res[0], &vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_309_mju_subFrom3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_309_mju_subFrom3 = {"_mju_subFrom3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_309_mju_subFrom3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_309_mju_subFrom3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_subFrom3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_subFrom3", 1, 2, 2, 1); __PYX_ERR(3, 4291, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_subFrom3") < 0)) __PYX_ERR(3, 4291, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_subFrom3", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4291, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_subFrom3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4291, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4291, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_308_mju_subFrom3(__pyx_self, __pyx_v_res, __pyx_v_vec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_308_mju_subFrom3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_subFrom3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4291, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4291, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4292
 * 
 * def _mju_subFrom3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     mju_subFrom3(&res[0], &vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_addToScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4292, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4292, __pyx_L1_error)
  }
  mju_subFrom3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4291
 *     mju_addTo3(&res[0], &vec[0])
 * 
 * def _mju_subFrom3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_subFrom3(&res[0], &vec[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_subFrom3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4294
 *     mju_subFrom3(&res[0], &vec[0])
 * 
 * def _mju_addToScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):             # <<<<<<<<<<<<<<
 *     mju_addToScl3(&res[0], &vec[0], scl)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_311_mju_addToScl3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_311_mju_addToScl3 = {"_mju_addToScl3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_311_mju_addToScl3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_311_mju_addToScl3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  float __pyx_v_scl;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_addToScl3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_scl,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addToScl3", 1, 3, 3, 1); __PYX_ERR(3, 4294, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scl)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addToScl3", 1, 3, 3, 2); __PYX_ERR(3, 4294, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_addToScl3") < 0)) __PYX_ERR(3, 4294, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_scl = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_scl == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4294, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_addToScl3", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4294, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addToScl3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4294, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4294, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_310_mju_addToScl3(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_scl);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_310_mju_addToScl3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, float __pyx_v_scl) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_addToScl3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4294, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4294, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4295
 * 
 * def _mju_addToScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):
 *     mju_addToScl3(&res[0], &vec[0], scl)             # <<<<<<<<<<<<<<
 * 
 * def _mju_addScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4295, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4295, __pyx_L1_error)
  }
  mju_addToScl3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_scl);

  /* "mujoco_py/generated/wrappers.pxi":4294
 *     mju_subFrom3(&res[0], &vec[0])
 * 
 * def _mju_addToScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):             # <<<<<<<<<<<<<<
 *     mju_addToScl3(&res[0], &vec[0], scl)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addToScl3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4297
 *     mju_addToScl3(&res[0], &vec[0], scl)
 * 
 * def _mju_addScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl):             # <<<<<<<<<<<<<<
 *     mju_addScl3(&res[0], &vec1[0], &vec2[0], scl)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_313_mju_addScl3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_313_mju_addScl3 = {"_mju_addScl3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_313_mju_addScl3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_313_mju_addScl3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec1 = 0;
  PyArrayObject *__pyx_v_vec2 = 0;
  float __pyx_v_scl;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_addScl3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec1,&__pyx_n_s_vec2,&__pyx_n_s_scl,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addScl3", 1, 4, 4, 1); __PYX_ERR(3, 4297, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addScl3", 1, 4, 4, 2); __PYX_ERR(3, 4297, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scl)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addScl3", 1, 4, 4, 3); __PYX_ERR(3, 4297, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_addScl3") < 0)) __PYX_ERR(3, 4297, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec1 = ((PyArrayObject *)values[1]);
    __pyx_v_vec2 = ((PyArrayObject *)values[2]);
    __pyx_v_scl = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_scl == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4297, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_addScl3", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4297, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addScl3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4297, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec1), __pyx_ptype_5numpy_ndarray, 1, "vec1", 0))) __PYX_ERR(3, 4297, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec2), __pyx_ptype_5numpy_ndarray, 1, "vec2", 0))) __PYX_ERR(3, 4297, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_312_mju_addScl3(__pyx_self, __pyx_v_res, __pyx_v_vec1, __pyx_v_vec2, __pyx_v_scl);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_312_mju_addScl3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, float __pyx_v_scl) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec1;
  __Pyx_Buffer __pyx_pybuffer_vec1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec2;
  __Pyx_Buffer __pyx_pybuffer_vec2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_addScl3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec1.pybuffer.buf = NULL;
  __pyx_pybuffer_vec1.refcount = 0;
  __pyx_pybuffernd_vec1.data = NULL;
  __pyx_pybuffernd_vec1.rcbuffer = &__pyx_pybuffer_vec1;
  __pyx_pybuffer_vec2.pybuffer.buf = NULL;
  __pyx_pybuffer_vec2.refcount = 0;
  __pyx_pybuffernd_vec2.data = NULL;
  __pyx_pybuffernd_vec2.rcbuffer = &__pyx_pybuffer_vec2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4297, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4297, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec1.diminfo[0].strides = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec1.diminfo[0].shape = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4297, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec2.diminfo[0].strides = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec2.diminfo[0].shape = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4298
 * 
 * def _mju_addScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl):
 *     mju_addScl3(&res[0], &vec1[0], &vec2[0], scl)             # <<<<<<<<<<<<<<
 * 
 * def _mju_normalize3(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4298, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4298, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vec2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vec2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4298, __pyx_L1_error)
  }
  mju_addScl3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vec2.diminfo[0].strides))), __pyx_v_scl);

  /* "mujoco_py/generated/wrappers.pxi":4297
 *     mju_addToScl3(&res[0], &vec[0], scl)
 * 
 * def _mju_addScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl):             # <<<<<<<<<<<<<<
 *     mju_addScl3(&res[0], &vec1[0], &vec2[0], scl)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addScl3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4300
 *     mju_addScl3(&res[0], &vec1[0], &vec2[0], scl)
 * 
 * def _mju_normalize3(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     return mju_normalize3(&res[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_315_mju_normalize3(PyObject *__pyx_self, PyObject *__pyx_v_res); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_315_mju_normalize3 = {"_mju_normalize3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_315_mju_normalize3, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_315_mju_normalize3(PyObject *__pyx_self, PyObject *__pyx_v_res) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_normalize3 (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4300, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_314_mju_normalize3(__pyx_self, ((PyArrayObject *)__pyx_v_res));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_314_mju_normalize3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_normalize3", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4300, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4301
 * 
 * def _mju_normalize3(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 *     return mju_normalize3(&res[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_norm3(np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4301, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(mju_normalize3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4300
 *     mju_addScl3(&res[0], &vec1[0], &vec2[0], scl)
 * 
 * def _mju_normalize3(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     return mju_normalize3(&res[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_normalize3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4303
 *     return mju_normalize3(&res[0])
 * 
 * def _mju_norm3(np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mju_norm3(&vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_317_mju_norm3(PyObject *__pyx_self, PyObject *__pyx_v_vec); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_317_mju_norm3 = {"_mju_norm3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_317_mju_norm3, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_317_mju_norm3(PyObject *__pyx_self, PyObject *__pyx_v_vec) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_norm3 (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4303, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_316_mju_norm3(__pyx_self, ((PyArrayObject *)__pyx_v_vec));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_316_mju_norm3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_norm3", 0);
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4303, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4304
 * 
 * def _mju_norm3(np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     return mju_norm3(&vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_dot3(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4304, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(mju_norm3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_vec.diminfo[0].strides))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4303
 *     return mju_normalize3(&res[0])
 * 
 * def _mju_norm3(np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mju_norm3(&vec[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_norm3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4306
 *     return mju_norm3(&vec[0])
 * 
 * def _mju_dot3(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     return mju_dot3(&vec1[0], &vec2[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_319_mju_dot3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_319_mju_dot3 = {"_mju_dot3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_319_mju_dot3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_319_mju_dot3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_vec1 = 0;
  PyArrayObject *__pyx_v_vec2 = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_dot3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vec1,&__pyx_n_s_vec2,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec1)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_dot3", 1, 2, 2, 1); __PYX_ERR(3, 4306, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_dot3") < 0)) __PYX_ERR(3, 4306, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_vec1 = ((PyArrayObject *)values[0]);
    __pyx_v_vec2 = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_dot3", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4306, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_dot3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec1), __pyx_ptype_5numpy_ndarray, 1, "vec1", 0))) __PYX_ERR(3, 4306, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec2), __pyx_ptype_5numpy_ndarray, 1, "vec2", 0))) __PYX_ERR(3, 4306, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_318_mju_dot3(__pyx_self, __pyx_v_vec1, __pyx_v_vec2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_318_mju_dot3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec1;
  __Pyx_Buffer __pyx_pybuffer_vec1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec2;
  __Pyx_Buffer __pyx_pybuffer_vec2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_mju_dot3", 0);
  __pyx_pybuffer_vec1.pybuffer.buf = NULL;
  __pyx_pybuffer_vec1.refcount = 0;
  __pyx_pybuffernd_vec1.data = NULL;
  __pyx_pybuffernd_vec1.rcbuffer = &__pyx_pybuffer_vec1;
  __pyx_pybuffer_vec2.pybuffer.buf = NULL;
  __pyx_pybuffer_vec2.refcount = 0;
  __pyx_pybuffernd_vec2.data = NULL;
  __pyx_pybuffernd_vec2.rcbuffer = &__pyx_pybuffer_vec2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4306, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec1.diminfo[0].strides = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec1.diminfo[0].shape = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4306, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec2.diminfo[0].strides = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec2.diminfo[0].shape = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4307
 * 
 * def _mju_dot3(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):
 *     return mju_dot3(&vec1[0], &vec2[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_dist3(np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_vec1.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_vec1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4307, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec2.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4307, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(mju_dot3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec1.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_vec1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec2.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec2.diminfo[0].strides))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 4307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4306
 *     return mju_norm3(&vec[0])
 * 
 * def _mju_dot3(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     return mju_dot3(&vec1[0], &vec2[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_dot3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4309
 *     return mju_dot3(&vec1[0], &vec2[0])
 * 
 * def _mju_dist3(np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2):             # <<<<<<<<<<<<<<
 *     return mju_dist3(&pos1[0], &pos2[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_321_mju_dist3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_321_mju_dist3 = {"_mju_dist3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_321_mju_dist3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_321_mju_dist3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_pos1 = 0;
  PyArrayObject *__pyx_v_pos2 = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_dist3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pos1,&__pyx_n_s_pos2,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos1)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_dist3", 1, 2, 2, 1); __PYX_ERR(3, 4309, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_dist3") < 0)) __PYX_ERR(3, 4309, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_pos1 = ((PyArrayObject *)values[0]);
    __pyx_v_pos2 = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_dist3", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4309, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_dist3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 1, "pos1", 0))) __PYX_ERR(3, 4309, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 1, "pos2", 0))) __PYX_ERR(3, 4309, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_320_mju_dist3(__pyx_self, __pyx_v_pos1, __pyx_v_pos2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_320_mju_dist3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_pos1, PyArrayObject *__pyx_v_pos2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pos1;
  __Pyx_Buffer __pyx_pybuffer_pos1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pos2;
  __Pyx_Buffer __pyx_pybuffer_pos2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_mju_dist3", 0);
  __pyx_pybuffer_pos1.pybuffer.buf = NULL;
  __pyx_pybuffer_pos1.refcount = 0;
  __pyx_pybuffernd_pos1.data = NULL;
  __pyx_pybuffernd_pos1.rcbuffer = &__pyx_pybuffer_pos1;
  __pyx_pybuffer_pos2.pybuffer.buf = NULL;
  __pyx_pybuffer_pos2.refcount = 0;
  __pyx_pybuffernd_pos2.data = NULL;
  __pyx_pybuffernd_pos2.rcbuffer = &__pyx_pybuffer_pos2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos1.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4309, __pyx_L1_error)
  }
  __pyx_pybuffernd_pos1.diminfo[0].strides = __pyx_pybuffernd_pos1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos1.diminfo[0].shape = __pyx_pybuffernd_pos1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos2.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4309, __pyx_L1_error)
  }
  __pyx_pybuffernd_pos2.diminfo[0].strides = __pyx_pybuffernd_pos2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos2.diminfo[0].shape = __pyx_pybuffernd_pos2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4310
 * 
 * def _mju_dist3(np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2):
 *     return mju_dist3(&pos1[0], &pos2[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_rotVecMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_pos1.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_pos1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4310, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_pos2.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_pos2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4310, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(mju_dist3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pos1.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_pos1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pos2.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_pos2.diminfo[0].strides))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 4310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4309
 *     return mju_dot3(&vec1[0], &vec2[0])
 * 
 * def _mju_dist3(np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2):             # <<<<<<<<<<<<<<
 *     return mju_dist3(&pos1[0], &pos2[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_dist3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4312
 *     return mju_dist3(&pos1[0], &pos2[0])
 * 
 * def _mju_rotVecMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_rotVecMat(&res[0], &vec[0], &mat[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_323_mju_rotVecMat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_323_mju_rotVecMat = {"_mju_rotVecMat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_323_mju_rotVecMat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_323_mju_rotVecMat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyArrayObject *__pyx_v_mat = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_rotVecMat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_mat,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rotVecMat", 1, 3, 3, 1); __PYX_ERR(3, 4312, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rotVecMat", 1, 3, 3, 2); __PYX_ERR(3, 4312, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_rotVecMat") < 0)) __PYX_ERR(3, 4312, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_mat = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_rotVecMat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4312, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_rotVecMat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4312, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4312, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4312, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_322_mju_rotVecMat(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_mat);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_322_mju_rotVecMat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, PyArrayObject *__pyx_v_mat) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_rotVecMat", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4312, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4312, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4312, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4313
 * 
 * def _mju_rotVecMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):
 *     mju_rotVecMat(&res[0], &vec[0], &mat[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_rotVecMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4313, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4313, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4313, __pyx_L1_error)
  }
  mju_rotVecMat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_mat.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4312
 *     return mju_dist3(&pos1[0], &pos2[0])
 * 
 * def _mju_rotVecMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_rotVecMat(&res[0], &vec[0], &mat[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_rotVecMat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4315
 *     mju_rotVecMat(&res[0], &vec[0], &mat[0])
 * 
 * def _mju_rotVecMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_rotVecMatT(&res[0], &vec[0], &mat[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_325_mju_rotVecMatT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_325_mju_rotVecMatT = {"_mju_rotVecMatT", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_325_mju_rotVecMatT, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_325_mju_rotVecMatT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyArrayObject *__pyx_v_mat = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_rotVecMatT (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_mat,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rotVecMatT", 1, 3, 3, 1); __PYX_ERR(3, 4315, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rotVecMatT", 1, 3, 3, 2); __PYX_ERR(3, 4315, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_rotVecMatT") < 0)) __PYX_ERR(3, 4315, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_mat = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_rotVecMatT", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4315, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_rotVecMatT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4315, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4315, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4315, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_324_mju_rotVecMatT(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_mat);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_324_mju_rotVecMatT(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, PyArrayObject *__pyx_v_mat) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_rotVecMatT", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4315, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4315, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4315, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4316
 * 
 * def _mju_rotVecMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):
 *     mju_rotVecMatT(&res[0], &vec[0], &mat[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_cross(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] a, np.ndarray[np.float64_t, mode="c", ndim=1] b):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4316, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4316, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4316, __pyx_L1_error)
  }
  mju_rotVecMatT((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_mat.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4315
 *     mju_rotVecMat(&res[0], &vec[0], &mat[0])
 * 
 * def _mju_rotVecMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_rotVecMatT(&res[0], &vec[0], &mat[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_rotVecMatT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4318
 *     mju_rotVecMatT(&res[0], &vec[0], &mat[0])
 * 
 * def _mju_cross(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] a, np.ndarray[np.float64_t, mode="c", ndim=1] b):             # <<<<<<<<<<<<<<
 *     mju_cross(&res[0], &a[0], &b[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_327_mju_cross(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_327_mju_cross = {"_mju_cross", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_327_mju_cross, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_327_mju_cross(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_b = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_cross (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_a,&__pyx_n_s_b,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_cross", 1, 3, 3, 1); __PYX_ERR(3, 4318, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_cross", 1, 3, 3, 2); __PYX_ERR(3, 4318, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_cross") < 0)) __PYX_ERR(3, 4318, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_a = ((PyArrayObject *)values[1]);
    __pyx_v_b = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_cross", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4318, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_cross", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4318, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_a), __pyx_ptype_5numpy_ndarray, 1, "a", 0))) __PYX_ERR(3, 4318, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_5numpy_ndarray, 1, "b", 0))) __PYX_ERR(3, 4318, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_326_mju_cross(__pyx_self, __pyx_v_res, __pyx_v_a, __pyx_v_b);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_326_mju_cross(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_a, PyArrayObject *__pyx_v_b) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_b;
  __Pyx_Buffer __pyx_pybuffer_b;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_cross", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_b.pybuffer.buf = NULL;
  __pyx_pybuffer_b.refcount = 0;
  __pyx_pybuffernd_b.data = NULL;
  __pyx_pybuffernd_b.rcbuffer = &__pyx_pybuffer_b;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4318, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4318, __pyx_L1_error)
  }
  __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_b.rcbuffer->pybuffer, (PyObject*)__pyx_v_b, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4318, __pyx_L1_error)
  }
  __pyx_pybuffernd_b.diminfo[0].strides = __pyx_pybuffernd_b.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_b.diminfo[0].shape = __pyx_pybuffernd_b.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4319
 * 
 * def _mju_cross(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] a, np.ndarray[np.float64_t, mode="c", ndim=1] b):
 *     mju_cross(&res[0], &a[0], &b[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_zero4(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4319, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_a.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_a.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4319, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_b.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_b.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4319, __pyx_L1_error)
  }
  mju_cross((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_a.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_b.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_b.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4318
 *     mju_rotVecMatT(&res[0], &vec[0], &mat[0])
 * 
 * def _mju_cross(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] a, np.ndarray[np.float64_t, mode="c", ndim=1] b):             # <<<<<<<<<<<<<<
 *     mju_cross(&res[0], &a[0], &b[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_b.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_cross", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_b.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4321
 *     mju_cross(&res[0], &a[0], &b[0])
 * 
 * def _mju_zero4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_zero4(&res[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_329_mju_zero4(PyObject *__pyx_self, PyObject *__pyx_v_res); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_329_mju_zero4 = {"_mju_zero4", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_329_mju_zero4, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_329_mju_zero4(PyObject *__pyx_self, PyObject *__pyx_v_res) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_zero4 (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4321, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_328_mju_zero4(__pyx_self, ((PyArrayObject *)__pyx_v_res));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_328_mju_zero4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_zero4", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4321, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4322
 * 
 * def _mju_zero4(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 *     mju_zero4(&res[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_unit4(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4322, __pyx_L1_error)
  }
  mju_zero4((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4321
 *     mju_cross(&res[0], &a[0], &b[0])
 * 
 * def _mju_zero4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_zero4(&res[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_zero4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4324
 *     mju_zero4(&res[0])
 * 
 * def _mju_unit4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_unit4(&res[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_331_mju_unit4(PyObject *__pyx_self, PyObject *__pyx_v_res); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_331_mju_unit4 = {"_mju_unit4", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_331_mju_unit4, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_331_mju_unit4(PyObject *__pyx_self, PyObject *__pyx_v_res) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_unit4 (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4324, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_330_mju_unit4(__pyx_self, ((PyArrayObject *)__pyx_v_res));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_330_mju_unit4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_unit4", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4324, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4325
 * 
 * def _mju_unit4(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 *     mju_unit4(&res[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_copy4(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4325, __pyx_L1_error)
  }
  mju_unit4((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4324
 *     mju_zero4(&res[0])
 * 
 * def _mju_unit4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_unit4(&res[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_unit4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4327
 *     mju_unit4(&res[0])
 * 
 * def _mju_copy4(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):             # <<<<<<<<<<<<<<
 *     mju_copy4(&res[0], &data[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_333_mju_copy4(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_333_mju_copy4 = {"_mju_copy4", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_333_mju_copy4, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_333_mju_copy4(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_data = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_copy4 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_data,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_copy4", 1, 2, 2, 1); __PYX_ERR(3, 4327, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_copy4") < 0)) __PYX_ERR(3, 4327, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_data = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_copy4", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4327, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_copy4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4327, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) __PYX_ERR(3, 4327, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_332_mju_copy4(__pyx_self, __pyx_v_res, __pyx_v_data);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_332_mju_copy4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_data) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_data;
  __Pyx_Buffer __pyx_pybuffer_data;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_copy4", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_data.pybuffer.buf = NULL;
  __pyx_pybuffer_data.refcount = 0;
  __pyx_pybuffernd_data.data = NULL;
  __pyx_pybuffernd_data.rcbuffer = &__pyx_pybuffer_data;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4327, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_data.rcbuffer->pybuffer, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4327, __pyx_L1_error)
  }
  __pyx_pybuffernd_data.diminfo[0].strides = __pyx_pybuffernd_data.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_data.diminfo[0].shape = __pyx_pybuffernd_data.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4328
 * 
 * def _mju_copy4(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):
 *     mju_copy4(&res[0], &data[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_normalize4(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4328, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_data.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_data.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4328, __pyx_L1_error)
  }
  mju_copy4((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_data.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_data.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4327
 *     mju_unit4(&res[0])
 * 
 * def _mju_copy4(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):             # <<<<<<<<<<<<<<
 *     mju_copy4(&res[0], &data[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_data.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_copy4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_data.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4330
 *     mju_copy4(&res[0], &data[0])
 * 
 * def _mju_normalize4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     return mju_normalize4(&res[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_335_mju_normalize4(PyObject *__pyx_self, PyObject *__pyx_v_res); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_335_mju_normalize4 = {"_mju_normalize4", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_335_mju_normalize4, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_335_mju_normalize4(PyObject *__pyx_self, PyObject *__pyx_v_res) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_normalize4 (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4330, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_334_mju_normalize4(__pyx_self, ((PyArrayObject *)__pyx_v_res));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_334_mju_normalize4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_normalize4", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4330, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4331
 * 
 * def _mju_normalize4(np.ndarray[np.float64_t, mode="c", ndim=1] res):
 *     return mju_normalize4(&res[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_zero(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4331, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(mju_normalize4((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4330
 *     mju_copy4(&res[0], &data[0])
 * 
 * def _mju_normalize4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     return mju_normalize4(&res[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_normalize4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4333
 *     return mju_normalize4(&res[0])
 * 
 * def _mju_zero(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     mju_zero(&res[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_337_mju_zero(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_337_mju_zero = {"_mju_zero", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_337_mju_zero, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_337_mju_zero(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_zero (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_n,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_zero", 1, 2, 2, 1); __PYX_ERR(3, 4333, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_zero") < 0)) __PYX_ERR(3, 4333, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4333, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_zero", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4333, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_zero", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4333, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_336_mju_zero(__pyx_self, __pyx_v_res, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_336_mju_zero(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_zero", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4333, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4334
 * 
 * def _mju_zero(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):
 *     mju_zero(&res[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_copy(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4334, __pyx_L1_error)
  }
  mju_zero((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4333
 *     return mju_normalize4(&res[0])
 * 
 * def _mju_zero(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     mju_zero(&res[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_zero", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4336
 *     mju_zero(&res[0], n)
 * 
 * def _mju_copy(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data, int n):             # <<<<<<<<<<<<<<
 *     mju_copy(&res[0], &data[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_339_mju_copy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_339_mju_copy = {"_mju_copy", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_339_mju_copy, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_339_mju_copy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_data = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_copy (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_data,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_copy", 1, 3, 3, 1); __PYX_ERR(3, 4336, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_copy", 1, 3, 3, 2); __PYX_ERR(3, 4336, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_copy") < 0)) __PYX_ERR(3, 4336, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_data = ((PyArrayObject *)values[1]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4336, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_copy", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4336, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4336, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) __PYX_ERR(3, 4336, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_338_mju_copy(__pyx_self, __pyx_v_res, __pyx_v_data, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_338_mju_copy(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_data, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_data;
  __Pyx_Buffer __pyx_pybuffer_data;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_copy", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_data.pybuffer.buf = NULL;
  __pyx_pybuffer_data.refcount = 0;
  __pyx_pybuffernd_data.data = NULL;
  __pyx_pybuffernd_data.rcbuffer = &__pyx_pybuffer_data;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4336, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_data.rcbuffer->pybuffer, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4336, __pyx_L1_error)
  }
  __pyx_pybuffernd_data.diminfo[0].strides = __pyx_pybuffernd_data.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_data.diminfo[0].shape = __pyx_pybuffernd_data.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4337
 * 
 * def _mju_copy(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data, int n):
 *     mju_copy(&res[0], &data[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_scl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4337, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_data.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_data.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4337, __pyx_L1_error)
  }
  mju_copy((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_data.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_data.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4336
 *     mju_zero(&res[0], n)
 * 
 * def _mju_copy(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data, int n):             # <<<<<<<<<<<<<<
 *     mju_copy(&res[0], &data[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_data.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_data.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4339
 *     mju_copy(&res[0], &data[0], n)
 * 
 * def _mju_scl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_scl(&res[0], &vec[0], scl, n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_341_mju_scl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_341_mju_scl = {"_mju_scl", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_341_mju_scl, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_341_mju_scl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  float __pyx_v_scl;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_scl (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_scl,&__pyx_n_s_n,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_scl", 1, 4, 4, 1); __PYX_ERR(3, 4339, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scl)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_scl", 1, 4, 4, 2); __PYX_ERR(3, 4339, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_scl", 1, 4, 4, 3); __PYX_ERR(3, 4339, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_scl") < 0)) __PYX_ERR(3, 4339, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_scl = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_scl == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4339, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4339, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_scl", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4339, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_scl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4339, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4339, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_340_mju_scl(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_scl, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_340_mju_scl(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, float __pyx_v_scl, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_scl", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4339, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4339, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4340
 * 
 * def _mju_scl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):
 *     mju_scl(&res[0], &vec[0], scl, n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_add(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4340, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4340, __pyx_L1_error)
  }
  mju_scl((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_scl, __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4339
 *     mju_copy(&res[0], &data[0], n)
 * 
 * def _mju_scl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_scl(&res[0], &vec[0], scl, n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_scl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4342
 *     mju_scl(&res[0], &vec[0], scl, n)
 * 
 * def _mju_add(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     mju_add(&res[0], &vec1[0], &vec2[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_343_mju_add(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_343_mju_add = {"_mju_add", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_343_mju_add, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_343_mju_add(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec1 = 0;
  PyArrayObject *__pyx_v_vec2 = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_add (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec1,&__pyx_n_s_vec2,&__pyx_n_s_n,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_add", 1, 4, 4, 1); __PYX_ERR(3, 4342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_add", 1, 4, 4, 2); __PYX_ERR(3, 4342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_add", 1, 4, 4, 3); __PYX_ERR(3, 4342, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_add") < 0)) __PYX_ERR(3, 4342, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec1 = ((PyArrayObject *)values[1]);
    __pyx_v_vec2 = ((PyArrayObject *)values[2]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4342, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_add", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4342, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_add", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4342, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec1), __pyx_ptype_5numpy_ndarray, 1, "vec1", 0))) __PYX_ERR(3, 4342, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec2), __pyx_ptype_5numpy_ndarray, 1, "vec2", 0))) __PYX_ERR(3, 4342, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_342_mju_add(__pyx_self, __pyx_v_res, __pyx_v_vec1, __pyx_v_vec2, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_342_mju_add(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec1;
  __Pyx_Buffer __pyx_pybuffer_vec1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec2;
  __Pyx_Buffer __pyx_pybuffer_vec2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_add", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec1.pybuffer.buf = NULL;
  __pyx_pybuffer_vec1.refcount = 0;
  __pyx_pybuffernd_vec1.data = NULL;
  __pyx_pybuffernd_vec1.rcbuffer = &__pyx_pybuffer_vec1;
  __pyx_pybuffer_vec2.pybuffer.buf = NULL;
  __pyx_pybuffer_vec2.refcount = 0;
  __pyx_pybuffernd_vec2.data = NULL;
  __pyx_pybuffernd_vec2.rcbuffer = &__pyx_pybuffer_vec2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4342, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4342, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec1.diminfo[0].strides = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec1.diminfo[0].shape = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4342, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec2.diminfo[0].strides = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec2.diminfo[0].shape = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4343
 * 
 * def _mju_add(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):
 *     mju_add(&res[0], &vec1[0], &vec2[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_sub(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4343, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4343, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vec2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vec2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4343, __pyx_L1_error)
  }
  mju_add((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vec2.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4342
 *     mju_scl(&res[0], &vec[0], scl, n)
 * 
 * def _mju_add(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     mju_add(&res[0], &vec1[0], &vec2[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_add", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4345
 *     mju_add(&res[0], &vec1[0], &vec2[0], n)
 * 
 * def _mju_sub(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     mju_sub(&res[0], &vec1[0], &vec2[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_345_mju_sub(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_345_mju_sub = {"_mju_sub", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_345_mju_sub, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_345_mju_sub(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec1 = 0;
  PyArrayObject *__pyx_v_vec2 = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_sub (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec1,&__pyx_n_s_vec2,&__pyx_n_s_n,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_sub", 1, 4, 4, 1); __PYX_ERR(3, 4345, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_sub", 1, 4, 4, 2); __PYX_ERR(3, 4345, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_sub", 1, 4, 4, 3); __PYX_ERR(3, 4345, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_sub") < 0)) __PYX_ERR(3, 4345, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec1 = ((PyArrayObject *)values[1]);
    __pyx_v_vec2 = ((PyArrayObject *)values[2]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4345, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_sub", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4345, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_sub", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4345, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec1), __pyx_ptype_5numpy_ndarray, 1, "vec1", 0))) __PYX_ERR(3, 4345, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec2), __pyx_ptype_5numpy_ndarray, 1, "vec2", 0))) __PYX_ERR(3, 4345, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_344_mju_sub(__pyx_self, __pyx_v_res, __pyx_v_vec1, __pyx_v_vec2, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_344_mju_sub(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec1;
  __Pyx_Buffer __pyx_pybuffer_vec1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec2;
  __Pyx_Buffer __pyx_pybuffer_vec2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_sub", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec1.pybuffer.buf = NULL;
  __pyx_pybuffer_vec1.refcount = 0;
  __pyx_pybuffernd_vec1.data = NULL;
  __pyx_pybuffernd_vec1.rcbuffer = &__pyx_pybuffer_vec1;
  __pyx_pybuffer_vec2.pybuffer.buf = NULL;
  __pyx_pybuffer_vec2.refcount = 0;
  __pyx_pybuffernd_vec2.data = NULL;
  __pyx_pybuffernd_vec2.rcbuffer = &__pyx_pybuffer_vec2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4345, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4345, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec1.diminfo[0].strides = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec1.diminfo[0].shape = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4345, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec2.diminfo[0].strides = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec2.diminfo[0].shape = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4346
 * 
 * def _mju_sub(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):
 *     mju_sub(&res[0], &vec1[0], &vec2[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_addTo(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4346, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4346, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vec2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vec2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4346, __pyx_L1_error)
  }
  mju_sub((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vec2.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4345
 *     mju_add(&res[0], &vec1[0], &vec2[0], n)
 * 
 * def _mju_sub(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     mju_sub(&res[0], &vec1[0], &vec2[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_sub", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4348
 *     mju_sub(&res[0], &vec1[0], &vec2[0], n)
 * 
 * def _mju_addTo(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_addTo(&res[0], &vec[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_347_mju_addTo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_347_mju_addTo = {"_mju_addTo", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_347_mju_addTo, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_347_mju_addTo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_addTo (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addTo", 1, 3, 3, 1); __PYX_ERR(3, 4348, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addTo", 1, 3, 3, 2); __PYX_ERR(3, 4348, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_addTo") < 0)) __PYX_ERR(3, 4348, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4348, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_addTo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4348, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4348, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4348, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_346_mju_addTo(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_346_mju_addTo(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_addTo", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4348, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4348, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4349
 * 
 * def _mju_addTo(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):
 *     mju_addTo(&res[0], &vec[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_subFrom(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4349, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4349, __pyx_L1_error)
  }
  mju_addTo((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4348
 *     mju_sub(&res[0], &vec1[0], &vec2[0], n)
 * 
 * def _mju_addTo(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_addTo(&res[0], &vec[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4351
 *     mju_addTo(&res[0], &vec[0], n)
 * 
 * def _mju_subFrom(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_subFrom(&res[0], &vec[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_349_mju_subFrom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_349_mju_subFrom = {"_mju_subFrom", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_349_mju_subFrom, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_349_mju_subFrom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_subFrom (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_subFrom", 1, 3, 3, 1); __PYX_ERR(3, 4351, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_subFrom", 1, 3, 3, 2); __PYX_ERR(3, 4351, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_subFrom") < 0)) __PYX_ERR(3, 4351, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4351, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_subFrom", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4351, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_subFrom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4351, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4351, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_348_mju_subFrom(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_348_mju_subFrom(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_subFrom", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4351, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4351, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4352
 * 
 * def _mju_subFrom(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):
 *     mju_subFrom(&res[0], &vec[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_addToScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4352, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4352, __pyx_L1_error)
  }
  mju_subFrom((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4351
 *     mju_addTo(&res[0], &vec[0], n)
 * 
 * def _mju_subFrom(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_subFrom(&res[0], &vec[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_subFrom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4354
 *     mju_subFrom(&res[0], &vec[0], n)
 * 
 * def _mju_addToScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_addToScl(&res[0], &vec[0], scl, n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_351_mju_addToScl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_351_mju_addToScl = {"_mju_addToScl", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_351_mju_addToScl, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_351_mju_addToScl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  float __pyx_v_scl;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_addToScl (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_scl,&__pyx_n_s_n,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addToScl", 1, 4, 4, 1); __PYX_ERR(3, 4354, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scl)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addToScl", 1, 4, 4, 2); __PYX_ERR(3, 4354, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addToScl", 1, 4, 4, 3); __PYX_ERR(3, 4354, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_addToScl") < 0)) __PYX_ERR(3, 4354, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_scl = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_scl == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4354, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4354, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_addToScl", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4354, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addToScl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4354, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4354, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_350_mju_addToScl(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_scl, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_350_mju_addToScl(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, float __pyx_v_scl, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_addToScl", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4354, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4354, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4355
 * 
 * def _mju_addToScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):
 *     mju_addToScl(&res[0], &vec[0], scl, n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_addScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4355, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4355, __pyx_L1_error)
  }
  mju_addToScl((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_scl, __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4354
 *     mju_subFrom(&res[0], &vec[0], n)
 * 
 * def _mju_addToScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_addToScl(&res[0], &vec[0], scl, n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addToScl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4357
 *     mju_addToScl(&res[0], &vec[0], scl, n)
 * 
 * def _mju_addScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_addScl(&res[0], &vec1[0], &vec2[0], scl, n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_353_mju_addScl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_353_mju_addScl = {"_mju_addScl", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_353_mju_addScl, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_353_mju_addScl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec1 = 0;
  PyArrayObject *__pyx_v_vec2 = 0;
  float __pyx_v_scl;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_addScl (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec1,&__pyx_n_s_vec2,&__pyx_n_s_scl,&__pyx_n_s_n,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addScl", 1, 5, 5, 1); __PYX_ERR(3, 4357, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addScl", 1, 5, 5, 2); __PYX_ERR(3, 4357, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scl)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addScl", 1, 5, 5, 3); __PYX_ERR(3, 4357, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_addScl", 1, 5, 5, 4); __PYX_ERR(3, 4357, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_addScl") < 0)) __PYX_ERR(3, 4357, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec1 = ((PyArrayObject *)values[1]);
    __pyx_v_vec2 = ((PyArrayObject *)values[2]);
    __pyx_v_scl = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_scl == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4357, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4357, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_addScl", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4357, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addScl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4357, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec1), __pyx_ptype_5numpy_ndarray, 1, "vec1", 0))) __PYX_ERR(3, 4357, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec2), __pyx_ptype_5numpy_ndarray, 1, "vec2", 0))) __PYX_ERR(3, 4357, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_352_mju_addScl(__pyx_self, __pyx_v_res, __pyx_v_vec1, __pyx_v_vec2, __pyx_v_scl, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_352_mju_addScl(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, float __pyx_v_scl, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec1;
  __Pyx_Buffer __pyx_pybuffer_vec1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec2;
  __Pyx_Buffer __pyx_pybuffer_vec2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_addScl", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec1.pybuffer.buf = NULL;
  __pyx_pybuffer_vec1.refcount = 0;
  __pyx_pybuffernd_vec1.data = NULL;
  __pyx_pybuffernd_vec1.rcbuffer = &__pyx_pybuffer_vec1;
  __pyx_pybuffer_vec2.pybuffer.buf = NULL;
  __pyx_pybuffer_vec2.refcount = 0;
  __pyx_pybuffernd_vec2.data = NULL;
  __pyx_pybuffernd_vec2.rcbuffer = &__pyx_pybuffer_vec2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4357, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4357, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec1.diminfo[0].strides = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec1.diminfo[0].shape = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4357, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec2.diminfo[0].strides = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec2.diminfo[0].shape = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4358
 * 
 * def _mju_addScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl, int n):
 *     mju_addScl(&res[0], &vec1[0], &vec2[0], scl, n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_normalize(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4358, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4358, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vec2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vec2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4358, __pyx_L1_error)
  }
  mju_addScl((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vec2.diminfo[0].strides))), __pyx_v_scl, __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4357
 *     mju_addToScl(&res[0], &vec[0], scl, n)
 * 
 * def _mju_addScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_addScl(&res[0], &vec1[0], &vec2[0], scl, n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_addScl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4360
 *     mju_addScl(&res[0], &vec1[0], &vec2[0], scl, n)
 * 
 * def _mju_normalize(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     return mju_normalize(&res[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_355_mju_normalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_355_mju_normalize = {"_mju_normalize", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_355_mju_normalize, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_355_mju_normalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_normalize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_n,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_normalize", 1, 2, 2, 1); __PYX_ERR(3, 4360, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_normalize") < 0)) __PYX_ERR(3, 4360, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4360, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_normalize", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4360, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4360, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_354_mju_normalize(__pyx_self, __pyx_v_res, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_354_mju_normalize(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_normalize", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4360, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4361
 * 
 * def _mju_normalize(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):
 *     return mju_normalize(&res[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_norm(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4361, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(mju_normalize((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), __pyx_v_n)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4360
 *     mju_addScl(&res[0], &vec1[0], &vec2[0], scl, n)
 * 
 * def _mju_normalize(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     return mju_normalize(&res[0], n)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4363
 *     return mju_normalize(&res[0], n)
 * 
 * def _mju_norm(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     return mju_norm(&res[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_357_mju_norm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_357_mju_norm = {"_mju_norm", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_357_mju_norm, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_357_mju_norm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_norm (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_n,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_norm", 1, 2, 2, 1); __PYX_ERR(3, 4363, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_norm") < 0)) __PYX_ERR(3, 4363, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4363, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_norm", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4363, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4363, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_356_mju_norm(__pyx_self, __pyx_v_res, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_356_mju_norm(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_norm", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4363, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4364
 * 
 * def _mju_norm(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):
 *     return mju_norm(&res[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_dot(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4364, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(mju_norm((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), __pyx_v_n)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4363
 *     return mju_normalize(&res[0], n)
 * 
 * def _mju_norm(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     return mju_norm(&res[0], n)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4366
 *     return mju_norm(&res[0], n)
 * 
 * def _mju_dot(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     return mju_dot(&vec1[0], &vec2[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_359_mju_dot(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_359_mju_dot = {"_mju_dot", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_359_mju_dot, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_359_mju_dot(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_vec1 = 0;
  PyArrayObject *__pyx_v_vec2 = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_dot (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vec1,&__pyx_n_s_vec2,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec1)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_dot", 1, 3, 3, 1); __PYX_ERR(3, 4366, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_dot", 1, 3, 3, 2); __PYX_ERR(3, 4366, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_dot") < 0)) __PYX_ERR(3, 4366, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_vec1 = ((PyArrayObject *)values[0]);
    __pyx_v_vec2 = ((PyArrayObject *)values[1]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4366, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_dot", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4366, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_dot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec1), __pyx_ptype_5numpy_ndarray, 1, "vec1", 0))) __PYX_ERR(3, 4366, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec2), __pyx_ptype_5numpy_ndarray, 1, "vec2", 0))) __PYX_ERR(3, 4366, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_358_mju_dot(__pyx_self, __pyx_v_vec1, __pyx_v_vec2, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_358_mju_dot(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_vec1, PyArrayObject *__pyx_v_vec2, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec1;
  __Pyx_Buffer __pyx_pybuffer_vec1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec2;
  __Pyx_Buffer __pyx_pybuffer_vec2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_mju_dot", 0);
  __pyx_pybuffer_vec1.pybuffer.buf = NULL;
  __pyx_pybuffer_vec1.refcount = 0;
  __pyx_pybuffernd_vec1.data = NULL;
  __pyx_pybuffernd_vec1.rcbuffer = &__pyx_pybuffer_vec1;
  __pyx_pybuffer_vec2.pybuffer.buf = NULL;
  __pyx_pybuffer_vec2.refcount = 0;
  __pyx_pybuffernd_vec2.data = NULL;
  __pyx_pybuffernd_vec2.rcbuffer = &__pyx_pybuffer_vec2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4366, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec1.diminfo[0].strides = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec1.diminfo[0].shape = __pyx_pybuffernd_vec1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4366, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec2.diminfo[0].strides = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec2.diminfo[0].shape = __pyx_pybuffernd_vec2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4367
 * 
 * def _mju_dot(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):
 *     return mju_dot(&vec1[0], &vec2[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_mulMatVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_vec1.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_vec1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4367, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec2.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4367, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(mju_dot((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec1.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_vec1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec2.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec2.diminfo[0].strides))), __pyx_v_n)); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 4367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4366
 *     return mju_norm(&res[0], n)
 * 
 * def _mju_dot(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     return mju_dot(&vec1[0], &vec2[0], n)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_dot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4369
 *     return mju_dot(&vec1[0], &vec2[0], n)
 * 
 * def _mju_mulMatVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_mulMatVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_361_mju_mulMatVec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_361_mju_mulMatVec = {"_mju_mulMatVec", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_361_mju_mulMatVec, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_361_mju_mulMatVec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_mat = 0;
  PyArrayObject *__pyx_v_vec = 0;
  int __pyx_v_nr;
  int __pyx_v_nc;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_mulMatVec (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_mat,&__pyx_n_s_vec,&__pyx_n_s_nr,&__pyx_n_s_nc,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatVec", 1, 5, 5, 1); __PYX_ERR(3, 4369, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatVec", 1, 5, 5, 2); __PYX_ERR(3, 4369, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatVec", 1, 5, 5, 3); __PYX_ERR(3, 4369, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatVec", 1, 5, 5, 4); __PYX_ERR(3, 4369, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_mulMatVec") < 0)) __PYX_ERR(3, 4369, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_mat = ((PyArrayObject *)values[1]);
    __pyx_v_vec = ((PyArrayObject *)values[2]);
    __pyx_v_nr = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nr == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4369, __pyx_L3_error)
    __pyx_v_nc = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_nc == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4369, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_mulMatVec", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4369, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4369, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4369, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4369, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_360_mju_mulMatVec(__pyx_self, __pyx_v_res, __pyx_v_mat, __pyx_v_vec, __pyx_v_nr, __pyx_v_nc);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_360_mju_mulMatVec(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_vec, int __pyx_v_nr, int __pyx_v_nc) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_mulMatVec", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4369, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4369, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4369, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4370
 * 
 * def _mju_mulMatVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):
 *     mju_mulMatVec(&res[0], &mat[0], &vec[0], nr, nc)             # <<<<<<<<<<<<<<
 * 
 * def _mju_mulMatTVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4370, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4370, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4370, __pyx_L1_error)
  }
  mju_mulMatVec((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_nr, __pyx_v_nc);

  /* "mujoco_py/generated/wrappers.pxi":4369
 *     return mju_dot(&vec1[0], &vec2[0], n)
 * 
 * def _mju_mulMatVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_mulMatVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4372
 *     mju_mulMatVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 * def _mju_mulMatTVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_mulMatTVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_363_mju_mulMatTVec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_363_mju_mulMatTVec = {"_mju_mulMatTVec", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_363_mju_mulMatTVec, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_363_mju_mulMatTVec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_mat = 0;
  PyArrayObject *__pyx_v_vec = 0;
  int __pyx_v_nr;
  int __pyx_v_nc;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_mulMatTVec (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_mat,&__pyx_n_s_vec,&__pyx_n_s_nr,&__pyx_n_s_nc,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatTVec", 1, 5, 5, 1); __PYX_ERR(3, 4372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatTVec", 1, 5, 5, 2); __PYX_ERR(3, 4372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatTVec", 1, 5, 5, 3); __PYX_ERR(3, 4372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatTVec", 1, 5, 5, 4); __PYX_ERR(3, 4372, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_mulMatTVec") < 0)) __PYX_ERR(3, 4372, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_mat = ((PyArrayObject *)values[1]);
    __pyx_v_vec = ((PyArrayObject *)values[2]);
    __pyx_v_nr = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nr == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4372, __pyx_L3_error)
    __pyx_v_nc = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_nc == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4372, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_mulMatTVec", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4372, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatTVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4372, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4372, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4372, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_362_mju_mulMatTVec(__pyx_self, __pyx_v_res, __pyx_v_mat, __pyx_v_vec, __pyx_v_nr, __pyx_v_nc);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_362_mju_mulMatTVec(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_vec, int __pyx_v_nr, int __pyx_v_nc) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_mulMatTVec", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4372, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4372, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4372, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4373
 * 
 * def _mju_mulMatTVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):
 *     mju_mulMatTVec(&res[0], &mat[0], &vec[0], nr, nc)             # <<<<<<<<<<<<<<
 * 
 * def _mju_transpose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4373, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4373, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4373, __pyx_L1_error)
  }
  mju_mulMatTVec((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_nr, __pyx_v_nc);

  /* "mujoco_py/generated/wrappers.pxi":4372
 *     mju_mulMatVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 * def _mju_mulMatTVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_mulMatTVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatTVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4375
 *     mju_mulMatTVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 * def _mju_transpose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_transpose(&res[0], &mat[0], nr, nc)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_365_mju_transpose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_365_mju_transpose = {"_mju_transpose", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_365_mju_transpose, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_365_mju_transpose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_mat = 0;
  int __pyx_v_nr;
  int __pyx_v_nc;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_transpose (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_mat,&__pyx_n_s_nr,&__pyx_n_s_nc,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_transpose", 1, 4, 4, 1); __PYX_ERR(3, 4375, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_transpose", 1, 4, 4, 2); __PYX_ERR(3, 4375, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_transpose", 1, 4, 4, 3); __PYX_ERR(3, 4375, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_transpose") < 0)) __PYX_ERR(3, 4375, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_mat = ((PyArrayObject *)values[1]);
    __pyx_v_nr = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nr == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4375, __pyx_L3_error)
    __pyx_v_nc = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nc == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4375, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_transpose", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4375, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_transpose", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4375, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4375, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_364_mju_transpose(__pyx_self, __pyx_v_res, __pyx_v_mat, __pyx_v_nr, __pyx_v_nc);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_364_mju_transpose(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, int __pyx_v_nr, int __pyx_v_nc) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_transpose", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4375, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4375, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4376
 * 
 * def _mju_transpose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):
 *     mju_transpose(&res[0], &mat[0], nr, nc)             # <<<<<<<<<<<<<<
 * 
 * def _mju_mulMatMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4376, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4376, __pyx_L1_error)
  }
  mju_transpose((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat.diminfo[0].strides))), __pyx_v_nr, __pyx_v_nc);

  /* "mujoco_py/generated/wrappers.pxi":4375
 *     mju_mulMatTVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 * def _mju_transpose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_transpose(&res[0], &mat[0], nr, nc)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_transpose", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4378
 *     mju_transpose(&res[0], &mat[0], nr, nc)
 * 
 * def _mju_mulMatMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):             # <<<<<<<<<<<<<<
 *     mju_mulMatMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_367_mju_mulMatMat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_367_mju_mulMatMat = {"_mju_mulMatMat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_367_mju_mulMatMat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_367_mju_mulMatMat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_mat1 = 0;
  PyArrayObject *__pyx_v_mat2 = 0;
  int __pyx_v_r1;
  int __pyx_v_c1;
  int __pyx_v_c2;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_mulMatMat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_mat1,&__pyx_n_s_mat2,&__pyx_n_s_r1,&__pyx_n_s_c1,&__pyx_n_s_c2,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMat", 1, 6, 6, 1); __PYX_ERR(3, 4378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMat", 1, 6, 6, 2); __PYX_ERR(3, 4378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_r1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMat", 1, 6, 6, 3); __PYX_ERR(3, 4378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_c1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMat", 1, 6, 6, 4); __PYX_ERR(3, 4378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_c2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMat", 1, 6, 6, 5); __PYX_ERR(3, 4378, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_mulMatMat") < 0)) __PYX_ERR(3, 4378, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_mat1 = ((PyArrayObject *)values[1]);
    __pyx_v_mat2 = ((PyArrayObject *)values[2]);
    __pyx_v_r1 = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_r1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4378, __pyx_L3_error)
    __pyx_v_c1 = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_c1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4378, __pyx_L3_error)
    __pyx_v_c2 = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_c2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4378, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_mulMatMat", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4378, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatMat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4378, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat1), __pyx_ptype_5numpy_ndarray, 1, "mat1", 0))) __PYX_ERR(3, 4378, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat2), __pyx_ptype_5numpy_ndarray, 1, "mat2", 0))) __PYX_ERR(3, 4378, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_366_mju_mulMatMat(__pyx_self, __pyx_v_res, __pyx_v_mat1, __pyx_v_mat2, __pyx_v_r1, __pyx_v_c1, __pyx_v_c2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_366_mju_mulMatMat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat1, PyArrayObject *__pyx_v_mat2, int __pyx_v_r1, int __pyx_v_c1, int __pyx_v_c2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat1;
  __Pyx_Buffer __pyx_pybuffer_mat1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat2;
  __Pyx_Buffer __pyx_pybuffer_mat2;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_mulMatMat", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_mat1.pybuffer.buf = NULL;
  __pyx_pybuffer_mat1.refcount = 0;
  __pyx_pybuffernd_mat1.data = NULL;
  __pyx_pybuffernd_mat1.rcbuffer = &__pyx_pybuffer_mat1;
  __pyx_pybuffer_mat2.pybuffer.buf = NULL;
  __pyx_pybuffer_mat2.refcount = 0;
  __pyx_pybuffernd_mat2.data = NULL;
  __pyx_pybuffernd_mat2.rcbuffer = &__pyx_pybuffer_mat2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4378, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat1.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4378, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat1.diminfo[0].strides = __pyx_pybuffernd_mat1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat1.diminfo[0].shape = __pyx_pybuffernd_mat1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat2.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4378, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat2.diminfo[0].strides = __pyx_pybuffernd_mat2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat2.diminfo[0].shape = __pyx_pybuffernd_mat2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4379
 * 
 * def _mju_mulMatMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):
 *     mju_mulMatMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)             # <<<<<<<<<<<<<<
 * 
 * def _mju_mulMatMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int r2):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4379, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4379, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_mat2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_mat2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4379, __pyx_L1_error)
  }
  mju_mulMatMat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_mat2.diminfo[0].strides))), __pyx_v_r1, __pyx_v_c1, __pyx_v_c2);

  /* "mujoco_py/generated/wrappers.pxi":4378
 *     mju_transpose(&res[0], &mat[0], nr, nc)
 * 
 * def _mju_mulMatMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):             # <<<<<<<<<<<<<<
 *     mju_mulMatMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat2.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatMat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat2.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4381
 *     mju_mulMatMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 * def _mju_mulMatMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int r2):             # <<<<<<<<<<<<<<
 *     mju_mulMatMatT(&res[0], &mat1[0], &mat2[0], r1, c1, r2)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_369_mju_mulMatMatT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_369_mju_mulMatMatT = {"_mju_mulMatMatT", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_369_mju_mulMatMatT, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_369_mju_mulMatMatT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_mat1 = 0;
  PyArrayObject *__pyx_v_mat2 = 0;
  int __pyx_v_r1;
  int __pyx_v_c1;
  int __pyx_v_r2;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_mulMatMatT (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_mat1,&__pyx_n_s_mat2,&__pyx_n_s_r1,&__pyx_n_s_c1,&__pyx_n_s_r2,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMatT", 1, 6, 6, 1); __PYX_ERR(3, 4381, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMatT", 1, 6, 6, 2); __PYX_ERR(3, 4381, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_r1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMatT", 1, 6, 6, 3); __PYX_ERR(3, 4381, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_c1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMatT", 1, 6, 6, 4); __PYX_ERR(3, 4381, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_r2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatMatT", 1, 6, 6, 5); __PYX_ERR(3, 4381, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_mulMatMatT") < 0)) __PYX_ERR(3, 4381, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_mat1 = ((PyArrayObject *)values[1]);
    __pyx_v_mat2 = ((PyArrayObject *)values[2]);
    __pyx_v_r1 = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_r1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4381, __pyx_L3_error)
    __pyx_v_c1 = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_c1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4381, __pyx_L3_error)
    __pyx_v_r2 = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_r2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4381, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_mulMatMatT", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4381, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatMatT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4381, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat1), __pyx_ptype_5numpy_ndarray, 1, "mat1", 0))) __PYX_ERR(3, 4381, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat2), __pyx_ptype_5numpy_ndarray, 1, "mat2", 0))) __PYX_ERR(3, 4381, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_368_mju_mulMatMatT(__pyx_self, __pyx_v_res, __pyx_v_mat1, __pyx_v_mat2, __pyx_v_r1, __pyx_v_c1, __pyx_v_r2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_368_mju_mulMatMatT(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat1, PyArrayObject *__pyx_v_mat2, int __pyx_v_r1, int __pyx_v_c1, int __pyx_v_r2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat1;
  __Pyx_Buffer __pyx_pybuffer_mat1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat2;
  __Pyx_Buffer __pyx_pybuffer_mat2;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_mulMatMatT", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_mat1.pybuffer.buf = NULL;
  __pyx_pybuffer_mat1.refcount = 0;
  __pyx_pybuffernd_mat1.data = NULL;
  __pyx_pybuffernd_mat1.rcbuffer = &__pyx_pybuffer_mat1;
  __pyx_pybuffer_mat2.pybuffer.buf = NULL;
  __pyx_pybuffer_mat2.refcount = 0;
  __pyx_pybuffernd_mat2.data = NULL;
  __pyx_pybuffernd_mat2.rcbuffer = &__pyx_pybuffer_mat2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4381, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat1.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4381, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat1.diminfo[0].strides = __pyx_pybuffernd_mat1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat1.diminfo[0].shape = __pyx_pybuffernd_mat1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat2.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4381, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat2.diminfo[0].strides = __pyx_pybuffernd_mat2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat2.diminfo[0].shape = __pyx_pybuffernd_mat2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4382
 * 
 * def _mju_mulMatMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int r2):
 *     mju_mulMatMatT(&res[0], &mat1[0], &mat2[0], r1, c1, r2)             # <<<<<<<<<<<<<<
 * 
 * def _mju_mulMatTMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4382, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4382, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_mat2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_mat2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4382, __pyx_L1_error)
  }
  mju_mulMatMatT((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_mat2.diminfo[0].strides))), __pyx_v_r1, __pyx_v_c1, __pyx_v_r2);

  /* "mujoco_py/generated/wrappers.pxi":4381
 *     mju_mulMatMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 * def _mju_mulMatMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int r2):             # <<<<<<<<<<<<<<
 *     mju_mulMatMatT(&res[0], &mat1[0], &mat2[0], r1, c1, r2)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat2.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatMatT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat2.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4384
 *     mju_mulMatMatT(&res[0], &mat1[0], &mat2[0], r1, c1, r2)
 * 
 * def _mju_mulMatTMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):             # <<<<<<<<<<<<<<
 *     mju_mulMatTMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_371_mju_mulMatTMat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_371_mju_mulMatTMat = {"_mju_mulMatTMat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_371_mju_mulMatTMat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_371_mju_mulMatTMat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_mat1 = 0;
  PyArrayObject *__pyx_v_mat2 = 0;
  int __pyx_v_r1;
  int __pyx_v_c1;
  int __pyx_v_c2;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_mulMatTMat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_mat1,&__pyx_n_s_mat2,&__pyx_n_s_r1,&__pyx_n_s_c1,&__pyx_n_s_c2,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatTMat", 1, 6, 6, 1); __PYX_ERR(3, 4384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatTMat", 1, 6, 6, 2); __PYX_ERR(3, 4384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_r1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatTMat", 1, 6, 6, 3); __PYX_ERR(3, 4384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_c1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatTMat", 1, 6, 6, 4); __PYX_ERR(3, 4384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_c2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulMatTMat", 1, 6, 6, 5); __PYX_ERR(3, 4384, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_mulMatTMat") < 0)) __PYX_ERR(3, 4384, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_mat1 = ((PyArrayObject *)values[1]);
    __pyx_v_mat2 = ((PyArrayObject *)values[2]);
    __pyx_v_r1 = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_r1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4384, __pyx_L3_error)
    __pyx_v_c1 = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_c1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4384, __pyx_L3_error)
    __pyx_v_c2 = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_c2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4384, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_mulMatTMat", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4384, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatTMat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4384, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat1), __pyx_ptype_5numpy_ndarray, 1, "mat1", 0))) __PYX_ERR(3, 4384, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat2), __pyx_ptype_5numpy_ndarray, 1, "mat2", 0))) __PYX_ERR(3, 4384, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_370_mju_mulMatTMat(__pyx_self, __pyx_v_res, __pyx_v_mat1, __pyx_v_mat2, __pyx_v_r1, __pyx_v_c1, __pyx_v_c2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_370_mju_mulMatTMat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat1, PyArrayObject *__pyx_v_mat2, int __pyx_v_r1, int __pyx_v_c1, int __pyx_v_c2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat1;
  __Pyx_Buffer __pyx_pybuffer_mat1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat2;
  __Pyx_Buffer __pyx_pybuffer_mat2;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_mulMatTMat", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_mat1.pybuffer.buf = NULL;
  __pyx_pybuffer_mat1.refcount = 0;
  __pyx_pybuffernd_mat1.data = NULL;
  __pyx_pybuffernd_mat1.rcbuffer = &__pyx_pybuffer_mat1;
  __pyx_pybuffer_mat2.pybuffer.buf = NULL;
  __pyx_pybuffer_mat2.refcount = 0;
  __pyx_pybuffernd_mat2.data = NULL;
  __pyx_pybuffernd_mat2.rcbuffer = &__pyx_pybuffer_mat2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4384, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat1.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4384, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat1.diminfo[0].strides = __pyx_pybuffernd_mat1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat1.diminfo[0].shape = __pyx_pybuffernd_mat1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat2.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4384, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat2.diminfo[0].strides = __pyx_pybuffernd_mat2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat2.diminfo[0].shape = __pyx_pybuffernd_mat2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4385
 * 
 * def _mju_mulMatTMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):
 *     mju_mulMatTMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)             # <<<<<<<<<<<<<<
 * 
 * def _mju_sqrMatTD(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] diag, int nr, int nc):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4385, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4385, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_mat2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_mat2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4385, __pyx_L1_error)
  }
  mju_mulMatTMat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_mat2.diminfo[0].strides))), __pyx_v_r1, __pyx_v_c1, __pyx_v_c2);

  /* "mujoco_py/generated/wrappers.pxi":4384
 *     mju_mulMatMatT(&res[0], &mat1[0], &mat2[0], r1, c1, r2)
 * 
 * def _mju_mulMatTMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):             # <<<<<<<<<<<<<<
 *     mju_mulMatTMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat2.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulMatTMat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat2.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4387
 *     mju_mulMatTMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 * def _mju_sqrMatTD(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] diag, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_sqrMatTD(&res[0], &mat[0], &diag[0], nr, nc)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_373_mju_sqrMatTD(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_373_mju_sqrMatTD = {"_mju_sqrMatTD", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_373_mju_sqrMatTD, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_373_mju_sqrMatTD(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_mat = 0;
  PyArrayObject *__pyx_v_diag = 0;
  int __pyx_v_nr;
  int __pyx_v_nc;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_sqrMatTD (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_mat,&__pyx_n_s_diag,&__pyx_n_s_nr,&__pyx_n_s_nc,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_sqrMatTD", 1, 5, 5, 1); __PYX_ERR(3, 4387, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_diag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_sqrMatTD", 1, 5, 5, 2); __PYX_ERR(3, 4387, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_sqrMatTD", 1, 5, 5, 3); __PYX_ERR(3, 4387, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_sqrMatTD", 1, 5, 5, 4); __PYX_ERR(3, 4387, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_sqrMatTD") < 0)) __PYX_ERR(3, 4387, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_mat = ((PyArrayObject *)values[1]);
    __pyx_v_diag = ((PyArrayObject *)values[2]);
    __pyx_v_nr = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nr == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4387, __pyx_L3_error)
    __pyx_v_nc = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_nc == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4387, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_sqrMatTD", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4387, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_sqrMatTD", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4387, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4387, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_diag), __pyx_ptype_5numpy_ndarray, 1, "diag", 0))) __PYX_ERR(3, 4387, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_372_mju_sqrMatTD(__pyx_self, __pyx_v_res, __pyx_v_mat, __pyx_v_diag, __pyx_v_nr, __pyx_v_nc);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_372_mju_sqrMatTD(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_diag, int __pyx_v_nr, int __pyx_v_nc) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_diag;
  __Pyx_Buffer __pyx_pybuffer_diag;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_sqrMatTD", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  __pyx_pybuffer_diag.pybuffer.buf = NULL;
  __pyx_pybuffer_diag.refcount = 0;
  __pyx_pybuffernd_diag.data = NULL;
  __pyx_pybuffernd_diag.rcbuffer = &__pyx_pybuffer_diag;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4387, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4387, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_diag.rcbuffer->pybuffer, (PyObject*)__pyx_v_diag, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4387, __pyx_L1_error)
  }
  __pyx_pybuffernd_diag.diminfo[0].strides = __pyx_pybuffernd_diag.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_diag.diminfo[0].shape = __pyx_pybuffernd_diag.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4388
 * 
 * def _mju_sqrMatTD(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] diag, int nr, int nc):
 *     mju_sqrMatTD(&res[0], &mat[0], &diag[0], nr, nc)             # <<<<<<<<<<<<<<
 * 
 * def _mju_transformSpatial(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int flg_force, np.ndarray[np.float64_t, mode="c", ndim=1] newpos, np.ndarray[np.float64_t, mode="c", ndim=1] oldpos, np.ndarray[np.float64_t, mode="c", ndim=1] rotnew2old):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4388, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4388, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_diag.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_diag.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4388, __pyx_L1_error)
  }
  mju_sqrMatTD((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_diag.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_diag.diminfo[0].strides))), __pyx_v_nr, __pyx_v_nc);

  /* "mujoco_py/generated/wrappers.pxi":4387
 *     mju_mulMatTMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 * def _mju_sqrMatTD(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] diag, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_sqrMatTD(&res[0], &mat[0], &diag[0], nr, nc)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_diag.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_sqrMatTD", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_diag.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4390
 *     mju_sqrMatTD(&res[0], &mat[0], &diag[0], nr, nc)
 * 
 * def _mju_transformSpatial(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int flg_force, np.ndarray[np.float64_t, mode="c", ndim=1] newpos, np.ndarray[np.float64_t, mode="c", ndim=1] oldpos, np.ndarray[np.float64_t, mode="c", ndim=1] rotnew2old):             # <<<<<<<<<<<<<<
 *     mju_transformSpatial(&res[0], &vec[0], flg_force, &newpos[0], &oldpos[0], &rotnew2old[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_375_mju_transformSpatial(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_375_mju_transformSpatial = {"_mju_transformSpatial", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_375_mju_transformSpatial, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_375_mju_transformSpatial(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  int __pyx_v_flg_force;
  PyArrayObject *__pyx_v_newpos = 0;
  PyArrayObject *__pyx_v_oldpos = 0;
  PyArrayObject *__pyx_v_rotnew2old = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_transformSpatial (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_flg_force,&__pyx_n_s_newpos,&__pyx_n_s_oldpos,&__pyx_n_s_rotnew2old,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_transformSpatial", 1, 6, 6, 1); __PYX_ERR(3, 4390, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_force)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_transformSpatial", 1, 6, 6, 2); __PYX_ERR(3, 4390, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_newpos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_transformSpatial", 1, 6, 6, 3); __PYX_ERR(3, 4390, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_oldpos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_transformSpatial", 1, 6, 6, 4); __PYX_ERR(3, 4390, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rotnew2old)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_transformSpatial", 1, 6, 6, 5); __PYX_ERR(3, 4390, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_transformSpatial") < 0)) __PYX_ERR(3, 4390, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_flg_force = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_flg_force == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4390, __pyx_L3_error)
    __pyx_v_newpos = ((PyArrayObject *)values[3]);
    __pyx_v_oldpos = ((PyArrayObject *)values[4]);
    __pyx_v_rotnew2old = ((PyArrayObject *)values[5]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_transformSpatial", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4390, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_transformSpatial", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4390, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4390, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_newpos), __pyx_ptype_5numpy_ndarray, 1, "newpos", 0))) __PYX_ERR(3, 4390, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_oldpos), __pyx_ptype_5numpy_ndarray, 1, "oldpos", 0))) __PYX_ERR(3, 4390, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rotnew2old), __pyx_ptype_5numpy_ndarray, 1, "rotnew2old", 0))) __PYX_ERR(3, 4390, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_374_mju_transformSpatial(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_flg_force, __pyx_v_newpos, __pyx_v_oldpos, __pyx_v_rotnew2old);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_374_mju_transformSpatial(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, int __pyx_v_flg_force, PyArrayObject *__pyx_v_newpos, PyArrayObject *__pyx_v_oldpos, PyArrayObject *__pyx_v_rotnew2old) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_newpos;
  __Pyx_Buffer __pyx_pybuffer_newpos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_oldpos;
  __Pyx_Buffer __pyx_pybuffer_oldpos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_rotnew2old;
  __Pyx_Buffer __pyx_pybuffer_rotnew2old;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  __Pyx_RefNannySetupContext("_mju_transformSpatial", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  __pyx_pybuffer_newpos.pybuffer.buf = NULL;
  __pyx_pybuffer_newpos.refcount = 0;
  __pyx_pybuffernd_newpos.data = NULL;
  __pyx_pybuffernd_newpos.rcbuffer = &__pyx_pybuffer_newpos;
  __pyx_pybuffer_oldpos.pybuffer.buf = NULL;
  __pyx_pybuffer_oldpos.refcount = 0;
  __pyx_pybuffernd_oldpos.data = NULL;
  __pyx_pybuffernd_oldpos.rcbuffer = &__pyx_pybuffer_oldpos;
  __pyx_pybuffer_rotnew2old.pybuffer.buf = NULL;
  __pyx_pybuffer_rotnew2old.refcount = 0;
  __pyx_pybuffernd_rotnew2old.data = NULL;
  __pyx_pybuffernd_rotnew2old.rcbuffer = &__pyx_pybuffer_rotnew2old;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4390, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4390, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_newpos.rcbuffer->pybuffer, (PyObject*)__pyx_v_newpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4390, __pyx_L1_error)
  }
  __pyx_pybuffernd_newpos.diminfo[0].strides = __pyx_pybuffernd_newpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_newpos.diminfo[0].shape = __pyx_pybuffernd_newpos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_oldpos.rcbuffer->pybuffer, (PyObject*)__pyx_v_oldpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4390, __pyx_L1_error)
  }
  __pyx_pybuffernd_oldpos.diminfo[0].strides = __pyx_pybuffernd_oldpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_oldpos.diminfo[0].shape = __pyx_pybuffernd_oldpos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_rotnew2old.rcbuffer->pybuffer, (PyObject*)__pyx_v_rotnew2old, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4390, __pyx_L1_error)
  }
  __pyx_pybuffernd_rotnew2old.diminfo[0].strides = __pyx_pybuffernd_rotnew2old.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_rotnew2old.diminfo[0].shape = __pyx_pybuffernd_rotnew2old.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4391
 * 
 * def _mju_transformSpatial(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int flg_force, np.ndarray[np.float64_t, mode="c", ndim=1] newpos, np.ndarray[np.float64_t, mode="c", ndim=1] oldpos, np.ndarray[np.float64_t, mode="c", ndim=1] rotnew2old):
 *     mju_transformSpatial(&res[0], &vec[0], flg_force, &newpos[0], &oldpos[0], &rotnew2old[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_rotVecQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] quat):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4391, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4391, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_newpos.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_newpos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4391, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_oldpos.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_oldpos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4391, __pyx_L1_error)
  }
  __pyx_t_6 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_6 < 0) {
    __pyx_t_6 += __pyx_pybuffernd_rotnew2old.diminfo[0].shape;
    if (unlikely(__pyx_t_6 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_rotnew2old.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4391, __pyx_L1_error)
  }
  mju_transformSpatial((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_flg_force, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_newpos.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_newpos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_oldpos.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_oldpos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_rotnew2old.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_rotnew2old.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4390
 *     mju_sqrMatTD(&res[0], &mat[0], &diag[0], nr, nc)
 * 
 * def _mju_transformSpatial(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int flg_force, np.ndarray[np.float64_t, mode="c", ndim=1] newpos, np.ndarray[np.float64_t, mode="c", ndim=1] oldpos, np.ndarray[np.float64_t, mode="c", ndim=1] rotnew2old):             # <<<<<<<<<<<<<<
 *     mju_transformSpatial(&res[0], &vec[0], flg_force, &newpos[0], &oldpos[0], &rotnew2old[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_newpos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_oldpos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rotnew2old.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_transformSpatial", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_newpos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_oldpos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rotnew2old.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4393
 *     mju_transformSpatial(&res[0], &vec[0], flg_force, &newpos[0], &oldpos[0], &rotnew2old[0])
 * 
 * def _mju_rotVecQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_rotVecQuat(&res[0], &vec[0], &quat[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_377_mju_rotVecQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_377_mju_rotVecQuat = {"_mju_rotVecQuat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_377_mju_rotVecQuat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_377_mju_rotVecQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyArrayObject *__pyx_v_quat = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_rotVecQuat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_vec,&__pyx_n_s_quat,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rotVecQuat", 1, 3, 3, 1); __PYX_ERR(3, 4393, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_rotVecQuat", 1, 3, 3, 2); __PYX_ERR(3, 4393, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_rotVecQuat") < 0)) __PYX_ERR(3, 4393, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
    __pyx_v_quat = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_rotVecQuat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4393, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_rotVecQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4393, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4393, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4393, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_376_mju_rotVecQuat(__pyx_self, __pyx_v_res, __pyx_v_vec, __pyx_v_quat);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_376_mju_rotVecQuat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_vec, PyArrayObject *__pyx_v_quat) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_rotVecQuat", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4393, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4393, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4393, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4394
 * 
 * def _mju_rotVecQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] quat):
 *     mju_rotVecQuat(&res[0], &vec[0], &quat[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_negQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4394, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4394, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4394, __pyx_L1_error)
  }
  mju_rotVecQuat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_quat.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4393
 *     mju_transformSpatial(&res[0], &vec[0], flg_force, &newpos[0], &oldpos[0], &rotnew2old[0])
 * 
 * def _mju_rotVecQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_rotVecQuat(&res[0], &vec[0], &quat[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_rotVecQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4396
 *     mju_rotVecQuat(&res[0], &vec[0], &quat[0])
 * 
 * def _mju_negQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_negQuat(&res[0], &quat[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_379_mju_negQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_379_mju_negQuat = {"_mju_negQuat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_379_mju_negQuat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_379_mju_negQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_quat = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_negQuat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_quat,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_negQuat", 1, 2, 2, 1); __PYX_ERR(3, 4396, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_negQuat") < 0)) __PYX_ERR(3, 4396, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_quat = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_negQuat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4396, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_negQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4396, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4396, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_378_mju_negQuat(__pyx_self, __pyx_v_res, __pyx_v_quat);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_378_mju_negQuat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_negQuat", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4396, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4396, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4397
 * 
 * def _mju_negQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):
 *     mju_negQuat(&res[0], &quat[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_mulQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4397, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4397, __pyx_L1_error)
  }
  mju_negQuat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_quat.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4396
 *     mju_rotVecQuat(&res[0], &vec[0], &quat[0])
 * 
 * def _mju_negQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_negQuat(&res[0], &quat[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_negQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4399
 *     mju_negQuat(&res[0], &quat[0])
 * 
 * def _mju_mulQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):             # <<<<<<<<<<<<<<
 *     mju_mulQuat(&res[0], &quat1[0], &quat2[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_381_mju_mulQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_381_mju_mulQuat = {"_mju_mulQuat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_381_mju_mulQuat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_381_mju_mulQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_quat1 = 0;
  PyArrayObject *__pyx_v_quat2 = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_mulQuat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_quat1,&__pyx_n_s_quat2,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulQuat", 1, 3, 3, 1); __PYX_ERR(3, 4399, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulQuat", 1, 3, 3, 2); __PYX_ERR(3, 4399, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_mulQuat") < 0)) __PYX_ERR(3, 4399, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_quat1 = ((PyArrayObject *)values[1]);
    __pyx_v_quat2 = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_mulQuat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4399, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4399, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat1), __pyx_ptype_5numpy_ndarray, 1, "quat1", 0))) __PYX_ERR(3, 4399, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat2), __pyx_ptype_5numpy_ndarray, 1, "quat2", 0))) __PYX_ERR(3, 4399, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_380_mju_mulQuat(__pyx_self, __pyx_v_res, __pyx_v_quat1, __pyx_v_quat2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_380_mju_mulQuat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat1, PyArrayObject *__pyx_v_quat2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat1;
  __Pyx_Buffer __pyx_pybuffer_quat1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat2;
  __Pyx_Buffer __pyx_pybuffer_quat2;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_mulQuat", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_quat1.pybuffer.buf = NULL;
  __pyx_pybuffer_quat1.refcount = 0;
  __pyx_pybuffernd_quat1.data = NULL;
  __pyx_pybuffernd_quat1.rcbuffer = &__pyx_pybuffer_quat1;
  __pyx_pybuffer_quat2.pybuffer.buf = NULL;
  __pyx_pybuffer_quat2.refcount = 0;
  __pyx_pybuffernd_quat2.data = NULL;
  __pyx_pybuffernd_quat2.rcbuffer = &__pyx_pybuffer_quat2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4399, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat1.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4399, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat1.diminfo[0].strides = __pyx_pybuffernd_quat1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat1.diminfo[0].shape = __pyx_pybuffernd_quat1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat2.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4399, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat2.diminfo[0].strides = __pyx_pybuffernd_quat2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat2.diminfo[0].shape = __pyx_pybuffernd_quat2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4400
 * 
 * def _mju_mulQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):
 *     mju_mulQuat(&res[0], &quat1[0], &quat2[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_mulQuatAxis(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] axis):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4400, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_quat1.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_quat1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4400, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_quat2.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_quat2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4400, __pyx_L1_error)
  }
  mju_mulQuat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat1.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_quat1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat2.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_quat2.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4399
 *     mju_negQuat(&res[0], &quat[0])
 * 
 * def _mju_mulQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):             # <<<<<<<<<<<<<<
 *     mju_mulQuat(&res[0], &quat1[0], &quat2[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat2.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat2.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4402
 *     mju_mulQuat(&res[0], &quat1[0], &quat2[0])
 * 
 * def _mju_mulQuatAxis(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] axis):             # <<<<<<<<<<<<<<
 *     mju_mulQuatAxis(&res[0], &quat[0], &axis[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_383_mju_mulQuatAxis(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_383_mju_mulQuatAxis = {"_mju_mulQuatAxis", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_383_mju_mulQuatAxis, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_383_mju_mulQuatAxis(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_quat = 0;
  PyArrayObject *__pyx_v_axis = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_mulQuatAxis (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_quat,&__pyx_n_s_axis,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulQuatAxis", 1, 3, 3, 1); __PYX_ERR(3, 4402, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_axis)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulQuatAxis", 1, 3, 3, 2); __PYX_ERR(3, 4402, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_mulQuatAxis") < 0)) __PYX_ERR(3, 4402, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_quat = ((PyArrayObject *)values[1]);
    __pyx_v_axis = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_mulQuatAxis", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4402, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulQuatAxis", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4402, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4402, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_axis), __pyx_ptype_5numpy_ndarray, 1, "axis", 0))) __PYX_ERR(3, 4402, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_382_mju_mulQuatAxis(__pyx_self, __pyx_v_res, __pyx_v_quat, __pyx_v_axis);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_382_mju_mulQuatAxis(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_axis) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_axis;
  __Pyx_Buffer __pyx_pybuffer_axis;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_mulQuatAxis", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  __pyx_pybuffer_axis.pybuffer.buf = NULL;
  __pyx_pybuffer_axis.refcount = 0;
  __pyx_pybuffernd_axis.data = NULL;
  __pyx_pybuffernd_axis.rcbuffer = &__pyx_pybuffer_axis;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4402, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4402, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_axis.rcbuffer->pybuffer, (PyObject*)__pyx_v_axis, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4402, __pyx_L1_error)
  }
  __pyx_pybuffernd_axis.diminfo[0].strides = __pyx_pybuffernd_axis.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_axis.diminfo[0].shape = __pyx_pybuffernd_axis.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4403
 * 
 * def _mju_mulQuatAxis(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] axis):
 *     mju_mulQuatAxis(&res[0], &quat[0], &axis[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_axisAngle2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] axis, float angle):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4403, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4403, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_axis.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_axis.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4403, __pyx_L1_error)
  }
  mju_mulQuatAxis((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_quat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_axis.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_axis.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4402
 *     mju_mulQuat(&res[0], &quat1[0], &quat2[0])
 * 
 * def _mju_mulQuatAxis(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] axis):             # <<<<<<<<<<<<<<
 *     mju_mulQuatAxis(&res[0], &quat[0], &axis[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_axis.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulQuatAxis", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_axis.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4405
 *     mju_mulQuatAxis(&res[0], &quat[0], &axis[0])
 * 
 * def _mju_axisAngle2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] axis, float angle):             # <<<<<<<<<<<<<<
 *     mju_axisAngle2Quat(&res[0], &axis[0], angle)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_385_mju_axisAngle2Quat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_385_mju_axisAngle2Quat = {"_mju_axisAngle2Quat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_385_mju_axisAngle2Quat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_385_mju_axisAngle2Quat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_axis = 0;
  float __pyx_v_angle;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_axisAngle2Quat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_axis,&__pyx_n_s_angle,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_axis)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_axisAngle2Quat", 1, 3, 3, 1); __PYX_ERR(3, 4405, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_angle)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_axisAngle2Quat", 1, 3, 3, 2); __PYX_ERR(3, 4405, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_axisAngle2Quat") < 0)) __PYX_ERR(3, 4405, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_axis = ((PyArrayObject *)values[1]);
    __pyx_v_angle = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_angle == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4405, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_axisAngle2Quat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4405, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_axisAngle2Quat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4405, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_axis), __pyx_ptype_5numpy_ndarray, 1, "axis", 0))) __PYX_ERR(3, 4405, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_384_mju_axisAngle2Quat(__pyx_self, __pyx_v_res, __pyx_v_axis, __pyx_v_angle);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_384_mju_axisAngle2Quat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_axis, float __pyx_v_angle) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_axis;
  __Pyx_Buffer __pyx_pybuffer_axis;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_axisAngle2Quat", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_axis.pybuffer.buf = NULL;
  __pyx_pybuffer_axis.refcount = 0;
  __pyx_pybuffernd_axis.data = NULL;
  __pyx_pybuffernd_axis.rcbuffer = &__pyx_pybuffer_axis;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4405, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_axis.rcbuffer->pybuffer, (PyObject*)__pyx_v_axis, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4405, __pyx_L1_error)
  }
  __pyx_pybuffernd_axis.diminfo[0].strides = __pyx_pybuffernd_axis.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_axis.diminfo[0].shape = __pyx_pybuffernd_axis.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4406
 * 
 * def _mju_axisAngle2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] axis, float angle):
 *     mju_axisAngle2Quat(&res[0], &axis[0], angle)             # <<<<<<<<<<<<<<
 * 
 * def _mju_quat2Vel(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, float dt):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4406, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_axis.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_axis.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4406, __pyx_L1_error)
  }
  mju_axisAngle2Quat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_axis.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_axis.diminfo[0].strides))), __pyx_v_angle);

  /* "mujoco_py/generated/wrappers.pxi":4405
 *     mju_mulQuatAxis(&res[0], &quat[0], &axis[0])
 * 
 * def _mju_axisAngle2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] axis, float angle):             # <<<<<<<<<<<<<<
 *     mju_axisAngle2Quat(&res[0], &axis[0], angle)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_axis.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_axisAngle2Quat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_axis.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4408
 *     mju_axisAngle2Quat(&res[0], &axis[0], angle)
 * 
 * def _mju_quat2Vel(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, float dt):             # <<<<<<<<<<<<<<
 *     mju_quat2Vel(&res[0], &quat[0], dt)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_387_mju_quat2Vel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_387_mju_quat2Vel = {"_mju_quat2Vel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_387_mju_quat2Vel, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_387_mju_quat2Vel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_quat = 0;
  float __pyx_v_dt;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_quat2Vel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_quat,&__pyx_n_s_dt,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_quat2Vel", 1, 3, 3, 1); __PYX_ERR(3, 4408, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_quat2Vel", 1, 3, 3, 2); __PYX_ERR(3, 4408, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_quat2Vel") < 0)) __PYX_ERR(3, 4408, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_quat = ((PyArrayObject *)values[1]);
    __pyx_v_dt = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_dt == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4408, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_quat2Vel", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4408, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_quat2Vel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4408, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4408, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_386_mju_quat2Vel(__pyx_self, __pyx_v_res, __pyx_v_quat, __pyx_v_dt);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_386_mju_quat2Vel(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat, float __pyx_v_dt) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_quat2Vel", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4408, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4408, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4409
 * 
 * def _mju_quat2Vel(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, float dt):
 *     mju_quat2Vel(&res[0], &quat[0], dt)             # <<<<<<<<<<<<<<
 * 
 * def _mju_quat2Mat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4409, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4409, __pyx_L1_error)
  }
  mju_quat2Vel((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_quat.diminfo[0].strides))), __pyx_v_dt);

  /* "mujoco_py/generated/wrappers.pxi":4408
 *     mju_axisAngle2Quat(&res[0], &axis[0], angle)
 * 
 * def _mju_quat2Vel(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, float dt):             # <<<<<<<<<<<<<<
 *     mju_quat2Vel(&res[0], &quat[0], dt)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_quat2Vel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4411
 *     mju_quat2Vel(&res[0], &quat[0], dt)
 * 
 * def _mju_quat2Mat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_quat2Mat(&res[0], &quat[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_389_mju_quat2Mat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_389_mju_quat2Mat = {"_mju_quat2Mat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_389_mju_quat2Mat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_389_mju_quat2Mat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_quat = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_quat2Mat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_quat,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_quat2Mat", 1, 2, 2, 1); __PYX_ERR(3, 4411, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_quat2Mat") < 0)) __PYX_ERR(3, 4411, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_quat = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_quat2Mat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4411, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_quat2Mat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4411, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4411, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_388_mju_quat2Mat(__pyx_self, __pyx_v_res, __pyx_v_quat);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_388_mju_quat2Mat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_quat2Mat", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4411, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4411, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4412
 * 
 * def _mju_quat2Mat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):
 *     mju_quat2Mat(&res[0], &quat[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_mat2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4412, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4412, __pyx_L1_error)
  }
  mju_quat2Mat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_quat.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4411
 *     mju_quat2Vel(&res[0], &quat[0], dt)
 * 
 * def _mju_quat2Mat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_quat2Mat(&res[0], &quat[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_quat2Mat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4414
 *     mju_quat2Mat(&res[0], &quat[0])
 * 
 * def _mju_mat2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_mat2Quat(&quat[0], &mat[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_391_mju_mat2Quat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_391_mju_mat2Quat = {"_mju_mat2Quat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_391_mju_mat2Quat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_391_mju_mat2Quat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_quat = 0;
  PyArrayObject *__pyx_v_mat = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_mat2Quat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_quat,&__pyx_n_s_mat,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mat2Quat", 1, 2, 2, 1); __PYX_ERR(3, 4414, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_mat2Quat") < 0)) __PYX_ERR(3, 4414, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_quat = ((PyArrayObject *)values[0]);
    __pyx_v_mat = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_mat2Quat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4414, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mat2Quat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4414, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4414, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_390_mju_mat2Quat(__pyx_self, __pyx_v_quat, __pyx_v_mat);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_390_mju_mat2Quat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_mat) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_mat2Quat", 0);
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4414, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4414, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4415
 * 
 * def _mju_mat2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):
 *     mju_mat2Quat(&quat[0], &mat[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_derivQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4415, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4415, __pyx_L1_error)
  }
  mju_mat2Quat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_quat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4414
 *     mju_quat2Mat(&res[0], &quat[0])
 * 
 * def _mju_mat2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_mat2Quat(&quat[0], &mat[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mat2Quat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4417
 *     mju_mat2Quat(&quat[0], &mat[0])
 * 
 * def _mju_derivQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel):             # <<<<<<<<<<<<<<
 *     mju_derivQuat(&res[0], &quat[0], &vel[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_393_mju_derivQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_393_mju_derivQuat = {"_mju_derivQuat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_393_mju_derivQuat, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_393_mju_derivQuat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_quat = 0;
  PyArrayObject *__pyx_v_vel = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_derivQuat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_quat,&__pyx_n_s_vel,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_derivQuat", 1, 3, 3, 1); __PYX_ERR(3, 4417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vel)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_derivQuat", 1, 3, 3, 2); __PYX_ERR(3, 4417, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_derivQuat") < 0)) __PYX_ERR(3, 4417, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_quat = ((PyArrayObject *)values[1]);
    __pyx_v_vel = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_derivQuat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4417, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_derivQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4417, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4417, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vel), __pyx_ptype_5numpy_ndarray, 1, "vel", 0))) __PYX_ERR(3, 4417, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_392_mju_derivQuat(__pyx_self, __pyx_v_res, __pyx_v_quat, __pyx_v_vel);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_392_mju_derivQuat(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_vel) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vel;
  __Pyx_Buffer __pyx_pybuffer_vel;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_derivQuat", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  __pyx_pybuffer_vel.pybuffer.buf = NULL;
  __pyx_pybuffer_vel.refcount = 0;
  __pyx_pybuffernd_vel.data = NULL;
  __pyx_pybuffernd_vel.rcbuffer = &__pyx_pybuffer_vel;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4417, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4417, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vel.rcbuffer->pybuffer, (PyObject*)__pyx_v_vel, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4417, __pyx_L1_error)
  }
  __pyx_pybuffernd_vel.diminfo[0].strides = __pyx_pybuffernd_vel.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vel.diminfo[0].shape = __pyx_pybuffernd_vel.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4418
 * 
 * def _mju_derivQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel):
 *     mju_derivQuat(&res[0], &quat[0], &vel[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_quatIntegrate(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel, float scale):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4418, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4418, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vel.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vel.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4418, __pyx_L1_error)
  }
  mju_derivQuat((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_quat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vel.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vel.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4417
 *     mju_mat2Quat(&quat[0], &mat[0])
 * 
 * def _mju_derivQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel):             # <<<<<<<<<<<<<<
 *     mju_derivQuat(&res[0], &quat[0], &vel[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vel.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_derivQuat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vel.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4420
 *     mju_derivQuat(&res[0], &quat[0], &vel[0])
 * 
 * def _mju_quatIntegrate(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel, float scale):             # <<<<<<<<<<<<<<
 *     mju_quatIntegrate(&quat[0], &vel[0], scale)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_395_mju_quatIntegrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_395_mju_quatIntegrate = {"_mju_quatIntegrate", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_395_mju_quatIntegrate, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_395_mju_quatIntegrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_quat = 0;
  PyArrayObject *__pyx_v_vel = 0;
  float __pyx_v_scale;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_quatIntegrate (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_quat,&__pyx_n_s_vel,&__pyx_n_s_scale,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vel)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_quatIntegrate", 1, 3, 3, 1); __PYX_ERR(3, 4420, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scale)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_quatIntegrate", 1, 3, 3, 2); __PYX_ERR(3, 4420, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_quatIntegrate") < 0)) __PYX_ERR(3, 4420, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_quat = ((PyArrayObject *)values[0]);
    __pyx_v_vel = ((PyArrayObject *)values[1]);
    __pyx_v_scale = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_scale == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4420, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_quatIntegrate", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4420, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_quatIntegrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4420, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vel), __pyx_ptype_5numpy_ndarray, 1, "vel", 0))) __PYX_ERR(3, 4420, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_394_mju_quatIntegrate(__pyx_self, __pyx_v_quat, __pyx_v_vel, __pyx_v_scale);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_394_mju_quatIntegrate(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_vel, float __pyx_v_scale) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vel;
  __Pyx_Buffer __pyx_pybuffer_vel;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_quatIntegrate", 0);
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  __pyx_pybuffer_vel.pybuffer.buf = NULL;
  __pyx_pybuffer_vel.refcount = 0;
  __pyx_pybuffernd_vel.data = NULL;
  __pyx_pybuffernd_vel.rcbuffer = &__pyx_pybuffer_vel;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4420, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vel.rcbuffer->pybuffer, (PyObject*)__pyx_v_vel, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4420, __pyx_L1_error)
  }
  __pyx_pybuffernd_vel.diminfo[0].strides = __pyx_pybuffernd_vel.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vel.diminfo[0].shape = __pyx_pybuffernd_vel.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4421
 * 
 * def _mju_quatIntegrate(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel, float scale):
 *     mju_quatIntegrate(&quat[0], &vel[0], scale)             # <<<<<<<<<<<<<<
 * 
 * def _mju_quatZ2Vec(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4421, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vel.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vel.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4421, __pyx_L1_error)
  }
  mju_quatIntegrate((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_quat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vel.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vel.diminfo[0].strides))), __pyx_v_scale);

  /* "mujoco_py/generated/wrappers.pxi":4420
 *     mju_derivQuat(&res[0], &quat[0], &vel[0])
 * 
 * def _mju_quatIntegrate(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel, float scale):             # <<<<<<<<<<<<<<
 *     mju_quatIntegrate(&quat[0], &vel[0], scale)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vel.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_quatIntegrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vel.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4423
 *     mju_quatIntegrate(&quat[0], &vel[0], scale)
 * 
 * def _mju_quatZ2Vec(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_quatZ2Vec(&quat[0], &vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_397_mju_quatZ2Vec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_397_mju_quatZ2Vec = {"_mju_quatZ2Vec", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_397_mju_quatZ2Vec, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_397_mju_quatZ2Vec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_quat = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_quatZ2Vec (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_quat,&__pyx_n_s_vec,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_quatZ2Vec", 1, 2, 2, 1); __PYX_ERR(3, 4423, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_quatZ2Vec") < 0)) __PYX_ERR(3, 4423, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_quat = ((PyArrayObject *)values[0]);
    __pyx_v_vec = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_quatZ2Vec", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4423, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_quatZ2Vec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4423, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4423, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_396_mju_quatZ2Vec(__pyx_self, __pyx_v_quat, __pyx_v_vec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_396_mju_quatZ2Vec(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("_mju_quatZ2Vec", 0);
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4423, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4423, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4424
 * 
 * def _mju_quatZ2Vec(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     mju_quatZ2Vec(&quat[0], &vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_mulPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4424, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4424, __pyx_L1_error)
  }
  mju_quatZ2Vec((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_quat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_vec.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4423
 *     mju_quatIntegrate(&quat[0], &vel[0], scale)
 * 
 * def _mju_quatZ2Vec(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_quatZ2Vec(&quat[0], &vec[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_quatZ2Vec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4426
 *     mju_quatZ2Vec(&quat[0], &vec[0])
 * 
 * def _mju_mulPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):             # <<<<<<<<<<<<<<
 *     mju_mulPose(&posres[0], &quatres[0], &pos1[0], &quat1[0], &pos2[0], &quat2[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_399_mju_mulPose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_399_mju_mulPose = {"_mju_mulPose", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_399_mju_mulPose, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_399_mju_mulPose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_posres = 0;
  PyArrayObject *__pyx_v_quatres = 0;
  PyArrayObject *__pyx_v_pos1 = 0;
  PyArrayObject *__pyx_v_quat1 = 0;
  PyArrayObject *__pyx_v_pos2 = 0;
  PyArrayObject *__pyx_v_quat2 = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_mulPose (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_posres,&__pyx_n_s_quatres,&__pyx_n_s_pos1,&__pyx_n_s_quat1,&__pyx_n_s_pos2,&__pyx_n_s_quat2,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_posres)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quatres)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulPose", 1, 6, 6, 1); __PYX_ERR(3, 4426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulPose", 1, 6, 6, 2); __PYX_ERR(3, 4426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulPose", 1, 6, 6, 3); __PYX_ERR(3, 4426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulPose", 1, 6, 6, 4); __PYX_ERR(3, 4426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_mulPose", 1, 6, 6, 5); __PYX_ERR(3, 4426, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_mulPose") < 0)) __PYX_ERR(3, 4426, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_posres = ((PyArrayObject *)values[0]);
    __pyx_v_quatres = ((PyArrayObject *)values[1]);
    __pyx_v_pos1 = ((PyArrayObject *)values[2]);
    __pyx_v_quat1 = ((PyArrayObject *)values[3]);
    __pyx_v_pos2 = ((PyArrayObject *)values[4]);
    __pyx_v_quat2 = ((PyArrayObject *)values[5]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_mulPose", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4426, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulPose", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_posres), __pyx_ptype_5numpy_ndarray, 1, "posres", 0))) __PYX_ERR(3, 4426, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quatres), __pyx_ptype_5numpy_ndarray, 1, "quatres", 0))) __PYX_ERR(3, 4426, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 1, "pos1", 0))) __PYX_ERR(3, 4426, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat1), __pyx_ptype_5numpy_ndarray, 1, "quat1", 0))) __PYX_ERR(3, 4426, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 1, "pos2", 0))) __PYX_ERR(3, 4426, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat2), __pyx_ptype_5numpy_ndarray, 1, "quat2", 0))) __PYX_ERR(3, 4426, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_398_mju_mulPose(__pyx_self, __pyx_v_posres, __pyx_v_quatres, __pyx_v_pos1, __pyx_v_quat1, __pyx_v_pos2, __pyx_v_quat2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_398_mju_mulPose(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_posres, PyArrayObject *__pyx_v_quatres, PyArrayObject *__pyx_v_pos1, PyArrayObject *__pyx_v_quat1, PyArrayObject *__pyx_v_pos2, PyArrayObject *__pyx_v_quat2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pos1;
  __Pyx_Buffer __pyx_pybuffer_pos1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pos2;
  __Pyx_Buffer __pyx_pybuffer_pos2;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_posres;
  __Pyx_Buffer __pyx_pybuffer_posres;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat1;
  __Pyx_Buffer __pyx_pybuffer_quat1;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat2;
  __Pyx_Buffer __pyx_pybuffer_quat2;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quatres;
  __Pyx_Buffer __pyx_pybuffer_quatres;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  __Pyx_RefNannySetupContext("_mju_mulPose", 0);
  __pyx_pybuffer_posres.pybuffer.buf = NULL;
  __pyx_pybuffer_posres.refcount = 0;
  __pyx_pybuffernd_posres.data = NULL;
  __pyx_pybuffernd_posres.rcbuffer = &__pyx_pybuffer_posres;
  __pyx_pybuffer_quatres.pybuffer.buf = NULL;
  __pyx_pybuffer_quatres.refcount = 0;
  __pyx_pybuffernd_quatres.data = NULL;
  __pyx_pybuffernd_quatres.rcbuffer = &__pyx_pybuffer_quatres;
  __pyx_pybuffer_pos1.pybuffer.buf = NULL;
  __pyx_pybuffer_pos1.refcount = 0;
  __pyx_pybuffernd_pos1.data = NULL;
  __pyx_pybuffernd_pos1.rcbuffer = &__pyx_pybuffer_pos1;
  __pyx_pybuffer_quat1.pybuffer.buf = NULL;
  __pyx_pybuffer_quat1.refcount = 0;
  __pyx_pybuffernd_quat1.data = NULL;
  __pyx_pybuffernd_quat1.rcbuffer = &__pyx_pybuffer_quat1;
  __pyx_pybuffer_pos2.pybuffer.buf = NULL;
  __pyx_pybuffer_pos2.refcount = 0;
  __pyx_pybuffernd_pos2.data = NULL;
  __pyx_pybuffernd_pos2.rcbuffer = &__pyx_pybuffer_pos2;
  __pyx_pybuffer_quat2.pybuffer.buf = NULL;
  __pyx_pybuffer_quat2.refcount = 0;
  __pyx_pybuffernd_quat2.data = NULL;
  __pyx_pybuffernd_quat2.rcbuffer = &__pyx_pybuffer_quat2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_posres.rcbuffer->pybuffer, (PyObject*)__pyx_v_posres, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4426, __pyx_L1_error)
  }
  __pyx_pybuffernd_posres.diminfo[0].strides = __pyx_pybuffernd_posres.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_posres.diminfo[0].shape = __pyx_pybuffernd_posres.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quatres.rcbuffer->pybuffer, (PyObject*)__pyx_v_quatres, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4426, __pyx_L1_error)
  }
  __pyx_pybuffernd_quatres.diminfo[0].strides = __pyx_pybuffernd_quatres.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quatres.diminfo[0].shape = __pyx_pybuffernd_quatres.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos1.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4426, __pyx_L1_error)
  }
  __pyx_pybuffernd_pos1.diminfo[0].strides = __pyx_pybuffernd_pos1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos1.diminfo[0].shape = __pyx_pybuffernd_pos1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat1.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4426, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat1.diminfo[0].strides = __pyx_pybuffernd_quat1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat1.diminfo[0].shape = __pyx_pybuffernd_quat1.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos2.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4426, __pyx_L1_error)
  }
  __pyx_pybuffernd_pos2.diminfo[0].strides = __pyx_pybuffernd_pos2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos2.diminfo[0].shape = __pyx_pybuffernd_pos2.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat2.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4426, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat2.diminfo[0].strides = __pyx_pybuffernd_quat2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat2.diminfo[0].shape = __pyx_pybuffernd_quat2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4427
 * 
 * def _mju_mulPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):
 *     mju_mulPose(&posres[0], &quatres[0], &pos1[0], &quat1[0], &pos2[0], &quat2[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_negPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_posres.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_posres.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4427, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_quatres.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_quatres.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4427, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_pos1.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_pos1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4427, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_quat1.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_quat1.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4427, __pyx_L1_error)
  }
  __pyx_t_6 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_6 < 0) {
    __pyx_t_6 += __pyx_pybuffernd_pos2.diminfo[0].shape;
    if (unlikely(__pyx_t_6 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_pos2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4427, __pyx_L1_error)
  }
  __pyx_t_7 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_7 < 0) {
    __pyx_t_7 += __pyx_pybuffernd_quat2.diminfo[0].shape;
    if (unlikely(__pyx_t_7 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_7 >= __pyx_pybuffernd_quat2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4427, __pyx_L1_error)
  }
  mju_mulPose((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_posres.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_posres.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quatres.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_quatres.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pos1.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_pos1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat1.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_quat1.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pos2.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_pos2.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat2.rcbuffer->pybuffer.buf, __pyx_t_7, __pyx_pybuffernd_quat2.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4426
 *     mju_quatZ2Vec(&quat[0], &vec[0])
 * 
 * def _mju_mulPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):             # <<<<<<<<<<<<<<
 *     mju_mulPose(&posres[0], &quatres[0], &pos1[0], &quat1[0], &pos2[0], &quat2[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos2.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_posres.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat1.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat2.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quatres.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_mulPose", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos2.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_posres.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat1.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat2.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quatres.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4429
 *     mju_mulPose(&posres[0], &quatres[0], &pos1[0], &quat1[0], &pos2[0], &quat2[0])
 * 
 * def _mju_negPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_negPose(&posres[0], &quatres[0], &pos[0], &quat[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_401_mju_negPose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_401_mju_negPose = {"_mju_negPose", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_401_mju_negPose, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_401_mju_negPose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_posres = 0;
  PyArrayObject *__pyx_v_quatres = 0;
  PyArrayObject *__pyx_v_pos = 0;
  PyArrayObject *__pyx_v_quat = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_negPose (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_posres,&__pyx_n_s_quatres,&__pyx_n_s_pos,&__pyx_n_s_quat,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_posres)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quatres)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_negPose", 1, 4, 4, 1); __PYX_ERR(3, 4429, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_negPose", 1, 4, 4, 2); __PYX_ERR(3, 4429, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_negPose", 1, 4, 4, 3); __PYX_ERR(3, 4429, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_negPose") < 0)) __PYX_ERR(3, 4429, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_posres = ((PyArrayObject *)values[0]);
    __pyx_v_quatres = ((PyArrayObject *)values[1]);
    __pyx_v_pos = ((PyArrayObject *)values[2]);
    __pyx_v_quat = ((PyArrayObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_negPose", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4429, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_negPose", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_posres), __pyx_ptype_5numpy_ndarray, 1, "posres", 0))) __PYX_ERR(3, 4429, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quatres), __pyx_ptype_5numpy_ndarray, 1, "quatres", 0))) __PYX_ERR(3, 4429, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(3, 4429, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4429, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_400_mju_negPose(__pyx_self, __pyx_v_posres, __pyx_v_quatres, __pyx_v_pos, __pyx_v_quat);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_400_mju_negPose(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_posres, PyArrayObject *__pyx_v_quatres, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_quat) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pos;
  __Pyx_Buffer __pyx_pybuffer_pos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_posres;
  __Pyx_Buffer __pyx_pybuffer_posres;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quatres;
  __Pyx_Buffer __pyx_pybuffer_quatres;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  __Pyx_RefNannySetupContext("_mju_negPose", 0);
  __pyx_pybuffer_posres.pybuffer.buf = NULL;
  __pyx_pybuffer_posres.refcount = 0;
  __pyx_pybuffernd_posres.data = NULL;
  __pyx_pybuffernd_posres.rcbuffer = &__pyx_pybuffer_posres;
  __pyx_pybuffer_quatres.pybuffer.buf = NULL;
  __pyx_pybuffer_quatres.refcount = 0;
  __pyx_pybuffernd_quatres.data = NULL;
  __pyx_pybuffernd_quatres.rcbuffer = &__pyx_pybuffer_quatres;
  __pyx_pybuffer_pos.pybuffer.buf = NULL;
  __pyx_pybuffer_pos.refcount = 0;
  __pyx_pybuffernd_pos.data = NULL;
  __pyx_pybuffernd_pos.rcbuffer = &__pyx_pybuffer_pos;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_posres.rcbuffer->pybuffer, (PyObject*)__pyx_v_posres, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4429, __pyx_L1_error)
  }
  __pyx_pybuffernd_posres.diminfo[0].strides = __pyx_pybuffernd_posres.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_posres.diminfo[0].shape = __pyx_pybuffernd_posres.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quatres.rcbuffer->pybuffer, (PyObject*)__pyx_v_quatres, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4429, __pyx_L1_error)
  }
  __pyx_pybuffernd_quatres.diminfo[0].strides = __pyx_pybuffernd_quatres.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quatres.diminfo[0].shape = __pyx_pybuffernd_quatres.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4429, __pyx_L1_error)
  }
  __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4429, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4430
 * 
 * def _mju_negPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat):
 *     mju_negPose(&posres[0], &quatres[0], &pos[0], &quat[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_trnVecPose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_posres.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_posres.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4430, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_quatres.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_quatres.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4430, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_pos.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_pos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4430, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4430, __pyx_L1_error)
  }
  mju_negPose((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_posres.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_posres.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quatres.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_quatres.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pos.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_pos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_quat.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4429
 *     mju_mulPose(&posres[0], &quatres[0], &pos1[0], &quat1[0], &pos2[0], &quat2[0])
 * 
 * def _mju_negPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_negPose(&posres[0], &quatres[0], &pos[0], &quat[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_posres.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quatres.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_negPose", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_posres.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quatres.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4432
 *     mju_negPose(&posres[0], &quatres[0], &pos[0], &quat[0])
 * 
 * def _mju_trnVecPose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_trnVecPose(&res[0], &pos[0], &quat[0], &vec[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_403_mju_trnVecPose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_403_mju_trnVecPose = {"_mju_trnVecPose", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_403_mju_trnVecPose, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_403_mju_trnVecPose(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_pos = 0;
  PyArrayObject *__pyx_v_quat = 0;
  PyArrayObject *__pyx_v_vec = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_trnVecPose (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_pos,&__pyx_n_s_quat,&__pyx_n_s_vec,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_trnVecPose", 1, 4, 4, 1); __PYX_ERR(3, 4432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_trnVecPose", 1, 4, 4, 2); __PYX_ERR(3, 4432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_trnVecPose", 1, 4, 4, 3); __PYX_ERR(3, 4432, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_trnVecPose") < 0)) __PYX_ERR(3, 4432, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_pos = ((PyArrayObject *)values[1]);
    __pyx_v_quat = ((PyArrayObject *)values[2]);
    __pyx_v_vec = ((PyArrayObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_trnVecPose", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4432, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_trnVecPose", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4432, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(3, 4432, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4432, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4432, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_402_mju_trnVecPose(__pyx_self, __pyx_v_res, __pyx_v_pos, __pyx_v_quat, __pyx_v_vec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_402_mju_trnVecPose(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_vec) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pos;
  __Pyx_Buffer __pyx_pybuffer_pos;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  __Pyx_RefNannySetupContext("_mju_trnVecPose", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_pos.pybuffer.buf = NULL;
  __pyx_pybuffer_pos.refcount = 0;
  __pyx_pybuffernd_pos.data = NULL;
  __pyx_pybuffernd_pos.rcbuffer = &__pyx_pybuffer_pos;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4432, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4432, __pyx_L1_error)
  }
  __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4432, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4432, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4433
 * 
 * def _mju_trnVecPose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):
 *     mju_trnVecPose(&res[0], &pos[0], &quat[0], &vec[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_cholFactor(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int n):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4433, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_pos.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_pos.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4433, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4433, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4433, __pyx_L1_error)
  }
  mju_trnVecPose((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pos.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_pos.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_quat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_vec.diminfo[0].strides))));

  /* "mujoco_py/generated/wrappers.pxi":4432
 *     mju_negPose(&posres[0], &quatres[0], &pos[0], &quat[0])
 * 
 * def _mju_trnVecPose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_trnVecPose(&res[0], &pos[0], &quat[0], &vec[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_trnVecPose", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4435
 *     mju_trnVecPose(&res[0], &pos[0], &quat[0], &vec[0])
 * 
 * def _mju_cholFactor(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int n):             # <<<<<<<<<<<<<<
 *     return mju_cholFactor(&mat[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_405_mju_cholFactor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_405_mju_cholFactor = {"_mju_cholFactor", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_405_mju_cholFactor, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_405_mju_cholFactor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_mat = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_cholFactor (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mat,&__pyx_n_s_n,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_cholFactor", 1, 2, 2, 1); __PYX_ERR(3, 4435, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_cholFactor") < 0)) __PYX_ERR(3, 4435, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_mat = ((PyArrayObject *)values[0]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4435, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_cholFactor", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4435, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_cholFactor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4435, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_404_mju_cholFactor(__pyx_self, __pyx_v_mat, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_404_mju_cholFactor(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mat, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_cholFactor", 0);
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4435, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4436
 * 
 * def _mju_cholFactor(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int n):
 *     return mju_cholFactor(&mat[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_cholSolve(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4436, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(mju_cholFactor((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_mat.diminfo[0].strides))), __pyx_v_n)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4435
 *     mju_trnVecPose(&res[0], &pos[0], &quat[0], &vec[0])
 * 
 * def _mju_cholFactor(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int n):             # <<<<<<<<<<<<<<
 *     return mju_cholFactor(&mat[0], n)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_cholFactor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4438
 *     return mju_cholFactor(&mat[0], n)
 * 
 * def _mju_cholSolve(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_cholSolve(&res[0], &mat[0], &vec[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_407_mju_cholSolve(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_407_mju_cholSolve = {"_mju_cholSolve", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_407_mju_cholSolve, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_407_mju_cholSolve(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_res = 0;
  PyArrayObject *__pyx_v_mat = 0;
  PyArrayObject *__pyx_v_vec = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_cholSolve (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_res,&__pyx_n_s_mat,&__pyx_n_s_vec,&__pyx_n_s_n,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_res)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_cholSolve", 1, 4, 4, 1); __PYX_ERR(3, 4438, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_cholSolve", 1, 4, 4, 2); __PYX_ERR(3, 4438, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_cholSolve", 1, 4, 4, 3); __PYX_ERR(3, 4438, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_cholSolve") < 0)) __PYX_ERR(3, 4438, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_res = ((PyArrayObject *)values[0]);
    __pyx_v_mat = ((PyArrayObject *)values[1]);
    __pyx_v_vec = ((PyArrayObject *)values[2]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4438, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_cholSolve", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4438, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_cholSolve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_res), __pyx_ptype_5numpy_ndarray, 1, "res", 0))) __PYX_ERR(3, 4438, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4438, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4438, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_406_mju_cholSolve(__pyx_self, __pyx_v_res, __pyx_v_mat, __pyx_v_vec, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_406_mju_cholSolve(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_res, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_vec, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
  __Pyx_Buffer __pyx_pybuffer_res;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_cholSolve", 0);
  __pyx_pybuffer_res.pybuffer.buf = NULL;
  __pyx_pybuffer_res.refcount = 0;
  __pyx_pybuffernd_res.data = NULL;
  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4438, __pyx_L1_error)
  }
  __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4438, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4438, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4439
 * 
 * def _mju_cholSolve(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):
 *     mju_cholSolve(&res[0], &mat[0], &vec[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_cholUpdate(np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] x, int n, int flg_plus):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_res.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_res.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4439, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4439, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4439, __pyx_L1_error)
  }
  mju_cholSolve((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_res.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4438
 *     return mju_cholFactor(&mat[0], n)
 * 
 * def _mju_cholSolve(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_cholSolve(&res[0], &mat[0], &vec[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_cholSolve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4441
 *     mju_cholSolve(&res[0], &mat[0], &vec[0], n)
 * 
 * def _mju_cholUpdate(np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] x, int n, int flg_plus):             # <<<<<<<<<<<<<<
 *     return mju_cholUpdate(&mat[0], &x[0], n, flg_plus)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_409_mju_cholUpdate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_409_mju_cholUpdate = {"_mju_cholUpdate", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_409_mju_cholUpdate, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_409_mju_cholUpdate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_mat = 0;
  PyArrayObject *__pyx_v_x = 0;
  int __pyx_v_n;
  int __pyx_v_flg_plus;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_cholUpdate (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mat,&__pyx_n_s_x,&__pyx_n_s_n,&__pyx_n_s_flg_plus,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_cholUpdate", 1, 4, 4, 1); __PYX_ERR(3, 4441, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_cholUpdate", 1, 4, 4, 2); __PYX_ERR(3, 4441, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flg_plus)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_cholUpdate", 1, 4, 4, 3); __PYX_ERR(3, 4441, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_cholUpdate") < 0)) __PYX_ERR(3, 4441, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_mat = ((PyArrayObject *)values[0]);
    __pyx_v_x = ((PyArrayObject *)values[1]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4441, __pyx_L3_error)
    __pyx_v_flg_plus = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_flg_plus == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4441, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_cholUpdate", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4441, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_cholUpdate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4441, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(3, 4441, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_408_mju_cholUpdate(__pyx_self, __pyx_v_mat, __pyx_v_x, __pyx_v_n, __pyx_v_flg_plus);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_408_mju_cholUpdate(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mat, PyArrayObject *__pyx_v_x, int __pyx_v_n, int __pyx_v_flg_plus) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_x;
  __Pyx_Buffer __pyx_pybuffer_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_mju_cholUpdate", 0);
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  __pyx_pybuffer_x.pybuffer.buf = NULL;
  __pyx_pybuffer_x.refcount = 0;
  __pyx_pybuffernd_x.data = NULL;
  __pyx_pybuffernd_x.rcbuffer = &__pyx_pybuffer_x;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4441, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x.rcbuffer->pybuffer, (PyObject*)__pyx_v_x, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4441, __pyx_L1_error)
  }
  __pyx_pybuffernd_x.diminfo[0].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x.diminfo[0].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4442
 * 
 * def _mju_cholUpdate(np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] x, int n, int flg_plus):
 *     return mju_cholUpdate(&mat[0], &x[0], n, flg_plus)             # <<<<<<<<<<<<<<
 * 
 * def _mju_eig3(np.ndarray[np.float64_t, mode="c", ndim=1] eigval, np.ndarray[np.float64_t, mode="c", ndim=1] eigvec, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4442, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_x.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_x.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4442, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_From_int(mju_cholUpdate((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_mat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_x.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_x.diminfo[0].strides))), __pyx_v_n, __pyx_v_flg_plus)); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 4442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4441
 *     mju_cholSolve(&res[0], &mat[0], &vec[0], n)
 * 
 * def _mju_cholUpdate(np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] x, int n, int flg_plus):             # <<<<<<<<<<<<<<
 *     return mju_cholUpdate(&mat[0], &x[0], n, flg_plus)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_cholUpdate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4444
 *     return mju_cholUpdate(&mat[0], &x[0], n, flg_plus)
 * 
 * def _mju_eig3(np.ndarray[np.float64_t, mode="c", ndim=1] eigval, np.ndarray[np.float64_t, mode="c", ndim=1] eigvec, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     return mju_eig3(&eigval[0], &eigvec[0], &quat[0], &mat[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_411_mju_eig3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_411_mju_eig3 = {"_mju_eig3", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_411_mju_eig3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_411_mju_eig3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_eigval = 0;
  PyArrayObject *__pyx_v_eigvec = 0;
  PyArrayObject *__pyx_v_quat = 0;
  PyArrayObject *__pyx_v_mat = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_eig3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_eigval,&__pyx_n_s_eigvec,&__pyx_n_s_quat,&__pyx_n_s_mat,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_eigval)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_eigvec)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_eig3", 1, 4, 4, 1); __PYX_ERR(3, 4444, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_quat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_eig3", 1, 4, 4, 2); __PYX_ERR(3, 4444, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_eig3", 1, 4, 4, 3); __PYX_ERR(3, 4444, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_eig3") < 0)) __PYX_ERR(3, 4444, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_eigval = ((PyArrayObject *)values[0]);
    __pyx_v_eigvec = ((PyArrayObject *)values[1]);
    __pyx_v_quat = ((PyArrayObject *)values[2]);
    __pyx_v_mat = ((PyArrayObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_eig3", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4444, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_eig3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_eigval), __pyx_ptype_5numpy_ndarray, 1, "eigval", 0))) __PYX_ERR(3, 4444, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_eigvec), __pyx_ptype_5numpy_ndarray, 1, "eigvec", 0))) __PYX_ERR(3, 4444, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_quat), __pyx_ptype_5numpy_ndarray, 1, "quat", 0))) __PYX_ERR(3, 4444, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_5numpy_ndarray, 1, "mat", 0))) __PYX_ERR(3, 4444, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_410_mju_eig3(__pyx_self, __pyx_v_eigval, __pyx_v_eigvec, __pyx_v_quat, __pyx_v_mat);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_410_mju_eig3(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_eigval, PyArrayObject *__pyx_v_eigvec, PyArrayObject *__pyx_v_quat, PyArrayObject *__pyx_v_mat) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_eigval;
  __Pyx_Buffer __pyx_pybuffer_eigval;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_eigvec;
  __Pyx_Buffer __pyx_pybuffer_eigvec;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mat;
  __Pyx_Buffer __pyx_pybuffer_mat;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_quat;
  __Pyx_Buffer __pyx_pybuffer_quat;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_mju_eig3", 0);
  __pyx_pybuffer_eigval.pybuffer.buf = NULL;
  __pyx_pybuffer_eigval.refcount = 0;
  __pyx_pybuffernd_eigval.data = NULL;
  __pyx_pybuffernd_eigval.rcbuffer = &__pyx_pybuffer_eigval;
  __pyx_pybuffer_eigvec.pybuffer.buf = NULL;
  __pyx_pybuffer_eigvec.refcount = 0;
  __pyx_pybuffernd_eigvec.data = NULL;
  __pyx_pybuffernd_eigvec.rcbuffer = &__pyx_pybuffer_eigvec;
  __pyx_pybuffer_quat.pybuffer.buf = NULL;
  __pyx_pybuffer_quat.refcount = 0;
  __pyx_pybuffernd_quat.data = NULL;
  __pyx_pybuffernd_quat.rcbuffer = &__pyx_pybuffer_quat;
  __pyx_pybuffer_mat.pybuffer.buf = NULL;
  __pyx_pybuffer_mat.refcount = 0;
  __pyx_pybuffernd_mat.data = NULL;
  __pyx_pybuffernd_mat.rcbuffer = &__pyx_pybuffer_mat;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_eigval.rcbuffer->pybuffer, (PyObject*)__pyx_v_eigval, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4444, __pyx_L1_error)
  }
  __pyx_pybuffernd_eigval.diminfo[0].strides = __pyx_pybuffernd_eigval.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_eigval.diminfo[0].shape = __pyx_pybuffernd_eigval.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_eigvec.rcbuffer->pybuffer, (PyObject*)__pyx_v_eigvec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4444, __pyx_L1_error)
  }
  __pyx_pybuffernd_eigvec.diminfo[0].strides = __pyx_pybuffernd_eigvec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_eigvec.diminfo[0].shape = __pyx_pybuffernd_eigvec.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_quat.rcbuffer->pybuffer, (PyObject*)__pyx_v_quat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4444, __pyx_L1_error)
  }
  __pyx_pybuffernd_quat.diminfo[0].strides = __pyx_pybuffernd_quat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_quat.diminfo[0].shape = __pyx_pybuffernd_quat.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mat.rcbuffer->pybuffer, (PyObject*)__pyx_v_mat, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4444, __pyx_L1_error)
  }
  __pyx_pybuffernd_mat.diminfo[0].strides = __pyx_pybuffernd_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mat.diminfo[0].shape = __pyx_pybuffernd_mat.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4445
 * 
 * def _mju_eig3(np.ndarray[np.float64_t, mode="c", ndim=1] eigval, np.ndarray[np.float64_t, mode="c", ndim=1] eigvec, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):
 *     return mju_eig3(&eigval[0], &eigvec[0], &quat[0], &mat[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_muscleFVL(float len, float vel, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_eigval.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_eigval.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4445, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_eigvec.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_eigvec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4445, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_quat.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_quat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4445, __pyx_L1_error)
  }
  __pyx_t_5 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_pybuffernd_mat.diminfo[0].shape;
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_mat.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4445, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_PyInt_From_int(mju_eig3((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_eigval.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_eigval.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_eigvec.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_eigvec.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_quat.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_quat.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mat.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_mat.diminfo[0].strides))))); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 4445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4444
 *     return mju_cholUpdate(&mat[0], &x[0], n, flg_plus)
 * 
 * def _mju_eig3(np.ndarray[np.float64_t, mode="c", ndim=1] eigval, np.ndarray[np.float64_t, mode="c", ndim=1] eigvec, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     return mju_eig3(&eigval[0], &eigvec[0], &quat[0], &mat[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_eigval.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_eigvec.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_eig3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_eigval.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_eigvec.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mat.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_quat.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4447
 *     return mju_eig3(&eigval[0], &eigvec[0], &quat[0], &mat[0])
 * 
 * def _mju_muscleFVL(float len, float vel, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):             # <<<<<<<<<<<<<<
 *     return mju_muscleFVL(len, vel, lmin, lmax, &prm[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_413_mju_muscleFVL(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_413_mju_muscleFVL = {"_mju_muscleFVL", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_413_mju_muscleFVL, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_413_mju_muscleFVL(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  float __pyx_v_len;
  float __pyx_v_vel;
  float __pyx_v_lmin;
  float __pyx_v_lmax;
  PyArrayObject *__pyx_v_prm = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_muscleFVL (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_len,&__pyx_n_s_vel,&__pyx_n_s_lmin,&__pyx_n_s_lmax,&__pyx_n_s_prm,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_len)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vel)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_muscleFVL", 1, 5, 5, 1); __PYX_ERR(3, 4447, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lmin)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_muscleFVL", 1, 5, 5, 2); __PYX_ERR(3, 4447, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lmax)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_muscleFVL", 1, 5, 5, 3); __PYX_ERR(3, 4447, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_prm)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_muscleFVL", 1, 5, 5, 4); __PYX_ERR(3, 4447, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_muscleFVL") < 0)) __PYX_ERR(3, 4447, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_len = __pyx_PyFloat_AsFloat(values[0]); if (unlikely((__pyx_v_len == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4447, __pyx_L3_error)
    __pyx_v_vel = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_vel == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4447, __pyx_L3_error)
    __pyx_v_lmin = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_lmin == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4447, __pyx_L3_error)
    __pyx_v_lmax = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_lmax == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4447, __pyx_L3_error)
    __pyx_v_prm = ((PyArrayObject *)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_muscleFVL", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4447, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_muscleFVL", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_prm), __pyx_ptype_5numpy_ndarray, 1, "prm", 0))) __PYX_ERR(3, 4447, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_412_mju_muscleFVL(__pyx_self, __pyx_v_len, __pyx_v_vel, __pyx_v_lmin, __pyx_v_lmax, __pyx_v_prm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_412_mju_muscleFVL(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_len, float __pyx_v_vel, float __pyx_v_lmin, float __pyx_v_lmax, PyArrayObject *__pyx_v_prm) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_prm;
  __Pyx_Buffer __pyx_pybuffer_prm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_muscleFVL", 0);
  __pyx_pybuffer_prm.pybuffer.buf = NULL;
  __pyx_pybuffer_prm.refcount = 0;
  __pyx_pybuffernd_prm.data = NULL;
  __pyx_pybuffernd_prm.rcbuffer = &__pyx_pybuffer_prm;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_prm.rcbuffer->pybuffer, (PyObject*)__pyx_v_prm, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4447, __pyx_L1_error)
  }
  __pyx_pybuffernd_prm.diminfo[0].strides = __pyx_pybuffernd_prm.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_prm.diminfo[0].shape = __pyx_pybuffernd_prm.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4448
 * 
 * def _mju_muscleFVL(float len, float vel, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):
 *     return mju_muscleFVL(len, vel, lmin, lmax, &prm[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_musclePassive(float len, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_prm.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_prm.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4448, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(mju_muscleFVL(__pyx_v_len, __pyx_v_vel, __pyx_v_lmin, __pyx_v_lmax, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_prm.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_prm.diminfo[0].strides))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4447
 *     return mju_eig3(&eigval[0], &eigvec[0], &quat[0], &mat[0])
 * 
 * def _mju_muscleFVL(float len, float vel, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):             # <<<<<<<<<<<<<<
 *     return mju_muscleFVL(len, vel, lmin, lmax, &prm[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_prm.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_muscleFVL", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_prm.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4450
 *     return mju_muscleFVL(len, vel, lmin, lmax, &prm[0])
 * 
 * def _mju_musclePassive(float len, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):             # <<<<<<<<<<<<<<
 *     return mju_musclePassive(len, lmin, lmax, &prm[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_415_mju_musclePassive(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_415_mju_musclePassive = {"_mju_musclePassive", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_415_mju_musclePassive, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_415_mju_musclePassive(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  float __pyx_v_len;
  float __pyx_v_lmin;
  float __pyx_v_lmax;
  PyArrayObject *__pyx_v_prm = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_musclePassive (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_len,&__pyx_n_s_lmin,&__pyx_n_s_lmax,&__pyx_n_s_prm,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_len)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lmin)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_musclePassive", 1, 4, 4, 1); __PYX_ERR(3, 4450, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lmax)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_musclePassive", 1, 4, 4, 2); __PYX_ERR(3, 4450, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_prm)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_musclePassive", 1, 4, 4, 3); __PYX_ERR(3, 4450, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_musclePassive") < 0)) __PYX_ERR(3, 4450, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_len = __pyx_PyFloat_AsFloat(values[0]); if (unlikely((__pyx_v_len == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4450, __pyx_L3_error)
    __pyx_v_lmin = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_lmin == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4450, __pyx_L3_error)
    __pyx_v_lmax = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_lmax == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4450, __pyx_L3_error)
    __pyx_v_prm = ((PyArrayObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_musclePassive", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4450, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_musclePassive", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_prm), __pyx_ptype_5numpy_ndarray, 1, "prm", 0))) __PYX_ERR(3, 4450, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_414_mju_musclePassive(__pyx_self, __pyx_v_len, __pyx_v_lmin, __pyx_v_lmax, __pyx_v_prm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_414_mju_musclePassive(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_len, float __pyx_v_lmin, float __pyx_v_lmax, PyArrayObject *__pyx_v_prm) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_prm;
  __Pyx_Buffer __pyx_pybuffer_prm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_musclePassive", 0);
  __pyx_pybuffer_prm.pybuffer.buf = NULL;
  __pyx_pybuffer_prm.refcount = 0;
  __pyx_pybuffernd_prm.data = NULL;
  __pyx_pybuffernd_prm.rcbuffer = &__pyx_pybuffer_prm;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_prm.rcbuffer->pybuffer, (PyObject*)__pyx_v_prm, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4450, __pyx_L1_error)
  }
  __pyx_pybuffernd_prm.diminfo[0].strides = __pyx_pybuffernd_prm.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_prm.diminfo[0].shape = __pyx_pybuffernd_prm.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4451
 * 
 * def _mju_musclePassive(float len, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):
 *     return mju_musclePassive(len, lmin, lmax, &prm[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_pneumatic(float len, float len0, float vel, np.ndarray[np.float64_t, mode="c", ndim=1] prm, float act, float ctrl, float timestep, np.ndarray[np.float64_t, mode="c", ndim=1] jac):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_prm.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_prm.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4451, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(mju_musclePassive(__pyx_v_len, __pyx_v_lmin, __pyx_v_lmax, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_prm.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_prm.diminfo[0].strides))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4450
 *     return mju_muscleFVL(len, vel, lmin, lmax, &prm[0])
 * 
 * def _mju_musclePassive(float len, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):             # <<<<<<<<<<<<<<
 *     return mju_musclePassive(len, lmin, lmax, &prm[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_prm.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_musclePassive", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_prm.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4453
 *     return mju_musclePassive(len, lmin, lmax, &prm[0])
 * 
 * def _mju_pneumatic(float len, float len0, float vel, np.ndarray[np.float64_t, mode="c", ndim=1] prm, float act, float ctrl, float timestep, np.ndarray[np.float64_t, mode="c", ndim=1] jac):             # <<<<<<<<<<<<<<
 *     return mju_pneumatic(len, len0, vel, &prm[0], act, ctrl, timestep, &jac[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_417_mju_pneumatic(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_417_mju_pneumatic = {"_mju_pneumatic", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_417_mju_pneumatic, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_417_mju_pneumatic(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  float __pyx_v_len;
  float __pyx_v_len0;
  float __pyx_v_vel;
  PyArrayObject *__pyx_v_prm = 0;
  float __pyx_v_act;
  float __pyx_v_ctrl;
  float __pyx_v_timestep;
  PyArrayObject *__pyx_v_jac = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_pneumatic (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_len,&__pyx_n_s_len0,&__pyx_n_s_vel,&__pyx_n_s_prm,&__pyx_n_s_act,&__pyx_n_s_ctrl,&__pyx_n_s_timestep,&__pyx_n_s_jac,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_len)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_len0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_pneumatic", 1, 8, 8, 1); __PYX_ERR(3, 4453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vel)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_pneumatic", 1, 8, 8, 2); __PYX_ERR(3, 4453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_prm)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_pneumatic", 1, 8, 8, 3); __PYX_ERR(3, 4453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_act)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_pneumatic", 1, 8, 8, 4); __PYX_ERR(3, 4453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ctrl)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_pneumatic", 1, 8, 8, 5); __PYX_ERR(3, 4453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timestep)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_pneumatic", 1, 8, 8, 6); __PYX_ERR(3, 4453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jac)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_pneumatic", 1, 8, 8, 7); __PYX_ERR(3, 4453, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_pneumatic") < 0)) __PYX_ERR(3, 4453, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_len = __pyx_PyFloat_AsFloat(values[0]); if (unlikely((__pyx_v_len == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4453, __pyx_L3_error)
    __pyx_v_len0 = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_len0 == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4453, __pyx_L3_error)
    __pyx_v_vel = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_vel == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4453, __pyx_L3_error)
    __pyx_v_prm = ((PyArrayObject *)values[3]);
    __pyx_v_act = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_act == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4453, __pyx_L3_error)
    __pyx_v_ctrl = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_ctrl == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4453, __pyx_L3_error)
    __pyx_v_timestep = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_timestep == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4453, __pyx_L3_error)
    __pyx_v_jac = ((PyArrayObject *)values[7]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_pneumatic", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4453, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_pneumatic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_prm), __pyx_ptype_5numpy_ndarray, 1, "prm", 0))) __PYX_ERR(3, 4453, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_jac), __pyx_ptype_5numpy_ndarray, 1, "jac", 0))) __PYX_ERR(3, 4453, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_416_mju_pneumatic(__pyx_self, __pyx_v_len, __pyx_v_len0, __pyx_v_vel, __pyx_v_prm, __pyx_v_act, __pyx_v_ctrl, __pyx_v_timestep, __pyx_v_jac);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_416_mju_pneumatic(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_len, float __pyx_v_len0, float __pyx_v_vel, PyArrayObject *__pyx_v_prm, float __pyx_v_act, float __pyx_v_ctrl, float __pyx_v_timestep, PyArrayObject *__pyx_v_jac) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_jac;
  __Pyx_Buffer __pyx_pybuffer_jac;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_prm;
  __Pyx_Buffer __pyx_pybuffer_prm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_mju_pneumatic", 0);
  __pyx_pybuffer_prm.pybuffer.buf = NULL;
  __pyx_pybuffer_prm.refcount = 0;
  __pyx_pybuffernd_prm.data = NULL;
  __pyx_pybuffernd_prm.rcbuffer = &__pyx_pybuffer_prm;
  __pyx_pybuffer_jac.pybuffer.buf = NULL;
  __pyx_pybuffer_jac.refcount = 0;
  __pyx_pybuffernd_jac.data = NULL;
  __pyx_pybuffernd_jac.rcbuffer = &__pyx_pybuffer_jac;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_prm.rcbuffer->pybuffer, (PyObject*)__pyx_v_prm, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4453, __pyx_L1_error)
  }
  __pyx_pybuffernd_prm.diminfo[0].strides = __pyx_pybuffernd_prm.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_prm.diminfo[0].shape = __pyx_pybuffernd_prm.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_jac.rcbuffer->pybuffer, (PyObject*)__pyx_v_jac, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4453, __pyx_L1_error)
  }
  __pyx_pybuffernd_jac.diminfo[0].strides = __pyx_pybuffernd_jac.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_jac.diminfo[0].shape = __pyx_pybuffernd_jac.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4454
 * 
 * def _mju_pneumatic(float len, float len0, float vel, np.ndarray[np.float64_t, mode="c", ndim=1] prm, float act, float ctrl, float timestep, np.ndarray[np.float64_t, mode="c", ndim=1] jac):
 *     return mju_pneumatic(len, len0, vel, &prm[0], act, ctrl, timestep, &jac[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_encodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_prm.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_prm.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4454, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_jac.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_jac.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4454, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(mju_pneumatic(__pyx_v_len, __pyx_v_len0, __pyx_v_vel, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_prm.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_prm.diminfo[0].strides))), __pyx_v_act, __pyx_v_ctrl, __pyx_v_timestep, (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_jac.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_jac.diminfo[0].strides))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 4454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4453
 *     return mju_musclePassive(len, lmin, lmax, &prm[0])
 * 
 * def _mju_pneumatic(float len, float len0, float vel, np.ndarray[np.float64_t, mode="c", ndim=1] prm, float act, float ctrl, float timestep, np.ndarray[np.float64_t, mode="c", ndim=1] jac):             # <<<<<<<<<<<<<<
 *     return mju_pneumatic(len, len0, vel, &prm[0], act, ctrl, timestep, &jac[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jac.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_prm.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_pneumatic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_jac.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_prm.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4456
 *     return mju_pneumatic(len, len0, vel, &prm[0], act, ctrl, timestep, &jac[0])
 * 
 * def _mju_encodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):             # <<<<<<<<<<<<<<
 *     mju_encodePyramid(&pyramid[0], &force[0], &mu[0], dim)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_419_mju_encodePyramid(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_419_mju_encodePyramid = {"_mju_encodePyramid", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_419_mju_encodePyramid, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_419_mju_encodePyramid(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_pyramid = 0;
  PyArrayObject *__pyx_v_force = 0;
  PyArrayObject *__pyx_v_mu = 0;
  int __pyx_v_dim;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_encodePyramid (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyramid,&__pyx_n_s_force,&__pyx_n_s_mu,&__pyx_n_s_dim,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pyramid)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_encodePyramid", 1, 4, 4, 1); __PYX_ERR(3, 4456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_encodePyramid", 1, 4, 4, 2); __PYX_ERR(3, 4456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dim)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_encodePyramid", 1, 4, 4, 3); __PYX_ERR(3, 4456, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_encodePyramid") < 0)) __PYX_ERR(3, 4456, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_pyramid = ((PyArrayObject *)values[0]);
    __pyx_v_force = ((PyArrayObject *)values[1]);
    __pyx_v_mu = ((PyArrayObject *)values[2]);
    __pyx_v_dim = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_dim == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4456, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_encodePyramid", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4456, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_encodePyramid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pyramid), __pyx_ptype_5numpy_ndarray, 1, "pyramid", 0))) __PYX_ERR(3, 4456, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_force), __pyx_ptype_5numpy_ndarray, 1, "force", 0))) __PYX_ERR(3, 4456, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mu), __pyx_ptype_5numpy_ndarray, 1, "mu", 0))) __PYX_ERR(3, 4456, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_418_mju_encodePyramid(__pyx_self, __pyx_v_pyramid, __pyx_v_force, __pyx_v_mu, __pyx_v_dim);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_418_mju_encodePyramid(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_pyramid, PyArrayObject *__pyx_v_force, PyArrayObject *__pyx_v_mu, int __pyx_v_dim) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_force;
  __Pyx_Buffer __pyx_pybuffer_force;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mu;
  __Pyx_Buffer __pyx_pybuffer_mu;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pyramid;
  __Pyx_Buffer __pyx_pybuffer_pyramid;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_encodePyramid", 0);
  __pyx_pybuffer_pyramid.pybuffer.buf = NULL;
  __pyx_pybuffer_pyramid.refcount = 0;
  __pyx_pybuffernd_pyramid.data = NULL;
  __pyx_pybuffernd_pyramid.rcbuffer = &__pyx_pybuffer_pyramid;
  __pyx_pybuffer_force.pybuffer.buf = NULL;
  __pyx_pybuffer_force.refcount = 0;
  __pyx_pybuffernd_force.data = NULL;
  __pyx_pybuffernd_force.rcbuffer = &__pyx_pybuffer_force;
  __pyx_pybuffer_mu.pybuffer.buf = NULL;
  __pyx_pybuffer_mu.refcount = 0;
  __pyx_pybuffernd_mu.data = NULL;
  __pyx_pybuffernd_mu.rcbuffer = &__pyx_pybuffer_mu;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pyramid.rcbuffer->pybuffer, (PyObject*)__pyx_v_pyramid, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4456, __pyx_L1_error)
  }
  __pyx_pybuffernd_pyramid.diminfo[0].strides = __pyx_pybuffernd_pyramid.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pyramid.diminfo[0].shape = __pyx_pybuffernd_pyramid.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_force.rcbuffer->pybuffer, (PyObject*)__pyx_v_force, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4456, __pyx_L1_error)
  }
  __pyx_pybuffernd_force.diminfo[0].strides = __pyx_pybuffernd_force.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_force.diminfo[0].shape = __pyx_pybuffernd_force.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mu.rcbuffer->pybuffer, (PyObject*)__pyx_v_mu, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4456, __pyx_L1_error)
  }
  __pyx_pybuffernd_mu.diminfo[0].strides = __pyx_pybuffernd_mu.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mu.diminfo[0].shape = __pyx_pybuffernd_mu.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4457
 * 
 * def _mju_encodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):
 *     mju_encodePyramid(&pyramid[0], &force[0], &mu[0], dim)             # <<<<<<<<<<<<<<
 * 
 * def _mju_decodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_pyramid.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_pyramid.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4457, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_force.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_force.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4457, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_mu.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_mu.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4457, __pyx_L1_error)
  }
  mju_encodePyramid((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pyramid.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_pyramid.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_force.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_force.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mu.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_mu.diminfo[0].strides))), __pyx_v_dim);

  /* "mujoco_py/generated/wrappers.pxi":4456
 *     return mju_pneumatic(len, len0, vel, &prm[0], act, ctrl, timestep, &jac[0])
 * 
 * def _mju_encodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):             # <<<<<<<<<<<<<<
 *     mju_encodePyramid(&pyramid[0], &force[0], &mu[0], dim)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_force.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mu.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pyramid.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_encodePyramid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_force.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mu.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pyramid.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4459
 *     mju_encodePyramid(&pyramid[0], &force[0], &mu[0], dim)
 * 
 * def _mju_decodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):             # <<<<<<<<<<<<<<
 *     mju_decodePyramid(&force[0], &pyramid[0], &mu[0], dim)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_421_mju_decodePyramid(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_421_mju_decodePyramid = {"_mju_decodePyramid", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_421_mju_decodePyramid, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_421_mju_decodePyramid(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_force = 0;
  PyArrayObject *__pyx_v_pyramid = 0;
  PyArrayObject *__pyx_v_mu = 0;
  int __pyx_v_dim;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_decodePyramid (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_force,&__pyx_n_s_pyramid,&__pyx_n_s_mu,&__pyx_n_s_dim,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pyramid)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_decodePyramid", 1, 4, 4, 1); __PYX_ERR(3, 4459, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_decodePyramid", 1, 4, 4, 2); __PYX_ERR(3, 4459, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dim)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_decodePyramid", 1, 4, 4, 3); __PYX_ERR(3, 4459, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_decodePyramid") < 0)) __PYX_ERR(3, 4459, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_force = ((PyArrayObject *)values[0]);
    __pyx_v_pyramid = ((PyArrayObject *)values[1]);
    __pyx_v_mu = ((PyArrayObject *)values[2]);
    __pyx_v_dim = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_dim == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4459, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_decodePyramid", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4459, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_decodePyramid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_force), __pyx_ptype_5numpy_ndarray, 1, "force", 0))) __PYX_ERR(3, 4459, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pyramid), __pyx_ptype_5numpy_ndarray, 1, "pyramid", 0))) __PYX_ERR(3, 4459, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mu), __pyx_ptype_5numpy_ndarray, 1, "mu", 0))) __PYX_ERR(3, 4459, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_420_mju_decodePyramid(__pyx_self, __pyx_v_force, __pyx_v_pyramid, __pyx_v_mu, __pyx_v_dim);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_420_mju_decodePyramid(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_force, PyArrayObject *__pyx_v_pyramid, PyArrayObject *__pyx_v_mu, int __pyx_v_dim) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_force;
  __Pyx_Buffer __pyx_pybuffer_force;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mu;
  __Pyx_Buffer __pyx_pybuffer_mu;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_pyramid;
  __Pyx_Buffer __pyx_pybuffer_pyramid;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("_mju_decodePyramid", 0);
  __pyx_pybuffer_force.pybuffer.buf = NULL;
  __pyx_pybuffer_force.refcount = 0;
  __pyx_pybuffernd_force.data = NULL;
  __pyx_pybuffernd_force.rcbuffer = &__pyx_pybuffer_force;
  __pyx_pybuffer_pyramid.pybuffer.buf = NULL;
  __pyx_pybuffer_pyramid.refcount = 0;
  __pyx_pybuffernd_pyramid.data = NULL;
  __pyx_pybuffernd_pyramid.rcbuffer = &__pyx_pybuffer_pyramid;
  __pyx_pybuffer_mu.pybuffer.buf = NULL;
  __pyx_pybuffer_mu.refcount = 0;
  __pyx_pybuffernd_mu.data = NULL;
  __pyx_pybuffernd_mu.rcbuffer = &__pyx_pybuffer_mu;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_force.rcbuffer->pybuffer, (PyObject*)__pyx_v_force, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4459, __pyx_L1_error)
  }
  __pyx_pybuffernd_force.diminfo[0].strides = __pyx_pybuffernd_force.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_force.diminfo[0].shape = __pyx_pybuffernd_force.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pyramid.rcbuffer->pybuffer, (PyObject*)__pyx_v_pyramid, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4459, __pyx_L1_error)
  }
  __pyx_pybuffernd_pyramid.diminfo[0].strides = __pyx_pybuffernd_pyramid.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pyramid.diminfo[0].shape = __pyx_pybuffernd_pyramid.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mu.rcbuffer->pybuffer, (PyObject*)__pyx_v_mu, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4459, __pyx_L1_error)
  }
  __pyx_pybuffernd_mu.diminfo[0].strides = __pyx_pybuffernd_mu.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mu.diminfo[0].shape = __pyx_pybuffernd_mu.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4460
 * 
 * def _mju_decodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):
 *     mju_decodePyramid(&force[0], &pyramid[0], &mu[0], dim)             # <<<<<<<<<<<<<<
 * 
 * def _mju_springDamper(float pos0, float vel0, float Kp, float Kv, float dt):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_force.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_force.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4460, __pyx_L1_error)
  }
  __pyx_t_3 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_3 < 0) {
    __pyx_t_3 += __pyx_pybuffernd_pyramid.diminfo[0].shape;
    if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_pyramid.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4460, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_4 < 0) {
    __pyx_t_4 += __pyx_pybuffernd_mu.diminfo[0].shape;
    if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_mu.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4460, __pyx_L1_error)
  }
  mju_decodePyramid((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_force.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_force.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_pyramid.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_pyramid.diminfo[0].strides))), (&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_mu.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_mu.diminfo[0].strides))), __pyx_v_dim);

  /* "mujoco_py/generated/wrappers.pxi":4459
 *     mju_encodePyramid(&pyramid[0], &force[0], &mu[0], dim)
 * 
 * def _mju_decodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):             # <<<<<<<<<<<<<<
 *     mju_decodePyramid(&force[0], &pyramid[0], &mu[0], dim)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_force.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mu.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pyramid.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_decodePyramid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_force.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mu.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pyramid.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4462
 *     mju_decodePyramid(&force[0], &pyramid[0], &mu[0], dim)
 * 
 * def _mju_springDamper(float pos0, float vel0, float Kp, float Kv, float dt):             # <<<<<<<<<<<<<<
 *     return mju_springDamper(pos0, vel0, Kp, Kv, dt)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_423_mju_springDamper(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_423_mju_springDamper = {"_mju_springDamper", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_423_mju_springDamper, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_423_mju_springDamper(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  float __pyx_v_pos0;
  float __pyx_v_vel0;
  float __pyx_v_Kp;
  float __pyx_v_Kv;
  float __pyx_v_dt;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_springDamper (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pos0,&__pyx_n_s_vel0,&__pyx_n_s_Kp,&__pyx_n_s_Kv,&__pyx_n_s_dt,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos0)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vel0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_springDamper", 1, 5, 5, 1); __PYX_ERR(3, 4462, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Kp)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_springDamper", 1, 5, 5, 2); __PYX_ERR(3, 4462, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Kv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_springDamper", 1, 5, 5, 3); __PYX_ERR(3, 4462, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_springDamper", 1, 5, 5, 4); __PYX_ERR(3, 4462, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_springDamper") < 0)) __PYX_ERR(3, 4462, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_pos0 = __pyx_PyFloat_AsFloat(values[0]); if (unlikely((__pyx_v_pos0 == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4462, __pyx_L3_error)
    __pyx_v_vel0 = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_vel0 == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4462, __pyx_L3_error)
    __pyx_v_Kp = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_Kp == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4462, __pyx_L3_error)
    __pyx_v_Kv = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_Kv == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4462, __pyx_L3_error)
    __pyx_v_dt = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_dt == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4462, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_springDamper", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4462, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_springDamper", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_422_mju_springDamper(__pyx_self, __pyx_v_pos0, __pyx_v_vel0, __pyx_v_Kp, __pyx_v_Kv, __pyx_v_dt);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_422_mju_springDamper(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_pos0, float __pyx_v_vel0, float __pyx_v_Kp, float __pyx_v_Kv, float __pyx_v_dt) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mju_springDamper", 0);

  /* "mujoco_py/generated/wrappers.pxi":4463
 * 
 * def _mju_springDamper(float pos0, float vel0, float Kp, float Kv, float dt):
 *     return mju_springDamper(pos0, vel0, Kp, Kv, dt)             # <<<<<<<<<<<<<<
 * 
 * def _mju_min(float a, float b):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(mju_springDamper(__pyx_v_pos0, __pyx_v_vel0, __pyx_v_Kp, __pyx_v_Kv, __pyx_v_dt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4462
 *     mju_decodePyramid(&force[0], &pyramid[0], &mu[0], dim)
 * 
 * def _mju_springDamper(float pos0, float vel0, float Kp, float Kv, float dt):             # <<<<<<<<<<<<<<
 *     return mju_springDamper(pos0, vel0, Kp, Kv, dt)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_springDamper", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4465
 *     return mju_springDamper(pos0, vel0, Kp, Kv, dt)
 * 
 * def _mju_min(float a, float b):             # <<<<<<<<<<<<<<
 *     return mju_min(a, b)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_425_mju_min(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_425_mju_min = {"_mju_min", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_425_mju_min, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_425_mju_min(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  float __pyx_v_a;
  float __pyx_v_b;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_min (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_b,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_min", 1, 2, 2, 1); __PYX_ERR(3, 4465, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_min") < 0)) __PYX_ERR(3, 4465, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_a = __pyx_PyFloat_AsFloat(values[0]); if (unlikely((__pyx_v_a == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4465, __pyx_L3_error)
    __pyx_v_b = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_b == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4465, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_min", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4465, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_424_mju_min(__pyx_self, __pyx_v_a, __pyx_v_b);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_424_mju_min(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_a, float __pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mju_min", 0);

  /* "mujoco_py/generated/wrappers.pxi":4466
 * 
 * def _mju_min(float a, float b):
 *     return mju_min(a, b)             # <<<<<<<<<<<<<<
 * 
 * def _mju_max(float a, float b):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(mju_min(__pyx_v_a, __pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4465
 *     return mju_springDamper(pos0, vel0, Kp, Kv, dt)
 * 
 * def _mju_min(float a, float b):             # <<<<<<<<<<<<<<
 *     return mju_min(a, b)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4468
 *     return mju_min(a, b)
 * 
 * def _mju_max(float a, float b):             # <<<<<<<<<<<<<<
 *     return mju_max(a, b)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_427_mju_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_427_mju_max = {"_mju_max", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_427_mju_max, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_427_mju_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  float __pyx_v_a;
  float __pyx_v_b;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_max (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_b,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_max", 1, 2, 2, 1); __PYX_ERR(3, 4468, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_max") < 0)) __PYX_ERR(3, 4468, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_a = __pyx_PyFloat_AsFloat(values[0]); if (unlikely((__pyx_v_a == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4468, __pyx_L3_error)
    __pyx_v_b = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_b == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4468, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_max", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4468, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_426_mju_max(__pyx_self, __pyx_v_a, __pyx_v_b);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_426_mju_max(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_a, float __pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mju_max", 0);

  /* "mujoco_py/generated/wrappers.pxi":4469
 * 
 * def _mju_max(float a, float b):
 *     return mju_max(a, b)             # <<<<<<<<<<<<<<
 * 
 * def _mju_sign(float x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(mju_max(__pyx_v_a, __pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4468
 *     return mju_min(a, b)
 * 
 * def _mju_max(float a, float b):             # <<<<<<<<<<<<<<
 *     return mju_max(a, b)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4471
 *     return mju_max(a, b)
 * 
 * def _mju_sign(float x):             # <<<<<<<<<<<<<<
 *     return mju_sign(x)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_429_mju_sign(PyObject *__pyx_self, PyObject *__pyx_arg_x); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_429_mju_sign = {"_mju_sign", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_429_mju_sign, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_429_mju_sign(PyObject *__pyx_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_sign (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4471, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_sign", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_428_mju_sign(__pyx_self, ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_428_mju_sign(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mju_sign", 0);

  /* "mujoco_py/generated/wrappers.pxi":4472
 * 
 * def _mju_sign(float x):
 *     return mju_sign(x)             # <<<<<<<<<<<<<<
 * 
 * def _mju_round(float x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(mju_sign(__pyx_v_x)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4471
 *     return mju_max(a, b)
 * 
 * def _mju_sign(float x):             # <<<<<<<<<<<<<<
 *     return mju_sign(x)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_sign", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4474
 *     return mju_sign(x)
 * 
 * def _mju_round(float x):             # <<<<<<<<<<<<<<
 *     return mju_round(x)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_431_mju_round(PyObject *__pyx_self, PyObject *__pyx_arg_x); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_431_mju_round = {"_mju_round", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_431_mju_round, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_431_mju_round(PyObject *__pyx_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_round (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4474, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_round", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_430_mju_round(__pyx_self, ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_430_mju_round(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mju_round", 0);

  /* "mujoco_py/generated/wrappers.pxi":4475
 * 
 * def _mju_round(float x):
 *     return mju_round(x)             # <<<<<<<<<<<<<<
 * 
 * def _mju_str2Type(str str):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(mju_round(__pyx_v_x)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4474
 *     return mju_sign(x)
 * 
 * def _mju_round(float x):             # <<<<<<<<<<<<<<
 *     return mju_round(x)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_round", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4477
 *     return mju_round(x)
 * 
 * def _mju_str2Type(str str):             # <<<<<<<<<<<<<<
 *     return mju_str2Type(str.encode())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_433_mju_str2Type(PyObject *__pyx_self, PyObject *__pyx_v_str); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_433_mju_str2Type = {"_mju_str2Type", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_433_mju_str2Type, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_433_mju_str2Type(PyObject *__pyx_self, PyObject *__pyx_v_str) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_str2Type (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_str), (&PyUnicode_Type), 1, "str", 1))) __PYX_ERR(3, 4477, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_432_mju_str2Type(__pyx_self, ((PyObject*)__pyx_v_str));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_432_mju_str2Type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_str) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_str2Type", 0);

  /* "mujoco_py/generated/wrappers.pxi":4478
 * 
 * def _mju_str2Type(str str):
 *     return mju_str2Type(str.encode())             # <<<<<<<<<<<<<<
 * 
 * def _mju_isBad(float x):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_str == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
    __PYX_ERR(3, 4478, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_str, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 4478, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_int(mju_str2Type(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4477
 *     return mju_round(x)
 * 
 * def _mju_str2Type(str str):             # <<<<<<<<<<<<<<
 *     return mju_str2Type(str.encode())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_str2Type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4480
 *     return mju_str2Type(str.encode())
 * 
 * def _mju_isBad(float x):             # <<<<<<<<<<<<<<
 *     return mju_isBad(x)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_435_mju_isBad(PyObject *__pyx_self, PyObject *__pyx_arg_x); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_435_mju_isBad = {"_mju_isBad", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_435_mju_isBad, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_435_mju_isBad(PyObject *__pyx_self, PyObject *__pyx_arg_x) {
  float __pyx_v_x;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_isBad (wrapper)", 0);
  assert(__pyx_arg_x); {
    __pyx_v_x = __pyx_PyFloat_AsFloat(__pyx_arg_x); if (unlikely((__pyx_v_x == (float)-1) && PyErr_Occurred())) __PYX_ERR(3, 4480, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_isBad", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_434_mju_isBad(__pyx_self, ((float)__pyx_v_x));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_434_mju_isBad(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mju_isBad", 0);

  /* "mujoco_py/generated/wrappers.pxi":4481
 * 
 * def _mju_isBad(float x):
 *     return mju_isBad(x)             # <<<<<<<<<<<<<<
 * 
 * def _mju_isZero(np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(mju_isBad(__pyx_v_x)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4480
 *     return mju_str2Type(str.encode())
 * 
 * def _mju_isBad(float x):             # <<<<<<<<<<<<<<
 *     return mju_isBad(x)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_isBad", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4483
 *     return mju_isBad(x)
 * 
 * def _mju_isZero(np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     return mju_isZero(&vec[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_437_mju_isZero(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_437_mju_isZero = {"_mju_isZero", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_437_mju_isZero, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_437_mju_isZero(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_vec = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_isZero (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vec,&__pyx_n_s_n,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vec)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_isZero", 1, 2, 2, 1); __PYX_ERR(3, 4483, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_isZero") < 0)) __PYX_ERR(3, 4483, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_vec = ((PyArrayObject *)values[0]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4483, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_isZero", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4483, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_isZero", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vec), __pyx_ptype_5numpy_ndarray, 1, "vec", 0))) __PYX_ERR(3, 4483, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_436_mju_isZero(__pyx_self, __pyx_v_vec, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_436_mju_isZero(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_vec, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_vec;
  __Pyx_Buffer __pyx_pybuffer_vec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_isZero", 0);
  __pyx_pybuffer_vec.pybuffer.buf = NULL;
  __pyx_pybuffer_vec.refcount = 0;
  __pyx_pybuffernd_vec.data = NULL;
  __pyx_pybuffernd_vec.rcbuffer = &__pyx_pybuffer_vec;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vec.rcbuffer->pybuffer, (PyObject*)__pyx_v_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4483, __pyx_L1_error)
  }
  __pyx_pybuffernd_vec.diminfo[0].strides = __pyx_pybuffernd_vec.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vec.diminfo[0].shape = __pyx_pybuffernd_vec.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4484
 * 
 * def _mju_isZero(np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):
 *     return mju_isZero(&vec[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_standardNormal(np.ndarray[np.float64_t, mode="c", ndim=1] num2):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_vec.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_vec.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4484, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(mju_isZero((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_vec.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_vec.diminfo[0].strides))), __pyx_v_n)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4483
 *     return mju_isBad(x)
 * 
 * def _mju_isZero(np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     return mju_isZero(&vec[0], n)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_isZero", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vec.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4486
 *     return mju_isZero(&vec[0], n)
 * 
 * def _mju_standardNormal(np.ndarray[np.float64_t, mode="c", ndim=1] num2):             # <<<<<<<<<<<<<<
 *     return mju_standardNormal(&num2[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_439_mju_standardNormal(PyObject *__pyx_self, PyObject *__pyx_v_num2); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_439_mju_standardNormal = {"_mju_standardNormal", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_439_mju_standardNormal, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_439_mju_standardNormal(PyObject *__pyx_self, PyObject *__pyx_v_num2) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_standardNormal (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_num2), __pyx_ptype_5numpy_ndarray, 1, "num2", 0))) __PYX_ERR(3, 4486, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_438_mju_standardNormal(__pyx_self, ((PyArrayObject *)__pyx_v_num2));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_438_mju_standardNormal(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_num2) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_num2;
  __Pyx_Buffer __pyx_pybuffer_num2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_mju_standardNormal", 0);
  __pyx_pybuffer_num2.pybuffer.buf = NULL;
  __pyx_pybuffer_num2.refcount = 0;
  __pyx_pybuffernd_num2.data = NULL;
  __pyx_pybuffernd_num2.rcbuffer = &__pyx_pybuffer_num2;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_num2.rcbuffer->pybuffer, (PyObject*)__pyx_v_num2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4486, __pyx_L1_error)
  }
  __pyx_pybuffernd_num2.diminfo[0].strides = __pyx_pybuffernd_num2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_num2.diminfo[0].shape = __pyx_pybuffernd_num2.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4487
 * 
 * def _mju_standardNormal(np.ndarray[np.float64_t, mode="c", ndim=1] num2):
 *     return mju_standardNormal(&num2[0])             # <<<<<<<<<<<<<<
 * 
 * def _mju_insertionSort(np.ndarray[np.float64_t, mode="c", ndim=1] list, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_num2.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_num2.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4487, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(mju_standardNormal((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_num2.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_num2.diminfo[0].strides))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 4487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4486
 *     return mju_isZero(&vec[0], n)
 * 
 * def _mju_standardNormal(np.ndarray[np.float64_t, mode="c", ndim=1] num2):             # <<<<<<<<<<<<<<
 *     return mju_standardNormal(&num2[0])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_num2.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_standardNormal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_num2.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4489
 *     return mju_standardNormal(&num2[0])
 * 
 * def _mju_insertionSort(np.ndarray[np.float64_t, mode="c", ndim=1] list, int n):             # <<<<<<<<<<<<<<
 *     mju_insertionSort(&list[0], n)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_441_mju_insertionSort(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_441_mju_insertionSort = {"_mju_insertionSort", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_441_mju_insertionSort, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_441_mju_insertionSort(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_list = 0;
  int __pyx_v_n;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_insertionSort (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_list,&__pyx_n_s_n,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_list)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_insertionSort", 1, 2, 2, 1); __PYX_ERR(3, 4489, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_insertionSort") < 0)) __PYX_ERR(3, 4489, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_list = ((PyArrayObject *)values[0]);
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4489, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_insertionSort", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4489, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_insertionSort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_list), __pyx_ptype_5numpy_ndarray, 1, "list", 0))) __PYX_ERR(3, 4489, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_440_mju_insertionSort(__pyx_self, __pyx_v_list, __pyx_v_n);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_440_mju_insertionSort(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_list, int __pyx_v_n) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_list;
  __Pyx_Buffer __pyx_pybuffer_list;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_mju_insertionSort", 0);
  __pyx_pybuffer_list.pybuffer.buf = NULL;
  __pyx_pybuffer_list.refcount = 0;
  __pyx_pybuffernd_list.data = NULL;
  __pyx_pybuffernd_list.rcbuffer = &__pyx_pybuffer_list;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_list.rcbuffer->pybuffer, (PyObject*)__pyx_v_list, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(3, 4489, __pyx_L1_error)
  }
  __pyx_pybuffernd_list.diminfo[0].strides = __pyx_pybuffernd_list.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_list.diminfo[0].shape = __pyx_pybuffernd_list.rcbuffer->pybuffer.shape[0];

  /* "mujoco_py/generated/wrappers.pxi":4490
 * 
 * def _mju_insertionSort(np.ndarray[np.float64_t, mode="c", ndim=1] list, int n):
 *     mju_insertionSort(&list[0], n)             # <<<<<<<<<<<<<<
 * 
 * def _mju_Halton(int index, int base):
 */
  __pyx_t_1 = 0;
  __pyx_t_2 = -1;
  if (__pyx_t_1 < 0) {
    __pyx_t_1 += __pyx_pybuffernd_list.diminfo[0].shape;
    if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
  } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_list.diminfo[0].shape)) __pyx_t_2 = 0;
  if (unlikely(__pyx_t_2 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_2);
    __PYX_ERR(3, 4490, __pyx_L1_error)
  }
  mju_insertionSort((&(*__Pyx_BufPtrCContig1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_list.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_list.diminfo[0].strides))), __pyx_v_n);

  /* "mujoco_py/generated/wrappers.pxi":4489
 *     return mju_standardNormal(&num2[0])
 * 
 * def _mju_insertionSort(np.ndarray[np.float64_t, mode="c", ndim=1] list, int n):             # <<<<<<<<<<<<<<
 *     mju_insertionSort(&list[0], n)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_list.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj._mju_insertionSort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_list.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/generated/wrappers.pxi":4492
 *     mju_insertionSort(&list[0], n)
 * 
 * def _mju_Halton(int index, int base):             # <<<<<<<<<<<<<<
 *     return mju_Halton(index, base)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_443_mju_Halton(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_443_mju_Halton = {"_mju_Halton", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_443_mju_Halton, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_443_mju_Halton(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_index;
  int __pyx_v_base;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mju_Halton (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,&__pyx_n_s_base,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_index)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_base)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_mju_Halton", 1, 2, 2, 1); __PYX_ERR(3, 4492, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mju_Halton") < 0)) __PYX_ERR(3, 4492, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4492, __pyx_L3_error)
    __pyx_v_base = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_base == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 4492, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mju_Halton", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 4492, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj._mju_Halton", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_442_mju_Halton(__pyx_self, __pyx_v_index, __pyx_v_base);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_442_mju_Halton(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_index, int __pyx_v_base) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_mju_Halton", 0);

  /* "mujoco_py/generated/wrappers.pxi":4493
 * 
 * def _mju_Halton(int index, int base):
 *     return mju_Halton(index, base)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(mju_Halton(__pyx_v_index, __pyx_v_base)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/generated/wrappers.pxi":4492
 *     mju_insertionSort(&list[0], n)
 * 
 * def _mju_Halton(int index, int base):             # <<<<<<<<<<<<<<
 *     return mju_Halton(index, base)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj._mju_Halton", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":7
 * 
 * 
 * def _add_mujoco_bin_to_dyld_library_path():             # <<<<<<<<<<<<<<
 *     mujoco_path, _ = discover_mujoco()
 *     bin_path = os.path.join(mujoco_path, "bin")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_445_add_mujoco_bin_to_dyld_library_path(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_445_add_mujoco_bin_to_dyld_library_path = {"_add_mujoco_bin_to_dyld_library_path", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_445_add_mujoco_bin_to_dyld_library_path, METH_NOARGS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_445_add_mujoco_bin_to_dyld_library_path(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_add_mujoco_bin_to_dyld_library_path (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_444_add_mujoco_bin_to_dyld_library_path(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_444_add_mujoco_bin_to_dyld_library_path(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_v_mujoco_path = NULL;
  CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
  PyObject *__pyx_v_bin_path = NULL;
  PyObject *__pyx_v_old_dyld_library_path = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("_add_mujoco_bin_to_dyld_library_path", 0);

  /* "mujoco_py/opengl_context.pyx":8
 * 
 * def _add_mujoco_bin_to_dyld_library_path():
 *     mujoco_path, _ = discover_mujoco()             # <<<<<<<<<<<<<<
 *     bin_path = os.path.join(mujoco_path, "bin")
 *     old_dyld_library_path = os.getenv("DYLD_LIBRARY_PATH", "")
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_discover_mujoco); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 8, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 8, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_mujoco_path = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v__ = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "mujoco_py/opengl_context.pyx":9
 * def _add_mujoco_bin_to_dyld_library_path():
 *     mujoco_path, _ = discover_mujoco()
 *     bin_path = os.path.join(mujoco_path, "bin")             # <<<<<<<<<<<<<<
 *     old_dyld_library_path = os.getenv("DYLD_LIBRARY_PATH", "")
 *     os.environ["DYLD_LIBRARY_PATH"] = "{}:{}".format(
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_mujoco_path, __pyx_n_u_bin};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_mujoco_path, __pyx_n_u_bin};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_v_mujoco_path);
    __Pyx_GIVEREF(__pyx_v_mujoco_path);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_mujoco_path);
    __Pyx_INCREF(__pyx_n_u_bin);
    __Pyx_GIVEREF(__pyx_n_u_bin);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_n_u_bin);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_bin_path = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":10
 *     mujoco_path, _ = discover_mujoco()
 *     bin_path = os.path.join(mujoco_path, "bin")
 *     old_dyld_library_path = os.getenv("DYLD_LIBRARY_PATH", "")             # <<<<<<<<<<<<<<
 *     os.environ["DYLD_LIBRARY_PATH"] = "{}:{}".format(
 *         bin_path, old_dyld_library_path)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getenv); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__84, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_old_dyld_library_path = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":11
 *     bin_path = os.path.join(mujoco_path, "bin")
 *     old_dyld_library_path = os.getenv("DYLD_LIBRARY_PATH", "")
 *     os.environ["DYLD_LIBRARY_PATH"] = "{}:{}".format(             # <<<<<<<<<<<<<<
 *         bin_path, old_dyld_library_path)
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u__85, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "mujoco_py/opengl_context.pyx":12
 *     old_dyld_library_path = os.getenv("DYLD_LIBRARY_PATH", "")
 *     os.environ["DYLD_LIBRARY_PATH"] = "{}:{}".format(
 *         bin_path, old_dyld_library_path)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_bin_path, __pyx_v_old_dyld_library_path};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_bin_path, __pyx_v_old_dyld_library_path};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_v_bin_path);
    __Pyx_GIVEREF(__pyx_v_bin_path);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_bin_path);
    __Pyx_INCREF(__pyx_v_old_dyld_library_path);
    __Pyx_GIVEREF(__pyx_v_old_dyld_library_path);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_old_dyld_library_path);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/opengl_context.pyx":11
 *     bin_path = os.path.join(mujoco_path, "bin")
 *     old_dyld_library_path = os.getenv("DYLD_LIBRARY_PATH", "")
 *     os.environ["DYLD_LIBRARY_PATH"] = "{}:{}".format(             # <<<<<<<<<<<<<<
 *         bin_path, old_dyld_library_path)
 * 
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_environ); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_n_u_DYLD_LIBRARY_PATH, __pyx_t_1) < 0)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":7
 * 
 * 
 * def _add_mujoco_bin_to_dyld_library_path():             # <<<<<<<<<<<<<<
 *     mujoco_path, _ = discover_mujoco()
 *     bin_path = os.path.join(mujoco_path, "bin")
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj._add_mujoco_bin_to_dyld_library_path", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mujoco_path);
  __Pyx_XDECREF(__pyx_v__);
  __Pyx_XDECREF(__pyx_v_bin_path);
  __Pyx_XDECREF(__pyx_v_old_dyld_library_path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":25
 * 
 *     @abstractmethod
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13OpenGLContext_1make_context_current(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_13OpenGLContext_1make_context_current = {"make_context_current", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_13OpenGLContext_1make_context_current, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_13OpenGLContext_1make_context_current(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_context_current (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13OpenGLContext_make_context_current(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13OpenGLContext_make_context_current(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("make_context_current", 0);

  /* "mujoco_py/opengl_context.pyx":26
 *     @abstractmethod
 *     def make_context_current(self):
 *         raise NotImplementedError()             # <<<<<<<<<<<<<<
 * 
 *     @abstractmethod
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 26, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":25
 * 
 *     @abstractmethod
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.OpenGLContext.make_context_current", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":29
 * 
 *     @abstractmethod
 *     def set_buffer_size(self, width, height):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_13OpenGLContext_3set_buffer_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_13OpenGLContext_3set_buffer_size = {"set_buffer_size", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_13OpenGLContext_3set_buffer_size, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_13OpenGLContext_3set_buffer_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_width = 0;
  CYTHON_UNUSED PyObject *__pyx_v_height = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_buffer_size (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_width,&__pyx_n_s_height,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_buffer_size", 1, 3, 3, 1); __PYX_ERR(0, 29, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_buffer_size", 1, 3, 3, 2); __PYX_ERR(0, 29, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_buffer_size") < 0)) __PYX_ERR(0, 29, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_width = values[1];
    __pyx_v_height = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_buffer_size", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 29, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.OpenGLContext.set_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_13OpenGLContext_2set_buffer_size(__pyx_self, __pyx_v_self, __pyx_v_width, __pyx_v_height);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_13OpenGLContext_2set_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_width, CYTHON_UNUSED PyObject *__pyx_v_height) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("set_buffer_size", 0);

  /* "mujoco_py/opengl_context.pyx":30
 *     @abstractmethod
 *     def set_buffer_size(self, width, height):
 *         raise NotImplementedError()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 30, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":29
 * 
 *     @abstractmethod
 *     def set_buffer_size(self, width, height):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.OpenGLContext.set_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":43
 *     _GLFW_IS_INITIALIZED = False
 * 
 *     def __init__(self, offscreen=False):             # <<<<<<<<<<<<<<
 *         GlfwContext._init_glfw()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_11GlfwContext_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11GlfwContext_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_offscreen = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_offscreen,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)((PyObject *)Py_False));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offscreen);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 43, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_offscreen = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 43, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11GlfwContext___init__(__pyx_self, __pyx_v_self, __pyx_v_offscreen);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_offscreen) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "mujoco_py/opengl_context.pyx":44
 * 
 *     def __init__(self, offscreen=False):
 *         GlfwContext._init_glfw()             # <<<<<<<<<<<<<<
 * 
 *         self._width = self._INIT_WIDTH
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GlfwContext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init_glfw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":46
 *         GlfwContext._init_glfw()
 * 
 *         self._width = self._INIT_WIDTH             # <<<<<<<<<<<<<<
 *         self._height = self._INIT_HEIGHT
 *         self.window = self._create_window(offscreen)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_INIT_WIDTH); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_width_2, __pyx_t_1) < 0) __PYX_ERR(0, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":47
 * 
 *         self._width = self._INIT_WIDTH
 *         self._height = self._INIT_HEIGHT             # <<<<<<<<<<<<<<
 *         self.window = self._create_window(offscreen)
 *         self._set_window_size(self._width, self._height)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_INIT_HEIGHT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_height_2, __pyx_t_1) < 0) __PYX_ERR(0, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":48
 *         self._width = self._INIT_WIDTH
 *         self._height = self._INIT_HEIGHT
 *         self.window = self._create_window(offscreen)             # <<<<<<<<<<<<<<
 *         self._set_window_size(self._width, self._height)
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_create_window); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_offscreen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_offscreen};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_offscreen};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_v_offscreen);
      __Pyx_GIVEREF(__pyx_v_offscreen);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_offscreen);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_window, __pyx_t_1) < 0) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":49
 *         self._height = self._INIT_HEIGHT
 *         self.window = self._create_window(offscreen)
 *         self._set_window_size(self._width, self._height)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_set_window_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_2);
    __pyx_t_4 = 0;
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":43
 *     _GLFW_IS_INITIALIZED = False
 * 
 *     def __init__(self, offscreen=False):             # <<<<<<<<<<<<<<
 *         GlfwContext._init_glfw()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":52
 * 
 *     @staticmethod
 *     def _init_glfw():             # <<<<<<<<<<<<<<
 *         if GlfwContext._GLFW_IS_INITIALIZED:
 *             return
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_3_init_glfw(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_11GlfwContext_3_init_glfw = {"_init_glfw", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11GlfwContext_3_init_glfw, METH_NOARGS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_3_init_glfw(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_glfw (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11GlfwContext_2_init_glfw(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_2_init_glfw(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_init_glfw", 0);

  /* "mujoco_py/opengl_context.pyx":53
 *     @staticmethod
 *     def _init_glfw():
 *         if GlfwContext._GLFW_IS_INITIALIZED:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GlfwContext); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GLFW_IS_INITIALIZED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {

    /* "mujoco_py/opengl_context.pyx":54
 *     def _init_glfw():
 *         if GlfwContext._GLFW_IS_INITIALIZED:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         if 'glfw' not in globals():
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "mujoco_py/opengl_context.pyx":53
 *     @staticmethod
 *     def _init_glfw():
 *         if GlfwContext._GLFW_IS_INITIALIZED:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "mujoco_py/opengl_context.pyx":56
 *             return
 * 
 *         if 'glfw' not in globals():             # <<<<<<<<<<<<<<
 *             raise GlfwError("GLFW not installed")
 * 
 */
  __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_glfw, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "mujoco_py/opengl_context.pyx":57
 * 
 *         if 'glfw' not in globals():
 *             raise GlfwError("GLFW not installed")             # <<<<<<<<<<<<<<
 * 
 *         glfw.set_error_callback(GlfwContext._glfw_error_callback)
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GlfwError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__86, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 57, __pyx_L1_error)

    /* "mujoco_py/opengl_context.pyx":56
 *             return
 * 
 *         if 'glfw' not in globals():             # <<<<<<<<<<<<<<
 *             raise GlfwError("GLFW not installed")
 * 
 */
  }

  /* "mujoco_py/opengl_context.pyx":59
 *             raise GlfwError("GLFW not installed")
 * 
 *         glfw.set_error_callback(GlfwContext._glfw_error_callback)             # <<<<<<<<<<<<<<
 * 
 *         # HAX: sometimes first init() fails, while second works fine.
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set_error_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GlfwContext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glfw_error_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 59, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":62
 * 
 *         # HAX: sometimes first init() fails, while second works fine.
 *         glfw.init()             # <<<<<<<<<<<<<<
 *         if not glfw.init():
 *             raise GlfwError("Failed to initialize GLFW")
 */
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_init); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":63
 *         # HAX: sometimes first init() fails, while second works fine.
 *         glfw.init()
 *         if not glfw.init():             # <<<<<<<<<<<<<<
 *             raise GlfwError("Failed to initialize GLFW")
 * 
 */
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_4) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/opengl_context.pyx":64
 *         glfw.init()
 *         if not glfw.init():
 *             raise GlfwError("Failed to initialize GLFW")             # <<<<<<<<<<<<<<
 * 
 *         GlfwContext._GLFW_IS_INITIALIZED = True
 */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GlfwError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__87, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(0, 64, __pyx_L1_error)

    /* "mujoco_py/opengl_context.pyx":63
 *         # HAX: sometimes first init() fails, while second works fine.
 *         glfw.init()
 *         if not glfw.init():             # <<<<<<<<<<<<<<
 *             raise GlfwError("Failed to initialize GLFW")
 * 
 */
  }

  /* "mujoco_py/opengl_context.pyx":66
 *             raise GlfwError("Failed to initialize GLFW")
 * 
 *         GlfwContext._GLFW_IS_INITIALIZED = True             # <<<<<<<<<<<<<<
 * 
 *     def make_context_current(self):
 */
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GlfwContext); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_t_5, __pyx_n_s_GLFW_IS_INITIALIZED, Py_True) < 0) __PYX_ERR(0, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "mujoco_py/opengl_context.pyx":52
 * 
 *     @staticmethod
 *     def _init_glfw():             # <<<<<<<<<<<<<<
 *         if GlfwContext._GLFW_IS_INITIALIZED:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext._init_glfw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":68
 *         GlfwContext._GLFW_IS_INITIALIZED = True
 * 
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         glfw.make_context_current(self.window)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_5make_context_current(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_11GlfwContext_5make_context_current = {"make_context_current", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11GlfwContext_5make_context_current, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_5make_context_current(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_context_current (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11GlfwContext_4make_context_current(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_4make_context_current(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("make_context_current", 0);

  /* "mujoco_py/opengl_context.pyx":69
 * 
 *     def make_context_current(self):
 *         glfw.make_context_current(self.window)             # <<<<<<<<<<<<<<
 * 
 *     def set_buffer_size(self, width, height):
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_make_context_current); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":68
 *         GlfwContext._GLFW_IS_INITIALIZED = True
 * 
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         glfw.make_context_current(self.window)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext.make_context_current", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":71
 *         glfw.make_context_current(self.window)
 * 
 *     def set_buffer_size(self, width, height):             # <<<<<<<<<<<<<<
 *         self._set_window_size(width, height)
 *         self._width = width
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_7set_buffer_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_11GlfwContext_7set_buffer_size = {"set_buffer_size", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11GlfwContext_7set_buffer_size, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_7set_buffer_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_width = 0;
  PyObject *__pyx_v_height = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_buffer_size (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_width,&__pyx_n_s_height,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_buffer_size", 1, 3, 3, 1); __PYX_ERR(0, 71, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_buffer_size", 1, 3, 3, 2); __PYX_ERR(0, 71, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_buffer_size") < 0)) __PYX_ERR(0, 71, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_width = values[1];
    __pyx_v_height = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_buffer_size", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 71, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext.set_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11GlfwContext_6set_buffer_size(__pyx_self, __pyx_v_self, __pyx_v_width, __pyx_v_height);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_6set_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("set_buffer_size", 0);

  /* "mujoco_py/opengl_context.pyx":72
 * 
 *     def set_buffer_size(self, width, height):
 *         self._set_window_size(width, height)             # <<<<<<<<<<<<<<
 *         self._width = width
 *         self._height = height
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_set_window_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_width, __pyx_v_height};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_width, __pyx_v_height};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 72, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_v_width);
    __Pyx_GIVEREF(__pyx_v_width);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_width);
    __Pyx_INCREF(__pyx_v_height);
    __Pyx_GIVEREF(__pyx_v_height);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_height);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":73
 *     def set_buffer_size(self, width, height):
 *         self._set_window_size(width, height)
 *         self._width = width             # <<<<<<<<<<<<<<
 *         self._height = height
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_width_2, __pyx_v_width) < 0) __PYX_ERR(0, 73, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":74
 *         self._set_window_size(width, height)
 *         self._width = width
 *         self._height = height             # <<<<<<<<<<<<<<
 * 
 *     def _create_window(self, offscreen):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_height_2, __pyx_v_height) < 0) __PYX_ERR(0, 74, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":71
 *         glfw.make_context_current(self.window)
 * 
 *     def set_buffer_size(self, width, height):             # <<<<<<<<<<<<<<
 *         self._set_window_size(width, height)
 *         self._width = width
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext.set_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":76
 *         self._height = height
 * 
 *     def _create_window(self, offscreen):             # <<<<<<<<<<<<<<
 *         if offscreen:
 *             print("Creating offscreen glfw")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_9_create_window(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_11GlfwContext_9_create_window = {"_create_window", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11GlfwContext_9_create_window, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_9_create_window(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_offscreen = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_create_window (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_offscreen,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offscreen)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_create_window", 1, 2, 2, 1); __PYX_ERR(0, 76, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_create_window") < 0)) __PYX_ERR(0, 76, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_offscreen = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_create_window", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 76, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext._create_window", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11GlfwContext_8_create_window(__pyx_self, __pyx_v_self, __pyx_v_offscreen);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_8_create_window(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_offscreen) {
  PyObject *__pyx_v_init_width = NULL;
  PyObject *__pyx_v_init_height = NULL;
  PyObject *__pyx_v_resolution = NULL;
  CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_refresh_rate = NULL;
  PyObject *__pyx_v_window = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("_create_window", 0);

  /* "mujoco_py/opengl_context.pyx":77
 * 
 *     def _create_window(self, offscreen):
 *         if offscreen:             # <<<<<<<<<<<<<<
 *             print("Creating offscreen glfw")
 *             glfw.window_hint(glfw.VISIBLE, 0)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_offscreen); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 77, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "mujoco_py/opengl_context.pyx":78
 *     def _create_window(self, offscreen):
 *         if offscreen:
 *             print("Creating offscreen glfw")             # <<<<<<<<<<<<<<
 *             glfw.window_hint(glfw.VISIBLE, 0)
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 0)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__88, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 78, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/opengl_context.pyx":79
 *         if offscreen:
 *             print("Creating offscreen glfw")
 *             glfw.window_hint(glfw.VISIBLE, 0)             # <<<<<<<<<<<<<<
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 0)
 *             init_width, init_height = self._INIT_WIDTH, self._INIT_HEIGHT
 */
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_window_hint); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_VISIBLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_5, __pyx_int_0};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_5, __pyx_int_0};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 79, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_3) {
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_5);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_int_0);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/opengl_context.pyx":80
 *             print("Creating offscreen glfw")
 *             glfw.window_hint(glfw.VISIBLE, 0)
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 0)             # <<<<<<<<<<<<<<
 *             init_width, init_height = self._INIT_WIDTH, self._INIT_HEIGHT
 *         else:
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_window_hint); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DOUBLEBUFFER); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_7)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_int_0};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_int_0};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_int_0);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/opengl_context.pyx":81
 *             glfw.window_hint(glfw.VISIBLE, 0)
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 0)
 *             init_width, init_height = self._INIT_WIDTH, self._INIT_HEIGHT             # <<<<<<<<<<<<<<
 *         else:
 *             print("Creating window glfw")
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_INIT_WIDTH); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_INIT_HEIGHT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_v_init_width = __pyx_t_2;
    __pyx_t_2 = 0;
    __pyx_v_init_height = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "mujoco_py/opengl_context.pyx":77
 * 
 *     def _create_window(self, offscreen):
 *         if offscreen:             # <<<<<<<<<<<<<<
 *             print("Creating offscreen glfw")
 *             glfw.window_hint(glfw.VISIBLE, 0)
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/opengl_context.pyx":83
 *             init_width, init_height = self._INIT_WIDTH, self._INIT_HEIGHT
 *         else:
 *             print("Creating window glfw")             # <<<<<<<<<<<<<<
 *             glfw.window_hint(glfw.SAMPLES, 4)
 *             glfw.window_hint(glfw.VISIBLE, 1)
 */
  /*else*/ {
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "mujoco_py/opengl_context.pyx":84
 *         else:
 *             print("Creating window glfw")
 *             glfw.window_hint(glfw.SAMPLES, 4)             # <<<<<<<<<<<<<<
 *             glfw.window_hint(glfw.VISIBLE, 1)
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 1)
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_window_hint); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_SAMPLES); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_5, __pyx_int_4};
      __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 84, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_5, __pyx_int_4};
      __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 84, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (__pyx_t_2) {
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_t_5);
      __Pyx_INCREF(__pyx_int_4);
      __Pyx_GIVEREF(__pyx_int_4);
      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_int_4);
      __pyx_t_5 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "mujoco_py/opengl_context.pyx":85
 *             print("Creating window glfw")
 *             glfw.window_hint(glfw.SAMPLES, 4)
 *             glfw.window_hint(glfw.VISIBLE, 1)             # <<<<<<<<<<<<<<
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 1)
 *             resolution, _, refresh_rate = glfw.get_video_mode(
 */
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_window_hint); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_VISIBLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_5, __pyx_int_1};
      __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 85, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_5, __pyx_int_1};
      __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 85, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 85, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (__pyx_t_3) {
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_t_5);
      __Pyx_INCREF(__pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_int_1);
      __pyx_t_5 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 85, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "mujoco_py/opengl_context.pyx":86
 *             glfw.window_hint(glfw.SAMPLES, 4)
 *             glfw.window_hint(glfw.VISIBLE, 1)
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 1)             # <<<<<<<<<<<<<<
 *             resolution, _, refresh_rate = glfw.get_video_mode(
 *                 glfw.get_primary_monitor())
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_window_hint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DOUBLEBUFFER); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_int_1};
      __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 86, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_int_1};
      __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 86, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5);
      __Pyx_INCREF(__pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_int_1);
      __pyx_t_5 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "mujoco_py/opengl_context.pyx":87
 *             glfw.window_hint(glfw.VISIBLE, 1)
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 1)
 *             resolution, _, refresh_rate = glfw.get_video_mode(             # <<<<<<<<<<<<<<
 *                 glfw.get_primary_monitor())
 *             init_width, init_height = resolution
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_video_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/opengl_context.pyx":88
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 1)
 *             resolution, _, refresh_rate = glfw.get_video_mode(
 *                 glfw.get_primary_monitor())             # <<<<<<<<<<<<<<
 *             init_width, init_height = resolution
 * 
 */
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_get_primary_monitor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 87, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_7);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
        __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 87, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
        __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 87, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else
      #endif
      {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
        __pyx_t_2 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 87, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 87, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_2 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_2);
      #else
      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext;
      index = 0; __pyx_t_3 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_3);
      index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 2; __pyx_t_2 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_4), 3) < 0) __PYX_ERR(0, 87, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 87, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }

    /* "mujoco_py/opengl_context.pyx":87
 *             glfw.window_hint(glfw.VISIBLE, 1)
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 1)
 *             resolution, _, refresh_rate = glfw.get_video_mode(             # <<<<<<<<<<<<<<
 *                 glfw.get_primary_monitor())
 *             init_width, init_height = resolution
 */
    __pyx_v_resolution = __pyx_t_3;
    __pyx_t_3 = 0;
    __pyx_v__ = __pyx_t_5;
    __pyx_t_5 = 0;
    __pyx_v_refresh_rate = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/opengl_context.pyx":89
 *             resolution, _, refresh_rate = glfw.get_video_mode(
 *                 glfw.get_primary_monitor())
 *             init_width, init_height = resolution             # <<<<<<<<<<<<<<
 * 
 *         self._width = init_width
 */
    if ((likely(PyTuple_CheckExact(__pyx_v_resolution))) || (PyList_CheckExact(__pyx_v_resolution))) {
      PyObject* sequence = __pyx_v_resolution;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 89, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_2);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      #endif
    } else {
      Py_ssize_t index = -1;
      __pyx_t_5 = PyObject_GetIter(__pyx_v_resolution); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_5), 2) < 0) __PYX_ERR(0, 89, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 89, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    __pyx_v_init_width = __pyx_t_7;
    __pyx_t_7 = 0;
    __pyx_v_init_height = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "mujoco_py/opengl_context.pyx":91
 *             init_width, init_height = resolution
 * 
 *         self._width = init_width             # <<<<<<<<<<<<<<
 *         self._height = init_height
 *         window = glfw.create_window(
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_width_2, __pyx_v_init_width) < 0) __PYX_ERR(0, 91, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":92
 * 
 *         self._width = init_width
 *         self._height = init_height             # <<<<<<<<<<<<<<
 *         window = glfw.create_window(
 *             self._width, self._height, "mujoco_py", None, None)
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_height_2, __pyx_v_init_height) < 0) __PYX_ERR(0, 92, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":93
 *         self._width = init_width
 *         self._height = init_height
 *         window = glfw.create_window(             # <<<<<<<<<<<<<<
 *             self._width, self._height, "mujoco_py", None, None)
 * 
 */
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_create_window_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "mujoco_py/opengl_context.pyx":94
 *         self._height = init_height
 *         window = glfw.create_window(
 *             self._width, self._height, "mujoco_py", None, None)             # <<<<<<<<<<<<<<
 * 
 *         if not window:
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_t_7, __pyx_t_3, __pyx_n_u_mujoco_py, Py_None, Py_None};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_t_7, __pyx_t_3, __pyx_n_u_mujoco_py, Py_None, Py_None};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_9 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_6, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_6, __pyx_t_3);
    __Pyx_INCREF(__pyx_n_u_mujoco_py);
    __Pyx_GIVEREF(__pyx_n_u_mujoco_py);
    PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_6, __pyx_n_u_mujoco_py);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_6, Py_None);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_6, Py_None);
    __pyx_t_7 = 0;
    __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_window = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":96
 *             self._width, self._height, "mujoco_py", None, None)
 * 
 *         if not window:             # <<<<<<<<<<<<<<
 *             raise GlfwError("Failed to create GLFW window")
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_window); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 96, __pyx_L1_error)
  __pyx_t_10 = ((!__pyx_t_1) != 0);
  if (__pyx_t_10) {

    /* "mujoco_py/opengl_context.pyx":97
 * 
 *         if not window:
 *             raise GlfwError("Failed to create GLFW window")             # <<<<<<<<<<<<<<
 * 
 *         return window
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GlfwError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(0, 97, __pyx_L1_error)

    /* "mujoco_py/opengl_context.pyx":96
 *             self._width, self._height, "mujoco_py", None, None)
 * 
 *         if not window:             # <<<<<<<<<<<<<<
 *             raise GlfwError("Failed to create GLFW window")
 * 
 */
  }

  /* "mujoco_py/opengl_context.pyx":99
 *             raise GlfwError("Failed to create GLFW window")
 * 
 *         return window             # <<<<<<<<<<<<<<
 * 
 *     def get_buffer_size(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_window);
  __pyx_r = __pyx_v_window;
  goto __pyx_L0;

  /* "mujoco_py/opengl_context.pyx":76
 *         self._height = height
 * 
 *     def _create_window(self, offscreen):             # <<<<<<<<<<<<<<
 *         if offscreen:
 *             print("Creating offscreen glfw")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext._create_window", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_init_width);
  __Pyx_XDECREF(__pyx_v_init_height);
  __Pyx_XDECREF(__pyx_v_resolution);
  __Pyx_XDECREF(__pyx_v__);
  __Pyx_XDECREF(__pyx_v_refresh_rate);
  __Pyx_XDECREF(__pyx_v_window);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":101
 *         return window
 * 
 *     def get_buffer_size(self):             # <<<<<<<<<<<<<<
 *         return glfw.get_framebuffer_size(self.window)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_11get_buffer_size(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_11GlfwContext_11get_buffer_size = {"get_buffer_size", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11GlfwContext_11get_buffer_size, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_11get_buffer_size(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_buffer_size (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11GlfwContext_10get_buffer_size(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_10get_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("get_buffer_size", 0);

  /* "mujoco_py/opengl_context.pyx":102
 * 
 *     def get_buffer_size(self):
 *         return glfw.get_framebuffer_size(self.window)             # <<<<<<<<<<<<<<
 * 
 *     def _set_window_size(self, target_width, target_height):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_framebuffer_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/opengl_context.pyx":101
 *         return window
 * 
 *     def get_buffer_size(self):             # <<<<<<<<<<<<<<
 *         return glfw.get_framebuffer_size(self.window)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext.get_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":104
 *         return glfw.get_framebuffer_size(self.window)
 * 
 *     def _set_window_size(self, target_width, target_height):             # <<<<<<<<<<<<<<
 *         self.make_context_current()
 *         if target_width != self._width or target_height != self._height:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_13_set_window_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_11GlfwContext_13_set_window_size = {"_set_window_size", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11GlfwContext_13_set_window_size, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_13_set_window_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_target_width = 0;
  PyObject *__pyx_v_target_height = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_window_size (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_target_width,&__pyx_n_s_target_height,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_target_width)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_set_window_size", 1, 3, 3, 1); __PYX_ERR(0, 104, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_target_height)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_set_window_size", 1, 3, 3, 2); __PYX_ERR(0, 104, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_set_window_size") < 0)) __PYX_ERR(0, 104, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_target_width = values[1];
    __pyx_v_target_height = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_set_window_size", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 104, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext._set_window_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11GlfwContext_12_set_window_size(__pyx_self, __pyx_v_self, __pyx_v_target_width, __pyx_v_target_height);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_12_set_window_size(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_target_width, PyObject *__pyx_v_target_height) {
  PyObject *__pyx_v_width = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_height = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  __Pyx_RefNannySetupContext("_set_window_size", 0);

  /* "mujoco_py/opengl_context.pyx":105
 * 
 *     def _set_window_size(self, target_width, target_height):
 *         self.make_context_current()             # <<<<<<<<<<<<<<
 *         if target_width != self._width or target_height != self._height:
 *             self._width = target_width
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_make_context_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":106
 *     def _set_window_size(self, target_width, target_height):
 *         self.make_context_current()
 *         if target_width != self._width or target_height != self._height:             # <<<<<<<<<<<<<<
 *             self._width = target_width
 *             self._height = target_height
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_target_width, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_5) {
  } else {
    __pyx_t_4 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_target_height, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "mujoco_py/opengl_context.pyx":107
 *         self.make_context_current()
 *         if target_width != self._width or target_height != self._height:
 *             self._width = target_width             # <<<<<<<<<<<<<<
 *             self._height = target_height
 *             glfw.set_window_size(self.window, target_width, target_height)
 */
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_width_2, __pyx_v_target_width) < 0) __PYX_ERR(0, 107, __pyx_L1_error)

    /* "mujoco_py/opengl_context.pyx":108
 *         if target_width != self._width or target_height != self._height:
 *             self._width = target_width
 *             self._height = target_height             # <<<<<<<<<<<<<<
 *             glfw.set_window_size(self.window, target_width, target_height)
 * 
 */
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_height_2, __pyx_v_target_height) < 0) __PYX_ERR(0, 108, __pyx_L1_error)

    /* "mujoco_py/opengl_context.pyx":109
 *             self._width = target_width
 *             self._height = target_height
 *             glfw.set_window_size(self.window, target_width, target_height)             # <<<<<<<<<<<<<<
 * 
 *             # HAX: When running on a Mac with retina screen, the size
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set_window_size_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_7 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_2, __pyx_v_target_width, __pyx_v_target_height};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_2, __pyx_v_target_width, __pyx_v_target_height};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 109, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
      __Pyx_INCREF(__pyx_v_target_width);
      __Pyx_GIVEREF(__pyx_v_target_width);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_target_width);
      __Pyx_INCREF(__pyx_v_target_height);
      __Pyx_GIVEREF(__pyx_v_target_height);
      PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_target_height);
      __pyx_t_2 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/opengl_context.pyx":113
 *             # HAX: When running on a Mac with retina screen, the size
 *             # sometimes doubles
 *             width, height = glfw.get_framebuffer_size(self.window)             # <<<<<<<<<<<<<<
 *             if target_width != width:
 *                 glfw.set_window_size(self.window, target_width // 2, target_height // 2)
 */
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get_framebuffer_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_8)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
      PyObject* sequence = __pyx_t_1;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 113, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_8 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 113, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext;
      index = 0; __pyx_t_8 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_3), 2) < 0) __PYX_ERR(0, 113, __pyx_L1_error)
      __pyx_t_9 = NULL;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_9 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 113, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    __pyx_v_width = __pyx_t_8;
    __pyx_t_8 = 0;
    __pyx_v_height = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "mujoco_py/opengl_context.pyx":114
 *             # sometimes doubles
 *             width, height = glfw.get_framebuffer_size(self.window)
 *             if target_width != width:             # <<<<<<<<<<<<<<
 *                 glfw.set_window_size(self.window, target_width // 2, target_height // 2)
 * 
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_target_width, __pyx_v_width, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_4) {

      /* "mujoco_py/opengl_context.pyx":115
 *             width, height = glfw.get_framebuffer_size(self.window)
 *             if target_width != width:
 *                 glfw.set_window_size(self.window, target_width // 2, target_height // 2)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_set_window_size_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = __Pyx_PyInt_FloorDivideObjC(__pyx_v_target_width, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyInt_FloorDivideObjC(__pyx_v_target_height, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_10 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_7 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_8)) {
        PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_t_6, __pyx_t_3, __pyx_t_2};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
        PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_t_6, __pyx_t_3, __pyx_t_2};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else
      #endif
      {
        __pyx_t_11 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 115, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        if (__pyx_t_10) {
          __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_7, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_7, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_7, __pyx_t_2);
        __pyx_t_6 = 0;
        __pyx_t_3 = 0;
        __pyx_t_2 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "mujoco_py/opengl_context.pyx":114
 *             # sometimes doubles
 *             width, height = glfw.get_framebuffer_size(self.window)
 *             if target_width != width:             # <<<<<<<<<<<<<<
 *                 glfw.set_window_size(self.window, target_width // 2, target_height // 2)
 * 
 */
    }

    /* "mujoco_py/opengl_context.pyx":106
 *     def _set_window_size(self, target_width, target_height):
 *         self.make_context_current()
 *         if target_width != self._width or target_height != self._height:             # <<<<<<<<<<<<<<
 *             self._width = target_width
 *             self._height = target_height
 */
  }

  /* "mujoco_py/opengl_context.pyx":104
 *         return glfw.get_framebuffer_size(self.window)
 * 
 *     def _set_window_size(self, target_width, target_height):             # <<<<<<<<<<<<<<
 *         self.make_context_current()
 *         if target_width != self._width or target_height != self._height:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext._set_window_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_width);
  __Pyx_XDECREF(__pyx_v_height);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":118
 * 
 *     @staticmethod
 *     def _glfw_error_callback(error_code, description):             # <<<<<<<<<<<<<<
 *         print("GLFW error (code %d): %s", error_code, description)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_15_glfw_error_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_11GlfwContext_15_glfw_error_callback = {"_glfw_error_callback", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11GlfwContext_15_glfw_error_callback, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_11GlfwContext_15_glfw_error_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error_code = 0;
  PyObject *__pyx_v_description = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_glfw_error_callback (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error_code,&__pyx_n_s_description,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_error_code)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_description)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_glfw_error_callback", 1, 2, 2, 1); __PYX_ERR(0, 118, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_glfw_error_callback") < 0)) __PYX_ERR(0, 118, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error_code = values[0];
    __pyx_v_description = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_glfw_error_callback", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 118, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext._glfw_error_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_11GlfwContext_14_glfw_error_callback(__pyx_self, __pyx_v_error_code, __pyx_v_description);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_11GlfwContext_14_glfw_error_callback(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_error_code, PyObject *__pyx_v_description) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_glfw_error_callback", 0);

  /* "mujoco_py/opengl_context.pyx":119
 *     @staticmethod
 *     def _glfw_error_callback(error_code, description):
 *         print("GLFW error (code %d): %s", error_code, description)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_kp_u_GLFW_error_code_d_s);
  __Pyx_GIVEREF(__pyx_kp_u_GLFW_error_code_d_s);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_GLFW_error_code_d_s);
  __Pyx_INCREF(__pyx_v_error_code);
  __Pyx_GIVEREF(__pyx_v_error_code);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_error_code);
  __Pyx_INCREF(__pyx_v_description);
  __Pyx_GIVEREF(__pyx_v_description);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_description);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":118
 * 
 *     @staticmethod
 *     def _glfw_error_callback(error_code, description):             # <<<<<<<<<<<<<<
 *         print("GLFW error (code %d): %s", error_code, description)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mujoco_py.cymj.GlfwContext._glfw_error_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":124
 * class OffscreenOpenGLContext():
 * 
 *     def __init__(self, device_id):             # <<<<<<<<<<<<<<
 *         self.device_id = device_id
 *         res = initOpenGL(device_id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_22OffscreenOpenGLContext_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_device_id = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_device_id,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_device_id)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 124, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 124, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_device_id = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 124, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.OffscreenOpenGLContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext___init__(__pyx_self, __pyx_v_self, __pyx_v_device_id);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_device_id) {
  int __pyx_v_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "mujoco_py/opengl_context.pyx":125
 * 
 *     def __init__(self, device_id):
 *         self.device_id = device_id             # <<<<<<<<<<<<<<
 *         res = initOpenGL(device_id)
 *         if res != 1:
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_device_id, __pyx_v_device_id) < 0) __PYX_ERR(0, 125, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":126
 *     def __init__(self, device_id):
 *         self.device_id = device_id
 *         res = initOpenGL(device_id)             # <<<<<<<<<<<<<<
 *         if res != 1:
 *             raise RuntimeError("Failed to initialize OpenGL")
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_device_id); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 126, __pyx_L1_error)
  __pyx_v_res = initOpenGL(__pyx_t_1);

  /* "mujoco_py/opengl_context.pyx":127
 *         self.device_id = device_id
 *         res = initOpenGL(device_id)
 *         if res != 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Failed to initialize OpenGL")
 * 
 */
  __pyx_t_2 = ((__pyx_v_res != 1) != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/opengl_context.pyx":128
 *         res = initOpenGL(device_id)
 *         if res != 1:
 *             raise RuntimeError("Failed to initialize OpenGL")             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 128, __pyx_L1_error)

    /* "mujoco_py/opengl_context.pyx":127
 *         self.device_id = device_id
 *         res = initOpenGL(device_id)
 *         if res != 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Failed to initialize OpenGL")
 * 
 */
  }

  /* "mujoco_py/opengl_context.pyx":124
 * class OffscreenOpenGLContext():
 * 
 *     def __init__(self, device_id):             # <<<<<<<<<<<<<<
 *         self.device_id = device_id
 *         res = initOpenGL(device_id)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj.OffscreenOpenGLContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":130
 *             raise RuntimeError("Failed to initialize OpenGL")
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         # TODO: properly close OpenGL in our contexts
 *         closeOpenGL()
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_3close(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_22OffscreenOpenGLContext_3close = {"close", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_3close, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_3close(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext_2close(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext_2close(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close", 0);

  /* "mujoco_py/opengl_context.pyx":132
 *     def close(self):
 *         # TODO: properly close OpenGL in our contexts
 *         closeOpenGL()             # <<<<<<<<<<<<<<
 * 
 *     def make_context_current(self):
 */
  closeOpenGL();

  /* "mujoco_py/opengl_context.pyx":130
 *             raise RuntimeError("Failed to initialize OpenGL")
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         # TODO: properly close OpenGL in our contexts
 *         closeOpenGL()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":134
 *         closeOpenGL()
 * 
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         makeOpenGLContextCurrent(self.device_id)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_5make_context_current(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_22OffscreenOpenGLContext_5make_context_current = {"make_context_current", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_5make_context_current, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_5make_context_current(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_context_current (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext_4make_context_current(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext_4make_context_current(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("make_context_current", 0);

  /* "mujoco_py/opengl_context.pyx":135
 * 
 *     def make_context_current(self):
 *         makeOpenGLContextCurrent(self.device_id)             # <<<<<<<<<<<<<<
 * 
 *     def set_buffer_size(self, int width, int height):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_device_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  makeOpenGLContextCurrent(__pyx_t_2);

  /* "mujoco_py/opengl_context.pyx":134
 *         closeOpenGL()
 * 
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         makeOpenGLContextCurrent(self.device_id)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.OffscreenOpenGLContext.make_context_current", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/opengl_context.pyx":137
 *         makeOpenGLContextCurrent(self.device_id)
 * 
 *     def set_buffer_size(self, int width, int height):             # <<<<<<<<<<<<<<
 *         res = setOpenGLBufferSize(self.device_id, width, height)
 *         if res != 1:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_7set_buffer_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_22OffscreenOpenGLContext_7set_buffer_size = {"set_buffer_size", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_7set_buffer_size, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_22OffscreenOpenGLContext_7set_buffer_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_width;
  int __pyx_v_height;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_buffer_size (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_width,&__pyx_n_s_height,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_buffer_size", 1, 3, 3, 1); __PYX_ERR(0, 137, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_buffer_size", 1, 3, 3, 2); __PYX_ERR(0, 137, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_buffer_size") < 0)) __PYX_ERR(0, 137, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_width = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_width == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 137, __pyx_L3_error)
    __pyx_v_height = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_height == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 137, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_buffer_size", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 137, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.OffscreenOpenGLContext.set_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext_6set_buffer_size(__pyx_self, __pyx_v_self, __pyx_v_width, __pyx_v_height);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_22OffscreenOpenGLContext_6set_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_width, int __pyx_v_height) {
  int __pyx_v_res;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("set_buffer_size", 0);

  /* "mujoco_py/opengl_context.pyx":138
 * 
 *     def set_buffer_size(self, int width, int height):
 *         res = setOpenGLBufferSize(self.device_id, width, height)             # <<<<<<<<<<<<<<
 *         if res != 1:
 *             raise RuntimeError("Failed to set buffer size")
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_device_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_res = setOpenGLBufferSize(__pyx_t_2, __pyx_v_width, __pyx_v_height);

  /* "mujoco_py/opengl_context.pyx":139
 *     def set_buffer_size(self, int width, int height):
 *         res = setOpenGLBufferSize(self.device_id, width, height)
 *         if res != 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Failed to set buffer size")
 */
  __pyx_t_3 = ((__pyx_v_res != 1) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/opengl_context.pyx":140
 *         res = setOpenGLBufferSize(self.device_id, width, height)
 *         if res != 1:
 *             raise RuntimeError("Failed to set buffer size")             # <<<<<<<<<<<<<<
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__92, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 140, __pyx_L1_error)

    /* "mujoco_py/opengl_context.pyx":139
 *     def set_buffer_size(self, int width, int height):
 *         res = setOpenGLBufferSize(self.device_id, width, height)
 *         if res != 1:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Failed to set buffer size")
 */
  }

  /* "mujoco_py/opengl_context.pyx":137
 *         makeOpenGLContextCurrent(self.device_id)
 * 
 *     def set_buffer_size(self, int width, int height):             # <<<<<<<<<<<<<<
 *         res = setOpenGLBufferSize(self.device_id, width, height)
 *         if res != 1:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.OffscreenOpenGLContext.set_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":68
 *     cdef public object render_callback
 * 
 *     def __cinit__(self, PyMjModel model, PyMjData data=None, int nsubsteps=1,             # <<<<<<<<<<<<<<
 *                   udd_callback=None, substep_callback=None, userdata_names=None,
 *                   render_callback=None):
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_model = 0;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_data = 0;
  int __pyx_v_nsubsteps;
  PyObject *__pyx_v_udd_callback = 0;
  PyObject *__pyx_v_substep_callback = 0;
  PyObject *__pyx_v_userdata_names = 0;
  PyObject *__pyx_v_render_callback = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_model,&__pyx_n_s_data,&__pyx_n_s_nsubsteps,&__pyx_n_s_udd_callback,&__pyx_n_s_substep_callback,&__pyx_n_s_userdata_names,&__pyx_n_s_render_callback,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    values[1] = (PyObject *)((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)Py_None);

    /* "mujoco_py/mjsim.pyx":69
 * 
 *     def __cinit__(self, PyMjModel model, PyMjData data=None, int nsubsteps=1,
 *                   udd_callback=None, substep_callback=None, userdata_names=None,             # <<<<<<<<<<<<<<
 *                   render_callback=None):
 *         self.nsubsteps = nsubsteps
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = ((PyObject *)Py_None);
    values[5] = ((PyObject *)Py_None);

    /* "mujoco_py/mjsim.pyx":70
 *     def __cinit__(self, PyMjModel model, PyMjData data=None, int nsubsteps=1,
 *                   udd_callback=None, substep_callback=None, userdata_names=None,
 *                   render_callback=None):             # <<<<<<<<<<<<<<
 *         self.nsubsteps = nsubsteps
 *         self.model = model
 */
    values[6] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_model)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsubsteps);
          if (value) { values[2] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_udd_callback);
          if (value) { values[3] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_substep_callback);
          if (value) { values[4] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_userdata_names);
          if (value) { values[5] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_render_callback);
          if (value) { values[6] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 68, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_model = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)values[0]);
    __pyx_v_data = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)values[1]);
    if (values[2]) {
      __pyx_v_nsubsteps = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nsubsteps == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 68, __pyx_L3_error)
    } else {
      __pyx_v_nsubsteps = ((int)1);
    }
    __pyx_v_udd_callback = values[3];
    __pyx_v_substep_callback = values[4];
    __pyx_v_userdata_names = values[5];
    __pyx_v_render_callback = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 68, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_model), __pyx_ptype_9mujoco_py_4cymj_PyMjModel, 1, "model", 0))) __PYX_ERR(5, 68, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_9mujoco_py_4cymj_PyMjData, 1, "data", 0))) __PYX_ERR(5, 68, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), __pyx_v_model, __pyx_v_data, __pyx_v_nsubsteps, __pyx_v_udd_callback, __pyx_v_substep_callback, __pyx_v_userdata_names, __pyx_v_render_callback);

  /* "mujoco_py/mjsim.pyx":68
 *     cdef public object render_callback
 * 
 *     def __cinit__(self, PyMjModel model, PyMjData data=None, int nsubsteps=1,             # <<<<<<<<<<<<<<
 *                   udd_callback=None, substep_callback=None, userdata_names=None,
 *                   render_callback=None):
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_5MjSim___cinit__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *__pyx_v_model, struct __pyx_obj_9mujoco_py_4cymj_PyMjData *__pyx_v_data, int __pyx_v_nsubsteps, PyObject *__pyx_v_udd_callback, PyObject *__pyx_v_substep_callback, PyObject *__pyx_v_userdata_names, PyObject *__pyx_v_render_callback) {
  mjData *__pyx_v__data;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/mjsim.pyx":71
 *                   udd_callback=None, substep_callback=None, userdata_names=None,
 *                   render_callback=None):
 *         self.nsubsteps = nsubsteps             # <<<<<<<<<<<<<<
 *         self.model = model
 *         if data is None:
 */
  __pyx_v_self->nsubsteps = __pyx_v_nsubsteps;

  /* "mujoco_py/mjsim.pyx":72
 *                   render_callback=None):
 *         self.nsubsteps = nsubsteps
 *         self.model = model             # <<<<<<<<<<<<<<
 *         if data is None:
 *             with wrap_mujoco_warning():
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_model));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_model));
  __Pyx_GOTREF(__pyx_v_self->model);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->model));
  __pyx_v_self->model = __pyx_v_model;

  /* "mujoco_py/mjsim.pyx":73
 *         self.nsubsteps = nsubsteps
 *         self.model = model
 *         if data is None:             # <<<<<<<<<<<<<<
 *             with wrap_mujoco_warning():
 *                 _data = mj_makeData(self.model.ptr)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_data) == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/mjsim.pyx":74
 *         self.model = model
 *         if data is None:
 *             with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *                 _data = mj_makeData(self.model.ptr)
 *             if _data == NULL:
 */
    /*with:*/ {
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_wrap_mujoco_warning); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_5) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 74, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else {
        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 74, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 74, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 74, __pyx_L4_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 74, __pyx_L4_error)
      }
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /*try:*/ {
        {
          (void)__pyx_t_8; (void)__pyx_t_9; (void)__pyx_t_10; /* mark used */
          /*try:*/ {

            /* "mujoco_py/mjsim.pyx":75
 *         if data is None:
 *             with wrap_mujoco_warning():
 *                 _data = mj_makeData(self.model.ptr)             # <<<<<<<<<<<<<<
 *             if _data == NULL:
 *                 raise Exception('mj_makeData failed!')
 */
            __pyx_v__data = mj_makeData(__pyx_v_self->model->ptr);

            /* "mujoco_py/mjsim.pyx":74
 *         self.model = model
 *         if data is None:
 *             with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *                 _data = mj_makeData(self.model.ptr)
 *             if _data == NULL:
 */
          }
        }
      }
      /*finally:*/ {
        /*normal exit:*/{
          if (__pyx_t_6) {
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__93, NULL);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 74, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          }
          goto __pyx_L7;
        }
        __pyx_L7:;
      }
      goto __pyx_L14;
      __pyx_L4_error:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L1_error;
      __pyx_L14:;
    }

    /* "mujoco_py/mjsim.pyx":76
 *             with wrap_mujoco_warning():
 *                 _data = mj_makeData(self.model.ptr)
 *             if _data == NULL:             # <<<<<<<<<<<<<<
 *                 raise Exception('mj_makeData failed!')
 *             self.data = WrapMjData(_data, self.model)
 */
    __pyx_t_2 = ((__pyx_v__data == NULL) != 0);
    if (__pyx_t_2) {

      /* "mujoco_py/mjsim.pyx":77
 *                 _data = mj_makeData(self.model.ptr)
 *             if _data == NULL:
 *                 raise Exception('mj_makeData failed!')             # <<<<<<<<<<<<<<
 *             self.data = WrapMjData(_data, self.model)
 *         else:
 */
      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 77, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(5, 77, __pyx_L1_error)

      /* "mujoco_py/mjsim.pyx":76
 *             with wrap_mujoco_warning():
 *                 _data = mj_makeData(self.model.ptr)
 *             if _data == NULL:             # <<<<<<<<<<<<<<
 *                 raise Exception('mj_makeData failed!')
 *             self.data = WrapMjData(_data, self.model)
 */
    }

    /* "mujoco_py/mjsim.pyx":78
 *             if _data == NULL:
 *                 raise Exception('mj_makeData failed!')
 *             self.data = WrapMjData(_data, self.model)             # <<<<<<<<<<<<<<
 *         else:
 *             self.data = data
 */
    __pyx_t_3 = ((PyObject *)__pyx_v_self->model);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjData(__pyx_v__data, ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)__pyx_t_3))); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 78, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->data);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->data));
    __pyx_v_self->data = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "mujoco_py/mjsim.pyx":73
 *         self.nsubsteps = nsubsteps
 *         self.model = model
 *         if data is None:             # <<<<<<<<<<<<<<
 *             with wrap_mujoco_warning():
 *                 _data = mj_makeData(self.model.ptr)
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/mjsim.pyx":80
 *             self.data = WrapMjData(_data, self.model)
 *         else:
 *             self.data = data             # <<<<<<<<<<<<<<
 * 
 *         self.render_contexts = []
 */
  /*else*/ {
    __Pyx_INCREF(((PyObject *)__pyx_v_data));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_data));
    __Pyx_GOTREF(__pyx_v_self->data);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->data));
    __pyx_v_self->data = __pyx_v_data;
  }
  __pyx_L3:;

  /* "mujoco_py/mjsim.pyx":82
 *             self.data = data
 * 
 *         self.render_contexts = []             # <<<<<<<<<<<<<<
 *         self._render_context_offscreen = None
 *         self._render_context_window = None
 */
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->render_contexts);
  __Pyx_DECREF(__pyx_v_self->render_contexts);
  __pyx_v_self->render_contexts = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "mujoco_py/mjsim.pyx":83
 * 
 *         self.render_contexts = []
 *         self._render_context_offscreen = None             # <<<<<<<<<<<<<<
 *         self._render_context_window = None
 *         self.udd_state = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_render_context_offscreen);
  __Pyx_DECREF(__pyx_v_self->_render_context_offscreen);
  __pyx_v_self->_render_context_offscreen = Py_None;

  /* "mujoco_py/mjsim.pyx":84
 *         self.render_contexts = []
 *         self._render_context_offscreen = None
 *         self._render_context_window = None             # <<<<<<<<<<<<<<
 *         self.udd_state = None
 *         self.udd_callback = udd_callback
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_render_context_window);
  __Pyx_DECREF(__pyx_v_self->_render_context_window);
  __pyx_v_self->_render_context_window = Py_None;

  /* "mujoco_py/mjsim.pyx":85
 *         self._render_context_offscreen = None
 *         self._render_context_window = None
 *         self.udd_state = None             # <<<<<<<<<<<<<<
 *         self.udd_callback = udd_callback
 *         self.render_callback = render_callback
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->udd_state);
  __Pyx_DECREF(__pyx_v_self->udd_state);
  __pyx_v_self->udd_state = ((PyObject*)Py_None);

  /* "mujoco_py/mjsim.pyx":86
 *         self._render_context_window = None
 *         self.udd_state = None
 *         self.udd_callback = udd_callback             # <<<<<<<<<<<<<<
 *         self.render_callback = render_callback
 *         self.extras = {}
 */
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_udd_callback, __pyx_v_udd_callback) < 0) __PYX_ERR(5, 86, __pyx_L1_error)

  /* "mujoco_py/mjsim.pyx":87
 *         self.udd_state = None
 *         self.udd_callback = udd_callback
 *         self.render_callback = render_callback             # <<<<<<<<<<<<<<
 *         self.extras = {}
 *         self.set_substep_callback(substep_callback, userdata_names)
 */
  __Pyx_INCREF(__pyx_v_render_callback);
  __Pyx_GIVEREF(__pyx_v_render_callback);
  __Pyx_GOTREF(__pyx_v_self->render_callback);
  __Pyx_DECREF(__pyx_v_self->render_callback);
  __pyx_v_self->render_callback = __pyx_v_render_callback;

  /* "mujoco_py/mjsim.pyx":88
 *         self.udd_callback = udd_callback
 *         self.render_callback = render_callback
 *         self.extras = {}             # <<<<<<<<<<<<<<
 *         self.set_substep_callback(substep_callback, userdata_names)
 * 
 */
  __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->extras);
  __Pyx_DECREF(__pyx_v_self->extras);
  __pyx_v_self->extras = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "mujoco_py/mjsim.pyx":89
 *         self.render_callback = render_callback
 *         self.extras = {}
 *         self.set_substep_callback(substep_callback, userdata_names)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_substep_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_11 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_11 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_substep_callback, __pyx_v_userdata_names};
    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 89, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_substep_callback, __pyx_v_userdata_names};
    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 89, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_substep_callback);
    __Pyx_GIVEREF(__pyx_v_substep_callback);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_11, __pyx_v_substep_callback);
    __Pyx_INCREF(__pyx_v_userdata_names);
    __Pyx_GIVEREF(__pyx_v_userdata_names);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_11, __pyx_v_userdata_names);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjsim.pyx":68
 *     cdef public object render_callback
 * 
 *     def __cinit__(self, PyMjModel model, PyMjData data=None, int nsubsteps=1,             # <<<<<<<<<<<<<<
 *                   udd_callback=None, substep_callback=None, userdata_names=None,
 *                   render_callback=None):
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":91
 *         self.set_substep_callback(substep_callback, userdata_names)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         Resets the simulation data and clears buffers.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_3reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_5MjSim_2reset[] = "\n        Resets the simulation data and clears buffers.\n        ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_3reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_2reset(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_2reset(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "mujoco_py/mjsim.pyx":95
 *         Resets the simulation data and clears buffers.
 *         """
 *         with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *             mj_resetData(self.model.ptr, self.data.ptr)
 * 
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_wrap_mujoco_warning); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 95, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 95, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 95, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 95, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 95, __pyx_L3_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        (void)__pyx_t_6; (void)__pyx_t_7; (void)__pyx_t_8; /* mark used */
        /*try:*/ {

          /* "mujoco_py/mjsim.pyx":96
 *         """
 *         with wrap_mujoco_warning():
 *             mj_resetData(self.model.ptr, self.data.ptr)             # <<<<<<<<<<<<<<
 * 
 *         self.udd_state = None
 */
          mj_resetData(__pyx_v_self->model->ptr, __pyx_v_self->data->ptr);

          /* "mujoco_py/mjsim.pyx":95
 *         Resets the simulation data and clears buffers.
 *         """
 *         with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *             mj_resetData(self.model.ptr, self.data.ptr)
 * 
 */
        }
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__95, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 95, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L13;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L13:;
  }

  /* "mujoco_py/mjsim.pyx":98
 *             mj_resetData(self.model.ptr, self.data.ptr)
 * 
 *         self.udd_state = None             # <<<<<<<<<<<<<<
 *         self.step_udd()
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->udd_state);
  __Pyx_DECREF(__pyx_v_self->udd_state);
  __pyx_v_self->udd_state = ((PyObject*)Py_None);

  /* "mujoco_py/mjsim.pyx":99
 * 
 *         self.udd_state = None
 *         self.step_udd()             # <<<<<<<<<<<<<<
 * 
 *     def forward(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_step_udd); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 99, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 99, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":91
 *         self.set_substep_callback(substep_callback, userdata_names)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         Resets the simulation data and clears buffers.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":101
 *         self.step_udd()
 * 
 *     def forward(self):             # <<<<<<<<<<<<<<
 *         """
 *         Computes the forward kinematics. Calls ``mj_forward`` internally.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_5forward(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_5MjSim_4forward[] = "\n        Computes the forward kinematics. Calls ``mj_forward`` internally.\n        ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_5forward(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("forward (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_4forward(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_4forward(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("forward", 0);

  /* "mujoco_py/mjsim.pyx":105
 *         Computes the forward kinematics. Calls ``mj_forward`` internally.
 *         """
 *         with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *             mj_forward(self.model.ptr, self.data.ptr)
 * 
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_wrap_mujoco_warning); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 105, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 105, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 105, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 105, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 105, __pyx_L3_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        (void)__pyx_t_6; (void)__pyx_t_7; (void)__pyx_t_8; /* mark used */
        /*try:*/ {

          /* "mujoco_py/mjsim.pyx":106
 *         """
 *         with wrap_mujoco_warning():
 *             mj_forward(self.model.ptr, self.data.ptr)             # <<<<<<<<<<<<<<
 * 
 *     def step(self, with_udd=True):
 */
          mj_forward(__pyx_v_self->model->ptr, __pyx_v_self->data->ptr);

          /* "mujoco_py/mjsim.pyx":105
 *         Computes the forward kinematics. Calls ``mj_forward`` internally.
 *         """
 *         with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *             mj_forward(self.model.ptr, self.data.ptr)
 * 
 */
        }
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__96, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 105, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L13;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L13:;
  }

  /* "mujoco_py/mjsim.pyx":101
 *         self.step_udd()
 * 
 *     def forward(self):             # <<<<<<<<<<<<<<
 *         """
 *         Computes the forward kinematics. Calls ``mj_forward`` internally.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.forward", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":108
 *             mj_forward(self.model.ptr, self.data.ptr)
 * 
 *     def step(self, with_udd=True):             # <<<<<<<<<<<<<<
 *         """
 *         Advances the simulation by calling ``mj_step``.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_7step(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_5MjSim_6step[] = "\n        Advances the simulation by calling ``mj_step``.\n\n        If ``qpos`` or ``qvel`` have been modified directly, the user is required to call\n        :meth:`.forward` before :meth:`.step` if their ``udd_callback`` requires access to MuJoCo state\n        set during the forward dynamics.\n        ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_7step(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_with_udd = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("step (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_with_udd,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_with_udd);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "step") < 0)) __PYX_ERR(5, 108, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_with_udd = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("step", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 108, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.step", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_6step(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), __pyx_v_with_udd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_6step(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_with_udd) {
  CYTHON_UNUSED int __pyx_v__;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  __Pyx_RefNannySetupContext("step", 0);

  /* "mujoco_py/mjsim.pyx":116
 *         set during the forward dynamics.
 *         """
 *         if with_udd:             # <<<<<<<<<<<<<<
 *             self.step_udd()
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_with_udd); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(5, 116, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "mujoco_py/mjsim.pyx":117
 *         """
 *         if with_udd:
 *             self.step_udd()             # <<<<<<<<<<<<<<
 * 
 *         with wrap_mujoco_warning():
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_step_udd); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 117, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 117, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 117, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/mjsim.pyx":116
 *         set during the forward dynamics.
 *         """
 *         if with_udd:             # <<<<<<<<<<<<<<
 *             self.step_udd()
 * 
 */
  }

  /* "mujoco_py/mjsim.pyx":119
 *             self.step_udd()
 * 
 *         with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *             for _ in range(self.nsubsteps):
 *                 self.substep_callback()
 */
  /*with:*/ {
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_wrap_mujoco_warning); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 119, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 119, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 119, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_6) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 119, __pyx_L4_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 119, __pyx_L4_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        /*try:*/ {

          /* "mujoco_py/mjsim.pyx":120
 * 
 *         with wrap_mujoco_warning():
 *             for _ in range(self.nsubsteps):             # <<<<<<<<<<<<<<
 *                 self.substep_callback()
 *                 mj_step(self.model.ptr, self.data.ptr)
 */
          __pyx_t_10 = __pyx_v_self->nsubsteps;
          for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
            __pyx_v__ = __pyx_t_11;

            /* "mujoco_py/mjsim.pyx":121
 *         with wrap_mujoco_warning():
 *             for _ in range(self.nsubsteps):
 *                 self.substep_callback()             # <<<<<<<<<<<<<<
 *                 mj_step(self.model.ptr, self.data.ptr)
 * 
 */
            __pyx_t_2 = ((struct __pyx_vtabstruct_9mujoco_py_4cymj_MjSim *)__pyx_v_self->__pyx_vtab)->substep_callback(__pyx_v_self, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 121, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

            /* "mujoco_py/mjsim.pyx":122
 *             for _ in range(self.nsubsteps):
 *                 self.substep_callback()
 *                 mj_step(self.model.ptr, self.data.ptr)             # <<<<<<<<<<<<<<
 * 
 *     def render(self, width=None, height=None, *, camera_name=None, depth=False,
 */
            mj_step(__pyx_v_self->model->ptr, __pyx_v_self->data->ptr);
          }

          /* "mujoco_py/mjsim.pyx":119
 *             self.step_udd()
 * 
 *         with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *             for _ in range(self.nsubsteps):
 *                 self.substep_callback()
 */
        }
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L13_try_end;
        __pyx_L8_error:;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mujoco_py.cymj.MjSim.step", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(5, 119, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_6 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 119, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(5, 119, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_1 < 0) __PYX_ERR(5, 119, __pyx_L10_except_error)
          __pyx_t_13 = ((!(__pyx_t_1 != 0)) != 0);
          if (__pyx_t_13) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(5, 119, __pyx_L10_except_error)
          }
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        __pyx_L13_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_5) {
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__97, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(5, 119, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L19;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L1_error;
    __pyx_L19:;
  }

  /* "mujoco_py/mjsim.pyx":108
 *             mj_forward(self.model.ptr, self.data.ptr)
 * 
 *     def step(self, with_udd=True):             # <<<<<<<<<<<<<<
 *         """
 *         Advances the simulation by calling ``mj_step``.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.step", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":124
 *                 mj_step(self.model.ptr, self.data.ptr)
 * 
 *     def render(self, width=None, height=None, *, camera_name=None, depth=False,             # <<<<<<<<<<<<<<
 *                mode='offscreen', device_id=-1):
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_9render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_5MjSim_8render[] = "\n        Renders view from a camera and returns image as an `numpy.ndarray`.\n\n        Args:\n        - width (int): desired image width.\n        - height (int): desired image height.\n        - camera_name (str): name of camera in model. If None, the free\n            camera will be used.\n        - depth (bool): if True, also return depth buffer\n        - device (int): device to use for rendering (only for GPU-backed\n            rendering).\n\n        Returns:\n        - rgb (uint8 array): image buffer from camera\n        - depth (float array): depth buffer from camera (only returned\n            if depth=True)\n        ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_9render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_width = 0;
  PyObject *__pyx_v_height = 0;
  PyObject *__pyx_v_camera_name = 0;
  PyObject *__pyx_v_depth = 0;
  PyObject *__pyx_v_mode = 0;
  PyObject *__pyx_v_device_id = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("render (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_width,&__pyx_n_s_height,&__pyx_n_s_camera_name,&__pyx_n_s_depth,&__pyx_n_s_mode,&__pyx_n_s_device_id,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = ((PyObject *)Py_False);
    values[4] = ((PyObject *)__pyx_n_u_offscreen);
    values[5] = ((PyObject *)__pyx_int_neg_1);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width);
          if (value) { values[0] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (kw_args > 0 && likely(kw_args <= 4)) {
        Py_ssize_t index;
        for (index = 2; index < 6 && kw_args > 0; index++) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
          if (value) { values[index] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(5, 124, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_width = values[0];
    __pyx_v_height = values[1];
    __pyx_v_camera_name = values[2];
    __pyx_v_depth = values[3];
    __pyx_v_mode = values[4];
    __pyx_v_device_id = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("render", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 124, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.render", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_8render(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), __pyx_v_width, __pyx_v_height, __pyx_v_camera_name, __pyx_v_depth, __pyx_v_mode, __pyx_v_device_id);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_8render(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height, PyObject *__pyx_v_camera_name, PyObject *__pyx_v_depth, PyObject *__pyx_v_mode, PyObject *__pyx_v_device_id) {
  PyObject *__pyx_v_camera_id = NULL;
  PyObject *__pyx_v_render_context = NULL;
  PyObject *__pyx_v_MjViewer = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  __Pyx_RefNannySetupContext("render", 0);

  /* "mujoco_py/mjsim.pyx":143
 *             if depth=True)
 *         """
 *         if camera_name is None:             # <<<<<<<<<<<<<<
 *             camera_id = None
 *         else:
 */
  __pyx_t_1 = (__pyx_v_camera_name == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/mjsim.pyx":144
 *         """
 *         if camera_name is None:
 *             camera_id = None             # <<<<<<<<<<<<<<
 *         else:
 *             camera_id = self.model.camera_name2id(camera_name)
 */
    __Pyx_INCREF(Py_None);
    __pyx_v_camera_id = Py_None;

    /* "mujoco_py/mjsim.pyx":143
 *             if depth=True)
 *         """
 *         if camera_name is None:             # <<<<<<<<<<<<<<
 *             camera_id = None
 *         else:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/mjsim.pyx":146
 *             camera_id = None
 *         else:
 *             camera_id = self.model.camera_name2id(camera_name)             # <<<<<<<<<<<<<<
 * 
 *         if mode == 'offscreen':
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->model), __pyx_n_s_camera_name2id); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_camera_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_camera_name};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 146, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_camera_name};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 146, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 146, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_camera_name);
        __Pyx_GIVEREF(__pyx_v_camera_name);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_camera_name);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 146, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_camera_id = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "mujoco_py/mjsim.pyx":148
 *             camera_id = self.model.camera_name2id(camera_name)
 * 
 *         if mode == 'offscreen':             # <<<<<<<<<<<<<<
 *             with _MjSim_render_lock:
 *                 if self._render_context_offscreen is None:
 */
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_mode, __pyx_n_u_offscreen, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(5, 148, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "mujoco_py/mjsim.pyx":149
 * 
 *         if mode == 'offscreen':
 *             with _MjSim_render_lock:             # <<<<<<<<<<<<<<
 *                 if self._render_context_offscreen is None:
 *                     render_context = MjRenderContextOffscreen(
 */
    /*with:*/ {
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjSim_render_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 149, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 149, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 149, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (__pyx_t_5) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 149, __pyx_L5_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else {
        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 149, __pyx_L5_error)
      }
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /*try:*/ {
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_10);
          /*try:*/ {

            /* "mujoco_py/mjsim.pyx":150
 *         if mode == 'offscreen':
 *             with _MjSim_render_lock:
 *                 if self._render_context_offscreen is None:             # <<<<<<<<<<<<<<
 *                     render_context = MjRenderContextOffscreen(
 *                         self, device_id=device_id)
 */
            __pyx_t_2 = (__pyx_v_self->_render_context_offscreen == Py_None);
            __pyx_t_1 = (__pyx_t_2 != 0);
            if (__pyx_t_1) {

              /* "mujoco_py/mjsim.pyx":151
 *             with _MjSim_render_lock:
 *                 if self._render_context_offscreen is None:
 *                     render_context = MjRenderContextOffscreen(             # <<<<<<<<<<<<<<
 *                         self, device_id=device_id)
 *                 else:
 */
              __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjRenderContextOffscreen); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 151, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_3);

              /* "mujoco_py/mjsim.pyx":152
 *                 if self._render_context_offscreen is None:
 *                     render_context = MjRenderContextOffscreen(
 *                         self, device_id=device_id)             # <<<<<<<<<<<<<<
 *                 else:
 *                     render_context = self._render_context_offscreen
 */
              __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 151, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_INCREF(((PyObject *)__pyx_v_self));
              __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
              PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self));
              __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 152, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_6);
              if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_device_id, __pyx_v_device_id) < 0) __PYX_ERR(5, 152, __pyx_L9_error)

              /* "mujoco_py/mjsim.pyx":151
 *             with _MjSim_render_lock:
 *                 if self._render_context_offscreen is None:
 *                     render_context = MjRenderContextOffscreen(             # <<<<<<<<<<<<<<
 *                         self, device_id=device_id)
 *                 else:
 */
              __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 151, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_v_render_context = __pyx_t_5;
              __pyx_t_5 = 0;

              /* "mujoco_py/mjsim.pyx":150
 *         if mode == 'offscreen':
 *             with _MjSim_render_lock:
 *                 if self._render_context_offscreen is None:             # <<<<<<<<<<<<<<
 *                     render_context = MjRenderContextOffscreen(
 *                         self, device_id=device_id)
 */
              goto __pyx_L15;
            }

            /* "mujoco_py/mjsim.pyx":154
 *                         self, device_id=device_id)
 *                 else:
 *                     render_context = self._render_context_offscreen             # <<<<<<<<<<<<<<
 * 
 *                 render_context.render(
 */
            /*else*/ {
              __pyx_t_5 = __pyx_v_self->_render_context_offscreen;
              __Pyx_INCREF(__pyx_t_5);
              __pyx_v_render_context = __pyx_t_5;
              __pyx_t_5 = 0;
            }
            __pyx_L15:;

            /* "mujoco_py/mjsim.pyx":156
 *                     render_context = self._render_context_offscreen
 * 
 *                 render_context.render(             # <<<<<<<<<<<<<<
 *                     width=width, height=height, camera_id=camera_id)
 *                 return render_context.read_pixels(
 */
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_render_context, __pyx_n_s_render); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 156, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_5);

            /* "mujoco_py/mjsim.pyx":157
 * 
 *                 render_context.render(
 *                     width=width, height=height, camera_id=camera_id)             # <<<<<<<<<<<<<<
 *                 return render_context.read_pixels(
 *                     width, height, depth=depth)
 */
            __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 157, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_6);
            if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_width, __pyx_v_width) < 0) __PYX_ERR(5, 157, __pyx_L9_error)
            if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_height, __pyx_v_height) < 0) __PYX_ERR(5, 157, __pyx_L9_error)
            if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_camera_id, __pyx_v_camera_id) < 0) __PYX_ERR(5, 157, __pyx_L9_error)

            /* "mujoco_py/mjsim.pyx":156
 *                     render_context = self._render_context_offscreen
 * 
 *                 render_context.render(             # <<<<<<<<<<<<<<
 *                     width=width, height=height, camera_id=camera_id)
 *                 return render_context.read_pixels(
 */
            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 156, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

            /* "mujoco_py/mjsim.pyx":158
 *                 render_context.render(
 *                     width=width, height=height, camera_id=camera_id)
 *                 return render_context.read_pixels(             # <<<<<<<<<<<<<<
 *                     width, height, depth=depth)
 *         elif mode == 'window':
 */
            __Pyx_XDECREF(__pyx_r);
            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_render_context, __pyx_n_s_read_pixels); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 158, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_4);

            /* "mujoco_py/mjsim.pyx":159
 *                     width=width, height=height, camera_id=camera_id)
 *                 return render_context.read_pixels(
 *                     width, height, depth=depth)             # <<<<<<<<<<<<<<
 *         elif mode == 'window':
 *             if self._render_context_window is None:
 */
            __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 158, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_INCREF(__pyx_v_width);
            __Pyx_GIVEREF(__pyx_v_width);
            PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_width);
            __Pyx_INCREF(__pyx_v_height);
            __Pyx_GIVEREF(__pyx_v_height);
            PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_height);
            __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 159, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_depth, __pyx_v_depth) < 0) __PYX_ERR(5, 159, __pyx_L9_error)

            /* "mujoco_py/mjsim.pyx":158
 *                 render_context.render(
 *                     width=width, height=height, camera_id=camera_id)
 *                 return render_context.read_pixels(             # <<<<<<<<<<<<<<
 *                     width, height, depth=depth)
 *         elif mode == 'window':
 */
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 158, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_r = __pyx_t_3;
            __pyx_t_3 = 0;
            goto __pyx_L13_try_return;

            /* "mujoco_py/mjsim.pyx":149
 * 
 *         if mode == 'offscreen':
 *             with _MjSim_render_lock:             # <<<<<<<<<<<<<<
 *                 if self._render_context_offscreen is None:
 *                     render_context = MjRenderContextOffscreen(
 */
          }
          __pyx_L9_error:;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          /*except:*/ {
            __Pyx_AddTraceback("mujoco_py.cymj.MjSim.render", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(5, 149, __pyx_L11_except_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_4 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 149, __pyx_L11_except_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            if (unlikely(!__pyx_t_11)) __PYX_ERR(5, 149, __pyx_L11_except_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (__pyx_t_1 < 0) __PYX_ERR(5, 149, __pyx_L11_except_error)
            __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
            if (__pyx_t_2) {
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_GIVEREF(__pyx_t_5);
              __Pyx_XGIVEREF(__pyx_t_6);
              __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_6);
              __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; 
              __PYX_ERR(5, 149, __pyx_L11_except_error)
            }
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            goto __pyx_L10_exception_handled;
          }
          __pyx_L11_except_error:;
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
          goto __pyx_L1_error;
          __pyx_L13_try_return:;
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
          goto __pyx_L6_return;
          __pyx_L10_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        }
      }
      /*finally:*/ {
        /*normal exit:*/{
          if (__pyx_t_7) {
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__98, NULL);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 149, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          }
          goto __pyx_L8;
        }
        __pyx_L6_return: {
          __pyx_t_10 = __pyx_r;
          __pyx_r = 0;
          if (__pyx_t_7) {
            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__99, NULL);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (unlikely(!__pyx_t_9)) __PYX_ERR(5, 149, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }
          __pyx_r = __pyx_t_10;
          __pyx_t_10 = 0;
          goto __pyx_L0;
        }
        __pyx_L8:;
      }
      goto __pyx_L19;
      __pyx_L5_error:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L1_error;
      __pyx_L19:;
    }

    /* "mujoco_py/mjsim.pyx":148
 *             camera_id = self.model.camera_name2id(camera_name)
 * 
 *         if mode == 'offscreen':             # <<<<<<<<<<<<<<
 *             with _MjSim_render_lock:
 *                 if self._render_context_offscreen is None:
 */
    goto __pyx_L4;
  }

  /* "mujoco_py/mjsim.pyx":160
 *                 return render_context.read_pixels(
 *                     width, height, depth=depth)
 *         elif mode == 'window':             # <<<<<<<<<<<<<<
 *             if self._render_context_window is None:
 *                 from mujoco_py.mjviewer import MjViewer
 */
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_mode, __pyx_n_u_window, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(5, 160, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "mujoco_py/mjsim.pyx":161
 *                     width, height, depth=depth)
 *         elif mode == 'window':
 *             if self._render_context_window is None:             # <<<<<<<<<<<<<<
 *                 from mujoco_py.mjviewer import MjViewer
 *                 render_context = MjViewer(self)
 */
    __pyx_t_2 = (__pyx_v_self->_render_context_window == Py_None);
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "mujoco_py/mjsim.pyx":162
 *         elif mode == 'window':
 *             if self._render_context_window is None:
 *                 from mujoco_py.mjviewer import MjViewer             # <<<<<<<<<<<<<<
 *                 render_context = MjViewer(self)
 *             else:
 */
      __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_n_s_MjViewer);
      __Pyx_GIVEREF(__pyx_n_s_MjViewer);
      PyList_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_MjViewer);
      __pyx_t_5 = __Pyx_Import(__pyx_n_s_mujoco_py_mjviewer, __pyx_t_6, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_ImportFrom(__pyx_t_5, __pyx_n_s_MjViewer); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_MjViewer = __pyx_t_6;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "mujoco_py/mjsim.pyx":163
 *             if self._render_context_window is None:
 *                 from mujoco_py.mjviewer import MjViewer
 *                 render_context = MjViewer(self)             # <<<<<<<<<<<<<<
 *             else:
 *                 render_context = self._render_context_window
 */
      __Pyx_INCREF(__pyx_v_MjViewer);
      __pyx_t_6 = __pyx_v_MjViewer; __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 163, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)};
          __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 163, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)};
          __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 163, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else
        #endif
        {
          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 163, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
          __Pyx_INCREF(((PyObject *)__pyx_v_self));
          __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
          PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self));
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 163, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_v_render_context = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "mujoco_py/mjsim.pyx":161
 *                     width, height, depth=depth)
 *         elif mode == 'window':
 *             if self._render_context_window is None:             # <<<<<<<<<<<<<<
 *                 from mujoco_py.mjviewer import MjViewer
 *                 render_context = MjViewer(self)
 */
      goto __pyx_L20;
    }

    /* "mujoco_py/mjsim.pyx":165
 *                 render_context = MjViewer(self)
 *             else:
 *                 render_context = self._render_context_window             # <<<<<<<<<<<<<<
 * 
 *             render_context.render()
 */
    /*else*/ {
      __pyx_t_5 = __pyx_v_self->_render_context_window;
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_render_context = __pyx_t_5;
      __pyx_t_5 = 0;
    }
    __pyx_L20:;

    /* "mujoco_py/mjsim.pyx":167
 *                 render_context = self._render_context_window
 * 
 *             render_context.render()             # <<<<<<<<<<<<<<
 * 
 *         else:
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_render_context, __pyx_n_s_render); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 167, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 167, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "mujoco_py/mjsim.pyx":160
 *                 return render_context.read_pixels(
 *                     width, height, depth=depth)
 *         elif mode == 'window':             # <<<<<<<<<<<<<<
 *             if self._render_context_window is None:
 *                 from mujoco_py.mjviewer import MjViewer
 */
    goto __pyx_L4;
  }

  /* "mujoco_py/mjsim.pyx":170
 * 
 *         else:
 *             raise ValueError("Mode must be either 'window' or 'offscreen'.")             # <<<<<<<<<<<<<<
 * 
 *     def add_render_context(self, render_context):
 */
  /*else*/ {
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__100, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(5, 170, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "mujoco_py/mjsim.pyx":124
 *                 mj_step(self.model.ptr, self.data.ptr)
 * 
 *     def render(self, width=None, height=None, *, camera_name=None, depth=False,             # <<<<<<<<<<<<<<
 *                mode='offscreen', device_id=-1):
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.render", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_camera_id);
  __Pyx_XDECREF(__pyx_v_render_context);
  __Pyx_XDECREF(__pyx_v_MjViewer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":172
 *             raise ValueError("Mode must be either 'window' or 'offscreen'.")
 * 
 *     def add_render_context(self, render_context):             # <<<<<<<<<<<<<<
 *         self.render_contexts.append(render_context)
 *         if render_context.offscreen and self._render_context_offscreen is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_11add_render_context(PyObject *__pyx_v_self, PyObject *__pyx_v_render_context); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_11add_render_context(PyObject *__pyx_v_self, PyObject *__pyx_v_render_context) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_render_context (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_10add_render_context(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), ((PyObject *)__pyx_v_render_context));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_10add_render_context(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_render_context) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("add_render_context", 0);

  /* "mujoco_py/mjsim.pyx":173
 * 
 *     def add_render_context(self, render_context):
 *         self.render_contexts.append(render_context)             # <<<<<<<<<<<<<<
 *         if render_context.offscreen and self._render_context_offscreen is None:
 *             self._render_context_offscreen = render_context
 */
  if (unlikely(__pyx_v_self->render_contexts == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(5, 173, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->render_contexts, __pyx_v_render_context); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(5, 173, __pyx_L1_error)

  /* "mujoco_py/mjsim.pyx":174
 *     def add_render_context(self, render_context):
 *         self.render_contexts.append(render_context)
 *         if render_context.offscreen and self._render_context_offscreen is None:             # <<<<<<<<<<<<<<
 *             self._render_context_offscreen = render_context
 *         elif not render_context.offscreen and self._render_context_window is None:
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_render_context, __pyx_n_s_offscreen); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(5, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_self->_render_context_offscreen == Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "mujoco_py/mjsim.pyx":175
 *         self.render_contexts.append(render_context)
 *         if render_context.offscreen and self._render_context_offscreen is None:
 *             self._render_context_offscreen = render_context             # <<<<<<<<<<<<<<
 *         elif not render_context.offscreen and self._render_context_window is None:
 *             self._render_context_window = render_context
 */
    __Pyx_INCREF(__pyx_v_render_context);
    __Pyx_GIVEREF(__pyx_v_render_context);
    __Pyx_GOTREF(__pyx_v_self->_render_context_offscreen);
    __Pyx_DECREF(__pyx_v_self->_render_context_offscreen);
    __pyx_v_self->_render_context_offscreen = __pyx_v_render_context;

    /* "mujoco_py/mjsim.pyx":174
 *     def add_render_context(self, render_context):
 *         self.render_contexts.append(render_context)
 *         if render_context.offscreen and self._render_context_offscreen is None:             # <<<<<<<<<<<<<<
 *             self._render_context_offscreen = render_context
 *         elif not render_context.offscreen and self._render_context_window is None:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/mjsim.pyx":176
 *         if render_context.offscreen and self._render_context_offscreen is None:
 *             self._render_context_offscreen = render_context
 *         elif not render_context.offscreen and self._render_context_window is None:             # <<<<<<<<<<<<<<
 *             self._render_context_window = render_context
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_render_context, __pyx_n_s_offscreen); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(5, 176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = ((!__pyx_t_5) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_self->_render_context_window == Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_2) {

    /* "mujoco_py/mjsim.pyx":177
 *             self._render_context_offscreen = render_context
 *         elif not render_context.offscreen and self._render_context_window is None:
 *             self._render_context_window = render_context             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
    __Pyx_INCREF(__pyx_v_render_context);
    __Pyx_GIVEREF(__pyx_v_render_context);
    __Pyx_GOTREF(__pyx_v_self->_render_context_window);
    __Pyx_DECREF(__pyx_v_self->_render_context_window);
    __pyx_v_self->_render_context_window = __pyx_v_render_context;

    /* "mujoco_py/mjsim.pyx":176
 *         if render_context.offscreen and self._render_context_offscreen is None:
 *             self._render_context_offscreen = render_context
 *         elif not render_context.offscreen and self._render_context_window is None:             # <<<<<<<<<<<<<<
 *             self._render_context_window = render_context
 * 
 */
  }
  __pyx_L3:;

  /* "mujoco_py/mjsim.pyx":172
 *             raise ValueError("Mode must be either 'window' or 'offscreen'.")
 * 
 *     def add_render_context(self, render_context):             # <<<<<<<<<<<<<<
 *         self.render_contexts.append(render_context)
 *         if render_context.offscreen and self._render_context_offscreen is None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.add_render_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":180
 * 
 *     @property
 *     def udd_callback(self):             # <<<<<<<<<<<<<<
 *         return self._udd_callback
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_12udd_callback_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_12udd_callback_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_12udd_callback___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_12udd_callback___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "mujoco_py/mjsim.pyx":181
 *     @property
 *     def udd_callback(self):
 *         return self._udd_callback             # <<<<<<<<<<<<<<
 * 
 *     @udd_callback.setter
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_udd_callback);
  __pyx_r = __pyx_v_self->_udd_callback;
  goto __pyx_L0;

  /* "mujoco_py/mjsim.pyx":180
 * 
 *     @property
 *     def udd_callback(self):             # <<<<<<<<<<<<<<
 *         return self._udd_callback
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":184
 * 
 *     @udd_callback.setter
 *     def udd_callback(self, value):             # <<<<<<<<<<<<<<
 *         self._udd_callback = value
 *         self.udd_state = None
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_12udd_callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_12udd_callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_12udd_callback_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_5MjSim_12udd_callback_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "mujoco_py/mjsim.pyx":185
 *     @udd_callback.setter
 *     def udd_callback(self, value):
 *         self._udd_callback = value             # <<<<<<<<<<<<<<
 *         self.udd_state = None
 *         self.step_udd()
 */
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_udd_callback);
  __Pyx_DECREF(__pyx_v_self->_udd_callback);
  __pyx_v_self->_udd_callback = __pyx_v_value;

  /* "mujoco_py/mjsim.pyx":186
 *     def udd_callback(self, value):
 *         self._udd_callback = value
 *         self.udd_state = None             # <<<<<<<<<<<<<<
 *         self.step_udd()
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->udd_state);
  __Pyx_DECREF(__pyx_v_self->udd_state);
  __pyx_v_self->udd_state = ((PyObject*)Py_None);

  /* "mujoco_py/mjsim.pyx":187
 *         self._udd_callback = value
 *         self.udd_state = None
 *         self.step_udd()             # <<<<<<<<<<<<<<
 * 
 *     cpdef substep_callback(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_step_udd); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 187, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":184
 * 
 *     @udd_callback.setter
 *     def udd_callback(self, value):             # <<<<<<<<<<<<<<
 *         self._udd_callback = value
 *         self.udd_state = None
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.udd_callback.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":189
 *         self.step_udd()
 * 
 *     cpdef substep_callback(self):             # <<<<<<<<<<<<<<
 *         if self.substep_callback_ptr:
 *             (<mjfGeneric>self.substep_callback_ptr)(self.model.ptr, self.data.ptr)
 */

static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_13substep_callback(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_f_9mujoco_py_4cymj_5MjSim_substep_callback(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("substep_callback", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_substep_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_13substep_callback)) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (__pyx_t_4) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 189, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 189, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "mujoco_py/mjsim.pyx":190
 * 
 *     cpdef substep_callback(self):
 *         if self.substep_callback_ptr:             # <<<<<<<<<<<<<<
 *             (<mjfGeneric>self.substep_callback_ptr)(self.model.ptr, self.data.ptr)
 * 
 */
  __pyx_t_5 = (__pyx_v_self->substep_callback_ptr != 0);
  if (__pyx_t_5) {

    /* "mujoco_py/mjsim.pyx":191
 *     cpdef substep_callback(self):
 *         if self.substep_callback_ptr:
 *             (<mjfGeneric>self.substep_callback_ptr)(self.model.ptr, self.data.ptr)             # <<<<<<<<<<<<<<
 * 
 *     def set_substep_callback(self, substep_callback, userdata_names=None):
 */
    ((__pyx_t_9mujoco_py_4cymj_mjfGeneric)__pyx_v_self->substep_callback_ptr)(__pyx_v_self->model->ptr, __pyx_v_self->data->ptr);

    /* "mujoco_py/mjsim.pyx":190
 * 
 *     cpdef substep_callback(self):
 *         if self.substep_callback_ptr:             # <<<<<<<<<<<<<<
 *             (<mjfGeneric>self.substep_callback_ptr)(self.model.ptr, self.data.ptr)
 * 
 */
  }

  /* "mujoco_py/mjsim.pyx":189
 *         self.step_udd()
 * 
 *     cpdef substep_callback(self):             # <<<<<<<<<<<<<<
 *         if self.substep_callback_ptr:
 *             (<mjfGeneric>self.substep_callback_ptr)(self.model.ptr, self.data.ptr)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.substep_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_13substep_callback(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_13substep_callback(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("substep_callback (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_12substep_callback(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_12substep_callback(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("substep_callback", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9mujoco_py_4cymj_5MjSim_substep_callback(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.substep_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":193
 *             (<mjfGeneric>self.substep_callback_ptr)(self.model.ptr, self.data.ptr)
 * 
 *     def set_substep_callback(self, substep_callback, userdata_names=None):             # <<<<<<<<<<<<<<
 *         '''
 *         Set a substep callback function.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_15set_substep_callback(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_5MjSim_14set_substep_callback[] = "\n        Set a substep callback function.\n\n        Parameters :\n            substep_callback : str or int or None\n                If `substep_callback` is a string, compile to function pointer and set.\n                    See `builder.build_callback_fn()` for documentation.\n                If `substep_callback` is an int, we interpret it as a function pointer.\n                If `substep_callback` is None, we disable substep_callbacks.\n            userdata_names : list of strings or None\n                This is a convenience parameter, if not None, this is passed\n                onto ``model.set_userdata_names()``.\n        ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_15set_substep_callback(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_substep_callback = 0;
  PyObject *__pyx_v_userdata_names = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_substep_callback (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_substep_callback,&__pyx_n_s_userdata_names,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_substep_callback)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_userdata_names);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_substep_callback") < 0)) __PYX_ERR(5, 193, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_substep_callback = values[0];
    __pyx_v_userdata_names = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_substep_callback", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 193, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.set_substep_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_14set_substep_callback(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), __pyx_v_substep_callback, __pyx_v_userdata_names);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_14set_substep_callback(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_substep_callback, PyObject *__pyx_v_userdata_names) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  uintptr_t __pyx_t_7;
  int __pyx_t_8;
  __Pyx_RefNannySetupContext("set_substep_callback", 0);

  /* "mujoco_py/mjsim.pyx":207
 *                 onto ``model.set_userdata_names()``.
 *         '''
 *         if userdata_names is not None:             # <<<<<<<<<<<<<<
 *             self.model.set_userdata_names(userdata_names)
 *         if substep_callback is None:
 */
  __pyx_t_1 = (__pyx_v_userdata_names != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/mjsim.pyx":208
 *         '''
 *         if userdata_names is not None:
 *             self.model.set_userdata_names(userdata_names)             # <<<<<<<<<<<<<<
 *         if substep_callback is None:
 *             self.substep_callback_ptr = 0
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->model), __pyx_n_s_set_userdata_names); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_userdata_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 208, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_userdata_names};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 208, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_userdata_names};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 208, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_userdata_names);
        __Pyx_GIVEREF(__pyx_v_userdata_names);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_userdata_names);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":207
 *                 onto ``model.set_userdata_names()``.
 *         '''
 *         if userdata_names is not None:             # <<<<<<<<<<<<<<
 *             self.model.set_userdata_names(userdata_names)
 *         if substep_callback is None:
 */
  }

  /* "mujoco_py/mjsim.pyx":209
 *         if userdata_names is not None:
 *             self.model.set_userdata_names(userdata_names)
 *         if substep_callback is None:             # <<<<<<<<<<<<<<
 *             self.substep_callback_ptr = 0
 *         elif isinstance(substep_callback, int):
 */
  __pyx_t_2 = (__pyx_v_substep_callback == Py_None);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "mujoco_py/mjsim.pyx":210
 *             self.model.set_userdata_names(userdata_names)
 *         if substep_callback is None:
 *             self.substep_callback_ptr = 0             # <<<<<<<<<<<<<<
 *         elif isinstance(substep_callback, int):
 *             self.substep_callback_ptr = substep_callback
 */
    __pyx_v_self->substep_callback_ptr = 0;

    /* "mujoco_py/mjsim.pyx":209
 *         if userdata_names is not None:
 *             self.model.set_userdata_names(userdata_names)
 *         if substep_callback is None:             # <<<<<<<<<<<<<<
 *             self.substep_callback_ptr = 0
 *         elif isinstance(substep_callback, int):
 */
    goto __pyx_L4;
  }

  /* "mujoco_py/mjsim.pyx":211
 *         if substep_callback is None:
 *             self.substep_callback_ptr = 0
 *         elif isinstance(substep_callback, int):             # <<<<<<<<<<<<<<
 *             self.substep_callback_ptr = substep_callback
 *         elif isinstance(substep_callback, str):
 */
  __pyx_t_1 = PyInt_Check(__pyx_v_substep_callback); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/mjsim.pyx":212
 *             self.substep_callback_ptr = 0
 *         elif isinstance(substep_callback, int):
 *             self.substep_callback_ptr = substep_callback             # <<<<<<<<<<<<<<
 *         elif isinstance(substep_callback, str):
 *             self.substep_callback_ptr = build_callback_fn(substep_callback,
 */
    __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_v_substep_callback); if (unlikely((__pyx_t_7 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(5, 212, __pyx_L1_error)
    __pyx_v_self->substep_callback_ptr = __pyx_t_7;

    /* "mujoco_py/mjsim.pyx":211
 *         if substep_callback is None:
 *             self.substep_callback_ptr = 0
 *         elif isinstance(substep_callback, int):             # <<<<<<<<<<<<<<
 *             self.substep_callback_ptr = substep_callback
 *         elif isinstance(substep_callback, str):
 */
    goto __pyx_L4;
  }

  /* "mujoco_py/mjsim.pyx":213
 *         elif isinstance(substep_callback, int):
 *             self.substep_callback_ptr = substep_callback
 *         elif isinstance(substep_callback, str):             # <<<<<<<<<<<<<<
 *             self.substep_callback_ptr = build_callback_fn(substep_callback,
 *                                                           self.model.userdata_names)
 */
  __pyx_t_2 = PyUnicode_Check(__pyx_v_substep_callback); 
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "mujoco_py/mjsim.pyx":214
 *             self.substep_callback_ptr = substep_callback
 *         elif isinstance(substep_callback, str):
 *             self.substep_callback_ptr = build_callback_fn(substep_callback,             # <<<<<<<<<<<<<<
 *                                                           self.model.userdata_names)
 *         else:
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_build_callback_fn); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);

    /* "mujoco_py/mjsim.pyx":215
 *         elif isinstance(substep_callback, str):
 *             self.substep_callback_ptr = build_callback_fn(substep_callback,
 *                                                           self.model.userdata_names)             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError('invalid: {}'.format(type(substep_callback)))
 */
    __pyx_t_6 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_8 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_substep_callback, __pyx_v_self->model->userdata_names};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 214, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_substep_callback, __pyx_v_self->model->userdata_names};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 214, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 214, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_INCREF(__pyx_v_substep_callback);
      __Pyx_GIVEREF(__pyx_v_substep_callback);
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, __pyx_v_substep_callback);
      __Pyx_INCREF(__pyx_v_self->model->userdata_names);
      __Pyx_GIVEREF(__pyx_v_self->model->userdata_names);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_v_self->model->userdata_names);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 214, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "mujoco_py/mjsim.pyx":214
 *             self.substep_callback_ptr = substep_callback
 *         elif isinstance(substep_callback, str):
 *             self.substep_callback_ptr = build_callback_fn(substep_callback,             # <<<<<<<<<<<<<<
 *                                                           self.model.userdata_names)
 *         else:
 */
    __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(5, 214, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_self->substep_callback_ptr = __pyx_t_7;

    /* "mujoco_py/mjsim.pyx":213
 *         elif isinstance(substep_callback, int):
 *             self.substep_callback_ptr = substep_callback
 *         elif isinstance(substep_callback, str):             # <<<<<<<<<<<<<<
 *             self.substep_callback_ptr = build_callback_fn(substep_callback,
 *                                                           self.model.userdata_names)
 */
    goto __pyx_L4;
  }

  /* "mujoco_py/mjsim.pyx":217
 *                                                           self.model.userdata_names)
 *         else:
 *             raise TypeError('invalid: {}'.format(type(substep_callback)))             # <<<<<<<<<<<<<<
 * 
 *     def step_udd(self):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_invalid, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)Py_TYPE(__pyx_v_substep_callback))); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 217, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, ((PyObject *)Py_TYPE(__pyx_v_substep_callback))};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 217, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, ((PyObject *)Py_TYPE(__pyx_v_substep_callback))};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 217, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_substep_callback)));
        __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_substep_callback)));
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, ((PyObject *)Py_TYPE(__pyx_v_substep_callback)));
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(5, 217, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "mujoco_py/mjsim.pyx":193
 *             (<mjfGeneric>self.substep_callback_ptr)(self.model.ptr, self.data.ptr)
 * 
 *     def set_substep_callback(self, substep_callback, userdata_names=None):             # <<<<<<<<<<<<<<
 *         '''
 *         Set a substep callback function.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.set_substep_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":219
 *             raise TypeError('invalid: {}'.format(type(substep_callback)))
 * 
 *     def step_udd(self):             # <<<<<<<<<<<<<<
 *         if self._udd_callback is None:
 *             self.udd_state = {}
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_17step_udd(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_17step_udd(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("step_udd (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_16step_udd(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_16step_udd(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_v_schema_example = NULL;
  PyObject *__pyx_v_keys = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  __Pyx_RefNannySetupContext("step_udd", 0);

  /* "mujoco_py/mjsim.pyx":220
 * 
 *     def step_udd(self):
 *         if self._udd_callback is None:             # <<<<<<<<<<<<<<
 *             self.udd_state = {}
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_udd_callback == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/mjsim.pyx":221
 *     def step_udd(self):
 *         if self._udd_callback is None:
 *             self.udd_state = {}             # <<<<<<<<<<<<<<
 *         else:
 *             schema_example = self.udd_state
 */
    __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->udd_state);
    __Pyx_DECREF(__pyx_v_self->udd_state);
    __pyx_v_self->udd_state = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":220
 * 
 *     def step_udd(self):
 *         if self._udd_callback is None:             # <<<<<<<<<<<<<<
 *             self.udd_state = {}
 *         else:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/mjsim.pyx":223
 *             self.udd_state = {}
 *         else:
 *             schema_example = self.udd_state             # <<<<<<<<<<<<<<
 *             self.udd_state = self._udd_callback(self)
 *             # Check to make sure the udd_state has consistent keys and dimension across steps
 */
  /*else*/ {
    __pyx_t_3 = __pyx_v_self->udd_state;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_v_schema_example = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":224
 *         else:
 *             schema_example = self.udd_state
 *             self.udd_state = self._udd_callback(self)             # <<<<<<<<<<<<<<
 *             # Check to make sure the udd_state has consistent keys and dimension across steps
 *             if schema_example is not None:
 */
    __Pyx_INCREF(__pyx_v_self->_udd_callback);
    __pyx_t_4 = __pyx_v_self->_udd_callback; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, ((PyObject *)__pyx_v_self)};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 224, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, ((PyObject *)__pyx_v_self)};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 224, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 224, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, ((PyObject *)__pyx_v_self));
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 224, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(5, 224, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->udd_state);
    __Pyx_DECREF(__pyx_v_self->udd_state);
    __pyx_v_self->udd_state = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":226
 *             self.udd_state = self._udd_callback(self)
 *             # Check to make sure the udd_state has consistent keys and dimension across steps
 *             if schema_example is not None:             # <<<<<<<<<<<<<<
 *                 keys = set(schema_example.keys()) | set(self.udd_state.keys())
 *                 for key in keys:
 */
    __pyx_t_2 = (__pyx_v_schema_example != ((PyObject*)Py_None));
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "mujoco_py/mjsim.pyx":227
 *             # Check to make sure the udd_state has consistent keys and dimension across steps
 *             if schema_example is not None:
 *                 keys = set(schema_example.keys()) | set(self.udd_state.keys())             # <<<<<<<<<<<<<<
 *                 for key in keys:
 *                     assert key in schema_example, "Keys cannot be added to udd_state between steps."
 */
      if (unlikely(__pyx_v_schema_example == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
        __PYX_ERR(5, 227, __pyx_L1_error)
      }
      __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_schema_example); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PySet_New(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(__pyx_v_self->udd_state == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
        __PYX_ERR(5, 227, __pyx_L1_error)
      }
      __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_self->udd_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = PySet_New(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Or(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_v_keys = ((PyObject*)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "mujoco_py/mjsim.pyx":228
 *             if schema_example is not None:
 *                 keys = set(schema_example.keys()) | set(self.udd_state.keys())
 *                 for key in keys:             # <<<<<<<<<<<<<<
 *                     assert key in schema_example, "Keys cannot be added to udd_state between steps."
 *                     assert key in self.udd_state, "Keys cannot be dropped from udd_state between steps."
 */
      __pyx_t_3 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 228, __pyx_L1_error)
      for (;;) {
        {
          __pyx_t_6 = __pyx_t_7(__pyx_t_3);
          if (unlikely(!__pyx_t_6)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(5, 228, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_6);
        __pyx_t_6 = 0;

        /* "mujoco_py/mjsim.pyx":229
 *                 keys = set(schema_example.keys()) | set(self.udd_state.keys())
 *                 for key in keys:
 *                     assert key in schema_example, "Keys cannot be added to udd_state between steps."             # <<<<<<<<<<<<<<
 *                     assert key in self.udd_state, "Keys cannot be dropped from udd_state between steps."
 *                     if isinstance(schema_example[key], Number):
 */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        if (unlikely(!Py_OptimizeFlag)) {
          if (unlikely(__pyx_v_schema_example == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
            __PYX_ERR(5, 229, __pyx_L1_error)
          }
          __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_schema_example, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(5, 229, __pyx_L1_error)
          if (unlikely(!(__pyx_t_1 != 0))) {
            PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Keys_cannot_be_added_to_udd_stat);
            __PYX_ERR(5, 229, __pyx_L1_error)
          }
        }
        #endif

        /* "mujoco_py/mjsim.pyx":230
 *                 for key in keys:
 *                     assert key in schema_example, "Keys cannot be added to udd_state between steps."
 *                     assert key in self.udd_state, "Keys cannot be dropped from udd_state between steps."             # <<<<<<<<<<<<<<
 *                     if isinstance(schema_example[key], Number):
 *                         assert isinstance(self.udd_state[key], Number), \
 */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        if (unlikely(!Py_OptimizeFlag)) {
          if (unlikely(__pyx_v_self->udd_state == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
            __PYX_ERR(5, 230, __pyx_L1_error)
          }
          __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_self->udd_state, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(5, 230, __pyx_L1_error)
          if (unlikely(!(__pyx_t_1 != 0))) {
            PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Keys_cannot_be_dropped_from_udd);
            __PYX_ERR(5, 230, __pyx_L1_error)
          }
        }
        #endif

        /* "mujoco_py/mjsim.pyx":231
 *                     assert key in schema_example, "Keys cannot be added to udd_state between steps."
 *                     assert key in self.udd_state, "Keys cannot be dropped from udd_state between steps."
 *                     if isinstance(schema_example[key], Number):             # <<<<<<<<<<<<<<
 *                         assert isinstance(self.udd_state[key], Number), \
 *                             "Every value in udd_state must be either a number or a numpy array"
 */
        if (unlikely(__pyx_v_schema_example == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(5, 231, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_schema_example, __pyx_v_key); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 231, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_Number); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 231, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = PyObject_IsInstance(__pyx_t_6, __pyx_t_4); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(5, 231, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_2 = (__pyx_t_1 != 0);
        if (__pyx_t_2) {

          /* "mujoco_py/mjsim.pyx":232
 *                     assert key in self.udd_state, "Keys cannot be dropped from udd_state between steps."
 *                     if isinstance(schema_example[key], Number):
 *                         assert isinstance(self.udd_state[key], Number), \             # <<<<<<<<<<<<<<
 *                             "Every value in udd_state must be either a number or a numpy array"
 *                     else:
 */
          #ifndef CYTHON_WITHOUT_ASSERTIONS
          if (unlikely(!Py_OptimizeFlag)) {
            if (unlikely(__pyx_v_self->udd_state == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(5, 232, __pyx_L1_error)
            }
            __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->udd_state, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 232, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_Number); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 232, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_2 = PyObject_IsInstance(__pyx_t_4, __pyx_t_6); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 232, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!(__pyx_t_2 != 0))) {
              PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Every_value_in_udd_state_must_be);
              __PYX_ERR(5, 232, __pyx_L1_error)
            }
          }
          #endif

          /* "mujoco_py/mjsim.pyx":231
 *                     assert key in schema_example, "Keys cannot be added to udd_state between steps."
 *                     assert key in self.udd_state, "Keys cannot be dropped from udd_state between steps."
 *                     if isinstance(schema_example[key], Number):             # <<<<<<<<<<<<<<
 *                         assert isinstance(self.udd_state[key], Number), \
 *                             "Every value in udd_state must be either a number or a numpy array"
 */
          goto __pyx_L7;
        }

        /* "mujoco_py/mjsim.pyx":235
 *                             "Every value in udd_state must be either a number or a numpy array"
 *                     else:
 *                         assert isinstance(self.udd_state[key], np.ndarray), \             # <<<<<<<<<<<<<<
 *                             "Every value in udd_state must be either a number or a numpy array"
 *                         assert self.udd_state[key].shape == schema_example[key].shape, \
 */
        /*else*/ {
          #ifndef CYTHON_WITHOUT_ASSERTIONS
          if (unlikely(!Py_OptimizeFlag)) {
            if (unlikely(__pyx_v_self->udd_state == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(5, 235, __pyx_L1_error)
            }
            __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_self->udd_state, __pyx_v_key); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 235, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_2 = __Pyx_TypeCheck(__pyx_t_6, __pyx_ptype_5numpy_ndarray); 
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!(__pyx_t_2 != 0))) {
              PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Every_value_in_udd_state_must_be);
              __PYX_ERR(5, 235, __pyx_L1_error)
            }
          }
          #endif

          /* "mujoco_py/mjsim.pyx":237
 *                         assert isinstance(self.udd_state[key], np.ndarray), \
 *                             "Every value in udd_state must be either a number or a numpy array"
 *                         assert self.udd_state[key].shape == schema_example[key].shape, \             # <<<<<<<<<<<<<<
 *                             "Numpy array values in udd_state must keep the same dimension across steps."
 * 
 */
          #ifndef CYTHON_WITHOUT_ASSERTIONS
          if (unlikely(!Py_OptimizeFlag)) {
            if (unlikely(__pyx_v_self->udd_state == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(5, 237, __pyx_L1_error)
            }
            __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_self->udd_state, __pyx_v_key); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 237, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 237, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(__pyx_v_schema_example == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(5, 237, __pyx_L1_error)
            }
            __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_schema_example, __pyx_v_key); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 237, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 237, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 237, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(5, 237, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_2)) {
              PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Numpy_array_values_in_udd_state);
              __PYX_ERR(5, 237, __pyx_L1_error)
            }
          }
          #endif
        }
        __pyx_L7:;

        /* "mujoco_py/mjsim.pyx":228
 *             if schema_example is not None:
 *                 keys = set(schema_example.keys()) | set(self.udd_state.keys())
 *                 for key in keys:             # <<<<<<<<<<<<<<
 *                     assert key in schema_example, "Keys cannot be added to udd_state between steps."
 *                     assert key in self.udd_state, "Keys cannot be dropped from udd_state between steps."
 */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "mujoco_py/mjsim.pyx":226
 *             self.udd_state = self._udd_callback(self)
 *             # Check to make sure the udd_state has consistent keys and dimension across steps
 *             if schema_example is not None:             # <<<<<<<<<<<<<<
 *                 keys = set(schema_example.keys()) | set(self.udd_state.keys())
 *                 for key in keys:
 */
    }
  }
  __pyx_L3:;

  /* "mujoco_py/mjsim.pyx":219
 *             raise TypeError('invalid: {}'.format(type(substep_callback)))
 * 
 *     def step_udd(self):             # <<<<<<<<<<<<<<
 *         if self._udd_callback is None:
 *             self.udd_state = {}
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.step_udd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_schema_example);
  __Pyx_XDECREF(__pyx_v_keys);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":240
 *                             "Numpy array values in udd_state must keep the same dimension across steps."
 * 
 *     def get_state(self):             # <<<<<<<<<<<<<<
 *         """ Returns a copy of the simulator state. """
 *         qpos = np.copy(self.data.qpos)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_19get_state(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_5MjSim_18get_state[] = " Returns a copy of the simulator state. ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_19get_state(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_state (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_18get_state(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_18get_state(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_v_qpos = NULL;
  PyObject *__pyx_v_qvel = NULL;
  PyObject *__pyx_v_act = NULL;
  PyObject *__pyx_v_udd_state = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("get_state", 0);

  /* "mujoco_py/mjsim.pyx":242
 *     def get_state(self):
 *         """ Returns a copy of the simulator state. """
 *         qpos = np.copy(self.data.qpos)             # <<<<<<<<<<<<<<
 *         qvel = np.copy(self.data.qvel)
 *         if self.model.na == 0:
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_qpos); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 242, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 242, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 242, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 242, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_qpos = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":243
 *         """ Returns a copy of the simulator state. """
 *         qpos = np.copy(self.data.qpos)
 *         qvel = np.copy(self.data.qvel)             # <<<<<<<<<<<<<<
 *         if self.model.na == 0:
 *             act = None
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 243, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 243, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 243, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 243, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 243, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_qvel = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":244
 *         qpos = np.copy(self.data.qpos)
 *         qvel = np.copy(self.data.qvel)
 *         if self.model.na == 0:             # <<<<<<<<<<<<<<
 *             act = None
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->model), __pyx_n_s_na); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(5, 244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_6) {

    /* "mujoco_py/mjsim.pyx":245
 *         qvel = np.copy(self.data.qvel)
 *         if self.model.na == 0:
 *             act = None             # <<<<<<<<<<<<<<
 *         else:
 *             act = np.copy(self.data.act)
 */
    __Pyx_INCREF(Py_None);
    __pyx_v_act = Py_None;

    /* "mujoco_py/mjsim.pyx":244
 *         qpos = np.copy(self.data.qpos)
 *         qvel = np.copy(self.data.qvel)
 *         if self.model.na == 0:             # <<<<<<<<<<<<<<
 *             act = None
 *         else:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/mjsim.pyx":247
 *             act = None
 *         else:
 *             act = np.copy(self.data.act)             # <<<<<<<<<<<<<<
 *         udd_state = copy.deepcopy(self.udd_state)
 * 
 */
  /*else*/ {
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_act); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_3) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 247, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 247, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 247, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else
      #endif
      {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 247, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 247, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_act = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_L3:;

  /* "mujoco_py/mjsim.pyx":248
 *         else:
 *             act = np.copy(self.data.act)
 *         udd_state = copy.deepcopy(self.udd_state)             # <<<<<<<<<<<<<<
 * 
 *         return MjSimState(self.data.time, qpos, qvel, act, udd_state)
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_deepcopy); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->udd_state); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_self->udd_state};
      __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 248, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_self->udd_state};
      __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 248, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else
    #endif
    {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 248, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_v_self->udd_state);
      __Pyx_GIVEREF(__pyx_v_self->udd_state);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_self->udd_state);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 248, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_udd_state = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "mujoco_py/mjsim.pyx":250
 *         udd_state = copy.deepcopy(self.udd_state)
 * 
 *         return MjSimState(self.data.time, qpos, qvel, act, udd_state)             # <<<<<<<<<<<<<<
 * 
 *     def set_state(self, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjSimState); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_t_1, __pyx_v_qpos, __pyx_v_qvel, __pyx_v_act, __pyx_v_udd_state};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 250, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_t_1, __pyx_v_qpos, __pyx_v_qvel, __pyx_v_act, __pyx_v_udd_state};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 250, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else
  #endif
  {
    __pyx_t_3 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, __pyx_t_1);
    __Pyx_INCREF(__pyx_v_qpos);
    __Pyx_GIVEREF(__pyx_v_qpos);
    PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_v_qpos);
    __Pyx_INCREF(__pyx_v_qvel);
    __Pyx_GIVEREF(__pyx_v_qvel);
    PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_7, __pyx_v_qvel);
    __Pyx_INCREF(__pyx_v_act);
    __Pyx_GIVEREF(__pyx_v_act);
    PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_7, __pyx_v_act);
    __Pyx_INCREF(__pyx_v_udd_state);
    __Pyx_GIVEREF(__pyx_v_udd_state);
    PyTuple_SET_ITEM(__pyx_t_3, 4+__pyx_t_7, __pyx_v_udd_state);
    __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjsim.pyx":240
 *                             "Numpy array values in udd_state must keep the same dimension across steps."
 * 
 *     def get_state(self):             # <<<<<<<<<<<<<<
 *         """ Returns a copy of the simulator state. """
 *         qpos = np.copy(self.data.qpos)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.get_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_qpos);
  __Pyx_XDECREF(__pyx_v_qvel);
  __Pyx_XDECREF(__pyx_v_act);
  __Pyx_XDECREF(__pyx_v_udd_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":252
 *         return MjSimState(self.data.time, qpos, qvel, act, udd_state)
 * 
 *     def set_state(self, value):             # <<<<<<<<<<<<<<
 *         """
 *         Sets the state from an MjSimState.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_21set_state(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_5MjSim_20set_state[] = "\n        Sets the state from an MjSimState.\n        If the MjSimState was previously unflattened from a numpy array, consider\n        set_state_from_flattened, as the defensive copy is a substantial overhead\n        in an inner loop.\n\n        Args:\n        - value (MjSimState): the desired state.\n        - call_forward: optionally call sim.forward(). Called by default if\n            the udd_callback is set.\n        ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_21set_state(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_state (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_20set_state(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_20set_state(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("set_state", 0);

  /* "mujoco_py/mjsim.pyx":264
 *             the udd_callback is set.
 *         """
 *         self.data.time = value.time             # <<<<<<<<<<<<<<
 *         self.data.qpos[:] = np.copy(value.qpos)
 *         self.data.qvel[:] = np.copy(value.qvel)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(5, 264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":265
 *         """
 *         self.data.time = value.time
 *         self.data.qpos[:] = np.copy(value.qpos)             # <<<<<<<<<<<<<<
 *         self.data.qvel[:] = np.copy(value.qvel)
 *         if self.model.na != 0:
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_qpos); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 265, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 265, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 265, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_qpos); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_PyObject_SetSlice(__pyx_t_3, __pyx_t_1, 0, 0, NULL, NULL, &__pyx_slice__101, 0, 0, 1) < 0) __PYX_ERR(5, 265, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":266
 *         self.data.time = value.time
 *         self.data.qpos[:] = np.copy(value.qpos)
 *         self.data.qvel[:] = np.copy(value.qvel)             # <<<<<<<<<<<<<<
 *         if self.model.na != 0:
 *             self.data.act[:] = np.copy(value.act)
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 266, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 266, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 266, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 266, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 266, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_qvel); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_PyObject_SetSlice(__pyx_t_5, __pyx_t_1, 0, 0, NULL, NULL, &__pyx_slice__102, 0, 0, 1) < 0) __PYX_ERR(5, 266, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":267
 *         self.data.qpos[:] = np.copy(value.qpos)
 *         self.data.qvel[:] = np.copy(value.qvel)
 *         if self.model.na != 0:             # <<<<<<<<<<<<<<
 *             self.data.act[:] = np.copy(value.act)
 *         self.udd_state = copy.deepcopy(value.udd_state)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->model), __pyx_n_s_na); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(5, 267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_6) {

    /* "mujoco_py/mjsim.pyx":268
 *         self.data.qvel[:] = np.copy(value.qvel)
 *         if self.model.na != 0:
 *             self.data.act[:] = np.copy(value.act)             # <<<<<<<<<<<<<<
 *         self.udd_state = copy.deepcopy(value.udd_state)
 * 
 */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_act); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_3) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 268, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 268, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 268, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else
      #endif
      {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 268, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 268, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_act); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_PyObject_SetSlice(__pyx_t_4, __pyx_t_5, 0, 0, NULL, NULL, &__pyx_slice__103, 0, 0, 1) < 0) __PYX_ERR(5, 268, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "mujoco_py/mjsim.pyx":267
 *         self.data.qpos[:] = np.copy(value.qpos)
 *         self.data.qvel[:] = np.copy(value.qvel)
 *         if self.model.na != 0:             # <<<<<<<<<<<<<<
 *             self.data.act[:] = np.copy(value.act)
 *         self.udd_state = copy.deepcopy(value.udd_state)
 */
  }

  /* "mujoco_py/mjsim.pyx":269
 *         if self.model.na != 0:
 *             self.data.act[:] = np.copy(value.act)
 *         self.udd_state = copy.deepcopy(value.udd_state)             # <<<<<<<<<<<<<<
 * 
 *     def set_state_from_flattened(self, value):
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_deepcopy); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 269, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
      __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 269, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
      __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 269, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(PyDict_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(5, 269, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->udd_state);
  __Pyx_DECREF(__pyx_v_self->udd_state);
  __pyx_v_self->udd_state = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "mujoco_py/mjsim.pyx":252
 *         return MjSimState(self.data.time, qpos, qvel, act, udd_state)
 * 
 *     def set_state(self, value):             # <<<<<<<<<<<<<<
 *         """
 *         Sets the state from an MjSimState.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":271
 *         self.udd_state = copy.deepcopy(value.udd_state)
 * 
 *     def set_state_from_flattened(self, value):             # <<<<<<<<<<<<<<
 *         """ This helper method sets the state from an array without requiring a defensive copy."""
 *         state = MjSimState.from_flattened(value, self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_23set_state_from_flattened(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_5MjSim_22set_state_from_flattened[] = " This helper method sets the state from an array without requiring a defensive copy.";
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_23set_state_from_flattened(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_state_from_flattened (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_22set_state_from_flattened(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_22set_state_from_flattened(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_state = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("set_state_from_flattened", 0);

  /* "mujoco_py/mjsim.pyx":273
 *     def set_state_from_flattened(self, value):
 *         """ This helper method sets the state from an array without requiring a defensive copy."""
 *         state = MjSimState.from_flattened(value, self)             # <<<<<<<<<<<<<<
 * 
 *         self.data.time = state.time
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjSimState); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_from_flattened); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_value, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 273, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_value, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 273, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_v_value);
    __Pyx_GIVEREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_value);
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_self));
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_state = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":275
 *         state = MjSimState.from_flattened(value, self)
 * 
 *         self.data.time = state.time             # <<<<<<<<<<<<<<
 *         self.data.qpos[:] = state.qpos
 *         self.data.qvel[:] = state.qvel
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_state, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(5, 275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":276
 * 
 *         self.data.time = state.time
 *         self.data.qpos[:] = state.qpos             # <<<<<<<<<<<<<<
 *         self.data.qvel[:] = state.qvel
 *         if self.model.na != 0:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_state, __pyx_n_s_qpos); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_qpos); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_PyObject_SetSlice(__pyx_t_3, __pyx_t_1, 0, 0, NULL, NULL, &__pyx_slice__104, 0, 0, 1) < 0) __PYX_ERR(5, 276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":277
 *         self.data.time = state.time
 *         self.data.qpos[:] = state.qpos
 *         self.data.qvel[:] = state.qvel             # <<<<<<<<<<<<<<
 *         if self.model.na != 0:
 *             self.data.act[:] = state.act
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_state, __pyx_n_s_qvel); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_qvel); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_PyObject_SetSlice(__pyx_t_3, __pyx_t_1, 0, 0, NULL, NULL, &__pyx_slice__105, 0, 0, 1) < 0) __PYX_ERR(5, 277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":278
 *         self.data.qpos[:] = state.qpos
 *         self.data.qvel[:] = state.qvel
 *         if self.model.na != 0:             # <<<<<<<<<<<<<<
 *             self.data.act[:] = state.act
 *         self.udd_state = state.udd_state
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->model), __pyx_n_s_na); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(5, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_6) {

    /* "mujoco_py/mjsim.pyx":279
 *         self.data.qvel[:] = state.qvel
 *         if self.model.na != 0:
 *             self.data.act[:] = state.act             # <<<<<<<<<<<<<<
 *         self.udd_state = state.udd_state
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_state, __pyx_n_s_act); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_act); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_PyObject_SetSlice(__pyx_t_1, __pyx_t_3, 0, 0, NULL, NULL, &__pyx_slice__106, 0, 0, 1) < 0) __PYX_ERR(5, 279, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":278
 *         self.data.qpos[:] = state.qpos
 *         self.data.qvel[:] = state.qvel
 *         if self.model.na != 0:             # <<<<<<<<<<<<<<
 *             self.data.act[:] = state.act
 *         self.udd_state = state.udd_state
 */
  }

  /* "mujoco_py/mjsim.pyx":280
 *         if self.model.na != 0:
 *             self.data.act[:] = state.act
 *         self.udd_state = state.udd_state             # <<<<<<<<<<<<<<
 * 
 *     def save(self, file, format='xml', keep_inertials=False):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_state, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(5, 280, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->udd_state);
  __Pyx_DECREF(__pyx_v_self->udd_state);
  __pyx_v_self->udd_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":271
 *         self.udd_state = copy.deepcopy(value.udd_state)
 * 
 *     def set_state_from_flattened(self, value):             # <<<<<<<<<<<<<<
 *         """ This helper method sets the state from an array without requiring a defensive copy."""
 *         state = MjSimState.from_flattened(value, self)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.set_state_from_flattened", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":282
 *         self.udd_state = state.udd_state
 * 
 *     def save(self, file, format='xml', keep_inertials=False):             # <<<<<<<<<<<<<<
 *         """
 *         Saves the simulator model and state to a file as either
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_25save(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_5MjSim_24save[] = "\n        Saves the simulator model and state to a file as either\n        a MuJoCo XML or MJB file. The current state is saved as\n        a keyframe in the model file. This is useful for debugging\n        using MuJoCo's `simulate` utility.\n\n        Note that this doesn't save the UDD-state which is\n        part of MjSimState, since that's not supported natively\n        by MuJoCo. If you want to save the model together with\n        the UDD-state, you should use the `get_xml` or `get_mjb`\n        methods on `MjModel` together with `MjSim.get_state` and\n        save them with e.g. pickle.\n\n        Args:\n        - file (IO stream): stream to write model to.\n        - format: format to use (either 'xml' or 'mjb')\n        - keep_inertials (bool): if False, removes all <inertial>\n          properties derived automatically for geoms by MuJoco. Note\n          that this removes ones that were provided by the user\n          as well.\n        ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_25save(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_file = 0;
  PyObject *__pyx_v_format = 0;
  PyObject *__pyx_v_keep_inertials = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("save (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_format,&__pyx_n_s_keep_inertials,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_n_u_xml);
    values[2] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_file)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_keep_inertials);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "save") < 0)) __PYX_ERR(5, 282, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_file = values[0];
    __pyx_v_format = values[1];
    __pyx_v_keep_inertials = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("save", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 282, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.save", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_24save(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), __pyx_v_file, __pyx_v_format, __pyx_v_keep_inertials);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":315
 *         mujoco_node.appendChild(keyframe_el)
 * 
 *         def str_array(arr):             # <<<<<<<<<<<<<<
 *             return " ".join(map(str, arr))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_4save_1str_array(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_5MjSim_4save_1str_array = {"str_array", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_4save_1str_array, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_4save_1str_array(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("str_array (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_4save_str_array(__pyx_self, ((PyObject *)__pyx_v_arr));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_4save_str_array(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("str_array", 0);

  /* "mujoco_py/mjsim.pyx":316
 * 
 *         def str_array(arr):
 *             return " ".join(map(str, arr))             # <<<<<<<<<<<<<<
 * 
 *         key_el.setAttribute('time', str(self.data.time))
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
  __Pyx_GIVEREF(((PyObject *)(&PyUnicode_Type)));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)(&PyUnicode_Type)));
  __Pyx_INCREF(__pyx_v_arr);
  __Pyx_GIVEREF(__pyx_v_arr);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_arr);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyUnicode_Join(__pyx_kp_u__107, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjsim.pyx":315
 *         mujoco_node.appendChild(keyframe_el)
 * 
 *         def str_array(arr):             # <<<<<<<<<<<<<<
 *             return " ".join(map(str, arr))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.save.str_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":282
 *         self.udd_state = state.udd_state
 * 
 *     def save(self, file, format='xml', keep_inertials=False):             # <<<<<<<<<<<<<<
 *         """
 *         Saves the simulator model and state to a file as either
 */

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_24save(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_file, PyObject *__pyx_v_format, PyObject *__pyx_v_keep_inertials) {
  PyObject *__pyx_v_xml_str = NULL;
  PyObject *__pyx_v_dom = NULL;
  PyObject *__pyx_v_mujoco_node = NULL;
  PyObject *__pyx_v_keyframe_el = NULL;
  PyObject *__pyx_v_key_el = NULL;
  PyObject *__pyx_v_str_array = 0;
  PyObject *__pyx_v_element = NULL;
  PyObject *__pyx_v_result_xml = NULL;
  PyObject *__pyx_v_new_model = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  __Pyx_RefNannySetupContext("save", 0);

  /* "mujoco_py/mjsim.pyx":304
 *           as well.
 *         """
 *         xml_str = self.model.get_xml()             # <<<<<<<<<<<<<<
 *         dom = minidom.parseString(xml_str)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->model), __pyx_n_s_get_xml); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 304, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 304, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_xml_str = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":305
 *         """
 *         xml_str = self.model.get_xml()
 *         dom = minidom.parseString(xml_str)             # <<<<<<<<<<<<<<
 * 
 *         mujoco_node = dom.childNodes[0]
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_minidom); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_parseString); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_xml_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_xml_str};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 305, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_xml_str};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 305, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 305, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_v_xml_str);
      __Pyx_GIVEREF(__pyx_v_xml_str);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_xml_str);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 305, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_dom = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":307
 *         dom = minidom.parseString(xml_str)
 * 
 *         mujoco_node = dom.childNodes[0]             # <<<<<<<<<<<<<<
 *         assert mujoco_node.tagName == 'mujoco'
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dom, __pyx_n_s_childNodes); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_mujoco_node = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":308
 * 
 *         mujoco_node = dom.childNodes[0]
 *         assert mujoco_node.tagName == 'mujoco'             # <<<<<<<<<<<<<<
 * 
 *         keyframe_el = dom.createElement('keyframe')
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_mujoco_node, __pyx_n_s_tagName); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_mujoco, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(5, 308, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_5)) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(5, 308, __pyx_L1_error)
    }
  }
  #endif

  /* "mujoco_py/mjsim.pyx":310
 *         assert mujoco_node.tagName == 'mujoco'
 * 
 *         keyframe_el = dom.createElement('keyframe')             # <<<<<<<<<<<<<<
 *         key_el = dom.createElement('key')
 *         keyframe_el.appendChild(key_el)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dom, __pyx_n_s_createElement); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__108, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_keyframe_el = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":311
 * 
 *         keyframe_el = dom.createElement('keyframe')
 *         key_el = dom.createElement('key')             # <<<<<<<<<<<<<<
 *         keyframe_el.appendChild(key_el)
 *         mujoco_node.appendChild(keyframe_el)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dom, __pyx_n_s_createElement); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_key_el = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":312
 *         keyframe_el = dom.createElement('keyframe')
 *         key_el = dom.createElement('key')
 *         keyframe_el.appendChild(key_el)             # <<<<<<<<<<<<<<
 *         mujoco_node.appendChild(keyframe_el)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_keyframe_el, __pyx_n_s_appendChild); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_key_el); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_key_el};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 312, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_key_el};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 312, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 312, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_v_key_el);
      __Pyx_GIVEREF(__pyx_v_key_el);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_key_el);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 312, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":313
 *         key_el = dom.createElement('key')
 *         keyframe_el.appendChild(key_el)
 *         mujoco_node.appendChild(keyframe_el)             # <<<<<<<<<<<<<<
 * 
 *         def str_array(arr):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_mujoco_node, __pyx_n_s_appendChild); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_keyframe_el); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_keyframe_el};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 313, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_keyframe_el};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 313, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 313, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_v_keyframe_el);
      __Pyx_GIVEREF(__pyx_v_keyframe_el);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_keyframe_el);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 313, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":315
 *         mujoco_node.appendChild(keyframe_el)
 * 
 *         def str_array(arr):             # <<<<<<<<<<<<<<
 *             return " ".join(map(str, arr))
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_5MjSim_4save_1str_array, 0, __pyx_n_s_save_locals_str_array, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__111)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_str_array = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":318
 *             return " ".join(map(str, arr))
 * 
 *         key_el.setAttribute('time', str(self.data.time))             # <<<<<<<<<<<<<<
 *         key_el.setAttribute('qpos', str_array(self.data.qpos))
 *         key_el.setAttribute('qvel', str_array(self.data.qvel))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_el, __pyx_n_s_setAttribute); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_n_u_time, __pyx_t_4};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 318, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_n_u_time, __pyx_t_4};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 318, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_n_u_time);
    __Pyx_GIVEREF(__pyx_n_u_time);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_n_u_time);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":319
 * 
 *         key_el.setAttribute('time', str(self.data.time))
 *         key_el.setAttribute('qpos', str_array(self.data.qpos))             # <<<<<<<<<<<<<<
 *         key_el.setAttribute('qvel', str_array(self.data.qvel))
 *         if self.data.act is not None:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_el, __pyx_n_s_setAttribute); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_qpos); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __pyx_pf_9mujoco_py_4cymj_5MjSim_4save_str_array(__pyx_v_str_array, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_n_u_qpos, __pyx_t_4};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 319, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_n_u_qpos, __pyx_t_4};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 319, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_INCREF(__pyx_n_u_qpos);
    __Pyx_GIVEREF(__pyx_n_u_qpos);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_n_u_qpos);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":320
 *         key_el.setAttribute('time', str(self.data.time))
 *         key_el.setAttribute('qpos', str_array(self.data.qpos))
 *         key_el.setAttribute('qvel', str_array(self.data.qvel))             # <<<<<<<<<<<<<<
 *         if self.data.act is not None:
 *             key_el.setAttribute('act', str_array(self.data.act))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_el, __pyx_n_s_setAttribute); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_qvel); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __pyx_pf_9mujoco_py_4cymj_5MjSim_4save_str_array(__pyx_v_str_array, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_n_u_qvel, __pyx_t_4};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 320, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_n_u_qvel, __pyx_t_4};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 320, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 320, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_n_u_qvel);
    __Pyx_GIVEREF(__pyx_n_u_qvel);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_n_u_qvel);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 320, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":321
 *         key_el.setAttribute('qpos', str_array(self.data.qpos))
 *         key_el.setAttribute('qvel', str_array(self.data.qvel))
 *         if self.data.act is not None:             # <<<<<<<<<<<<<<
 *             key_el.setAttribute('act', str_array(self.data.act))
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_act); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = (__pyx_t_3 != Py_None);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_8 = (__pyx_t_5 != 0);
  if (__pyx_t_8) {

    /* "mujoco_py/mjsim.pyx":322
 *         key_el.setAttribute('qvel', str_array(self.data.qvel))
 *         if self.data.act is not None:
 *             key_el.setAttribute('act', str_array(self.data.act))             # <<<<<<<<<<<<<<
 * 
 *         if not keep_inertials:
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_el, __pyx_n_s_setAttribute); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->data), __pyx_n_s_act); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_4 = __pyx_pf_9mujoco_py_4cymj_5MjSim_4save_str_array(__pyx_v_str_array, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_n_u_act, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 322, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_n_u_act, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 322, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 322, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_INCREF(__pyx_n_u_act);
      __Pyx_GIVEREF(__pyx_n_u_act);
      PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_n_u_act);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 322, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":321
 *         key_el.setAttribute('qpos', str_array(self.data.qpos))
 *         key_el.setAttribute('qvel', str_array(self.data.qvel))
 *         if self.data.act is not None:             # <<<<<<<<<<<<<<
 *             key_el.setAttribute('act', str_array(self.data.act))
 * 
 */
  }

  /* "mujoco_py/mjsim.pyx":324
 *             key_el.setAttribute('act', str_array(self.data.act))
 * 
 *         if not keep_inertials:             # <<<<<<<<<<<<<<
 *             for element in dom.getElementsByTagName('inertial'):
 *                 element.parentNode.removeChild(element)
 */
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_keep_inertials); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(5, 324, __pyx_L1_error)
  __pyx_t_5 = ((!__pyx_t_8) != 0);
  if (__pyx_t_5) {

    /* "mujoco_py/mjsim.pyx":325
 * 
 *         if not keep_inertials:
 *             for element in dom.getElementsByTagName('inertial'):             # <<<<<<<<<<<<<<
 *                 element.parentNode.removeChild(element)
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dom, __pyx_n_s_getElementsByTagName); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__112, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
      __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 325, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 325, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(5, 325, __pyx_L1_error)
          #else
          __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 325, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(5, 325, __pyx_L1_error)
          #else
          __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 325, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
        }
      } else {
        __pyx_t_1 = __pyx_t_10(__pyx_t_3);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(5, 325, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_XDECREF_SET(__pyx_v_element, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "mujoco_py/mjsim.pyx":326
 *         if not keep_inertials:
 *             for element in dom.getElementsByTagName('inertial'):
 *                 element.parentNode.removeChild(element)             # <<<<<<<<<<<<<<
 * 
 *         result_xml = remove_empty_lines(dom.toprettyxml(indent=" " * 4))
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_element, __pyx_n_s_parentNode); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 326, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_removeChild); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 326, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_2) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_element); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 326, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_4)) {
          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_element};
          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 326, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_element};
          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 326, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        {
          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 326, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
          __Pyx_INCREF(__pyx_v_element);
          __Pyx_GIVEREF(__pyx_v_element);
          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_element);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 326, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "mujoco_py/mjsim.pyx":325
 * 
 *         if not keep_inertials:
 *             for element in dom.getElementsByTagName('inertial'):             # <<<<<<<<<<<<<<
 *                 element.parentNode.removeChild(element)
 * 
 */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":324
 *             key_el.setAttribute('act', str_array(self.data.act))
 * 
 *         if not keep_inertials:             # <<<<<<<<<<<<<<
 *             for element in dom.getElementsByTagName('inertial'):
 *                 element.parentNode.removeChild(element)
 */
  }

  /* "mujoco_py/mjsim.pyx":328
 *                 element.parentNode.removeChild(element)
 * 
 *         result_xml = remove_empty_lines(dom.toprettyxml(indent=" " * 4))             # <<<<<<<<<<<<<<
 * 
 *         if format == 'xml':
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_remove_empty_lines); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dom, __pyx_n_s_toprettyxml); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_2 = PyNumber_Multiply(__pyx_kp_u__107, __pyx_int_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_indent, __pyx_t_2) < 0) __PYX_ERR(5, 328, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 328, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_2};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 328, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_2};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 328, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 328, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 328, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_result_xml = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "mujoco_py/mjsim.pyx":330
 *         result_xml = remove_empty_lines(dom.toprettyxml(indent=" " * 4))
 * 
 *         if format == 'xml':             # <<<<<<<<<<<<<<
 *             file.write(result_xml)
 *         elif format == 'mjb':
 */
  __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_format, __pyx_n_u_xml, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(5, 330, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "mujoco_py/mjsim.pyx":331
 * 
 *         if format == 'xml':
 *             file.write(result_xml)             # <<<<<<<<<<<<<<
 *         elif format == 'mjb':
 *             new_model = load_model_from_xml(result_xml)
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_file, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_result_xml); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 331, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_result_xml};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 331, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_result_xml};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 331, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 331, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_result_xml);
        __Pyx_GIVEREF(__pyx_v_result_xml);
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_result_xml);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 331, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":330
 *         result_xml = remove_empty_lines(dom.toprettyxml(indent=" " * 4))
 * 
 *         if format == 'xml':             # <<<<<<<<<<<<<<
 *             file.write(result_xml)
 *         elif format == 'mjb':
 */
    goto __pyx_L7;
  }

  /* "mujoco_py/mjsim.pyx":332
 *         if format == 'xml':
 *             file.write(result_xml)
 *         elif format == 'mjb':             # <<<<<<<<<<<<<<
 *             new_model = load_model_from_xml(result_xml)
 *             file.write(new_model.get_mjb())
 */
  __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_format, __pyx_n_u_mjb, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(5, 332, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "mujoco_py/mjsim.pyx":333
 *             file.write(result_xml)
 *         elif format == 'mjb':
 *             new_model = load_model_from_xml(result_xml)             # <<<<<<<<<<<<<<
 *             file.write(new_model.get_mjb())
 *         else:
 */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_load_model_from_xml); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_result_xml); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_result_xml};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 333, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_result_xml};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 333, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 333, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_INCREF(__pyx_v_result_xml);
        __Pyx_GIVEREF(__pyx_v_result_xml);
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_result_xml);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 333, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_new_model = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":334
 *         elif format == 'mjb':
 *             new_model = load_model_from_xml(result_xml)
 *             file.write(new_model.get_mjb())             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("Unsupported format. Valid ones are 'xml' and 'mjb'")
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_file, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_new_model, __pyx_n_s_get_mjb); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 334, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 334, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 334, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 334, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 334, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 334, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 334, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "mujoco_py/mjsim.pyx":332
 *         if format == 'xml':
 *             file.write(result_xml)
 *         elif format == 'mjb':             # <<<<<<<<<<<<<<
 *             new_model = load_model_from_xml(result_xml)
 *             file.write(new_model.get_mjb())
 */
    goto __pyx_L7;
  }

  /* "mujoco_py/mjsim.pyx":336
 *             file.write(new_model.get_mjb())
 *         else:
 *             raise ValueError("Unsupported format. Valid ones are 'xml' and 'mjb'")             # <<<<<<<<<<<<<<
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__113, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(5, 336, __pyx_L1_error)
  }
  __pyx_L7:;

  /* "mujoco_py/mjsim.pyx":282
 *         self.udd_state = state.udd_state
 * 
 *     def save(self, file, format='xml', keep_inertials=False):             # <<<<<<<<<<<<<<
 *         """
 *         Saves the simulator model and state to a file as either
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.save", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_xml_str);
  __Pyx_XDECREF(__pyx_v_dom);
  __Pyx_XDECREF(__pyx_v_mujoco_node);
  __Pyx_XDECREF(__pyx_v_keyframe_el);
  __Pyx_XDECREF(__pyx_v_key_el);
  __Pyx_XDECREF(__pyx_v_str_array);
  __Pyx_XDECREF(__pyx_v_element);
  __Pyx_XDECREF(__pyx_v_result_xml);
  __Pyx_XDECREF(__pyx_v_new_model);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":44
 *     """
 *     # MjRenderContext for rendering camera views.
 *     cdef readonly list render_contexts             # <<<<<<<<<<<<<<
 *     cdef readonly object _render_context_window
 *     cdef readonly object _render_context_offscreen
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_15render_contexts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_15render_contexts_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_15render_contexts___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_15render_contexts___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->render_contexts);
  __pyx_r = __pyx_v_self->render_contexts;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":45
 *     # MjRenderContext for rendering camera views.
 *     cdef readonly list render_contexts
 *     cdef readonly object _render_context_window             # <<<<<<<<<<<<<<
 *     cdef readonly object _render_context_offscreen
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_22_render_context_window_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_22_render_context_window_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_22_render_context_window___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_22_render_context_window___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_render_context_window);
  __pyx_r = __pyx_v_self->_render_context_window;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":46
 *     cdef readonly list render_contexts
 *     cdef readonly object _render_context_window
 *     cdef readonly object _render_context_offscreen             # <<<<<<<<<<<<<<
 * 
 *     # MuJoCo model
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_25_render_context_offscreen_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_25_render_context_offscreen_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_25_render_context_offscreen___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_25_render_context_offscreen___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_render_context_offscreen);
  __pyx_r = __pyx_v_self->_render_context_offscreen;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":49
 * 
 *     # MuJoCo model
 *     cdef readonly PyMjModel model             # <<<<<<<<<<<<<<
 *     # MuJoCo data
 *     """
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_5model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_5model_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_5model___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_5model___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->model));
  __pyx_r = ((PyObject *)__pyx_v_self->model);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":54
 *     DATAZ
 *     """
 *     cdef readonly PyMjData data             # <<<<<<<<<<<<<<
 *     # Number of substeps when calling .step
 *     cdef public int nsubsteps
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_4data_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_4data_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_4data___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_4data___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->data));
  __pyx_r = ((PyObject *)__pyx_v_self->data);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":56
 *     cdef readonly PyMjData data
 *     # Number of substeps when calling .step
 *     cdef public int nsubsteps             # <<<<<<<<<<<<<<
 *     # User defined state.
 *     cdef public dict udd_state
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_9nsubsteps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_9nsubsteps_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_9nsubsteps___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_9nsubsteps___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsubsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.nsubsteps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_9nsubsteps_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_9nsubsteps_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_9nsubsteps_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_5MjSim_9nsubsteps_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 56, __pyx_L1_error)
  __pyx_v_self->nsubsteps = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.nsubsteps.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":58
 *     cdef public int nsubsteps
 *     # User defined state.
 *     cdef public dict udd_state             # <<<<<<<<<<<<<<
 *     # User defined dynamics callback
 *     cdef readonly object _udd_callback
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_9udd_state_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_9udd_state_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_9udd_state___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_9udd_state___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->udd_state);
  __pyx_r = __pyx_v_self->udd_state;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_9udd_state_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_9udd_state_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_9udd_state_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_5MjSim_9udd_state_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__set__", 0);
  if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(5, 58, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->udd_state);
  __Pyx_DECREF(__pyx_v_self->udd_state);
  __pyx_v_self->udd_state = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.udd_state.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_9udd_state_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_9udd_state_5__del__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_9udd_state_4__del__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_5MjSim_9udd_state_4__del__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->udd_state);
  __Pyx_DECREF(__pyx_v_self->udd_state);
  __pyx_v_self->udd_state = ((PyObject*)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":60
 *     cdef public dict udd_state
 *     # User defined dynamics callback
 *     cdef readonly object _udd_callback             # <<<<<<<<<<<<<<
 *     # Allows to store extra information in MjSim.
 *     cdef readonly dict extras
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_13_udd_callback_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_13_udd_callback_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_13_udd_callback___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_13_udd_callback___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_udd_callback);
  __pyx_r = __pyx_v_self->_udd_callback;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":62
 *     cdef readonly object _udd_callback
 *     # Allows to store extra information in MjSim.
 *     cdef readonly dict extras             # <<<<<<<<<<<<<<
 *     # Function pointer for substep callback, stored as uintptr
 *     cdef readonly uintptr_t substep_callback_ptr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_6extras_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_6extras_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_6extras___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_6extras___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->extras);
  __pyx_r = __pyx_v_self->extras;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":64
 *     cdef readonly dict extras
 *     # Function pointer for substep callback, stored as uintptr
 *     cdef readonly uintptr_t substep_callback_ptr             # <<<<<<<<<<<<<<
 *     # Callback executed before rendering.
 *     cdef public object render_callback
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_20substep_callback_ptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_20substep_callback_ptr_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_20substep_callback_ptr___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_20substep_callback_ptr___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->substep_callback_ptr); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.substep_callback_ptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsim.pyx":66
 *     cdef readonly uintptr_t substep_callback_ptr
 *     # Callback executed before rendering.
 *     cdef public object render_callback             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self, PyMjModel model, PyMjData data=None, int nsubsteps=1,
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_15render_callback_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_15render_callback_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_15render_callback___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_15render_callback___get__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->render_callback);
  __pyx_r = __pyx_v_self->render_callback;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_15render_callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_15render_callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_15render_callback_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_5MjSim_15render_callback_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->render_callback);
  __Pyx_DECREF(__pyx_v_self->render_callback);
  __pyx_v_self->render_callback = __pyx_v_value;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_15render_callback_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_5MjSim_15render_callback_5__del__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_15render_callback_4__del__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_5MjSim_15render_callback_4__del__(struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->render_callback);
  __Pyx_DECREF(__pyx_v_self->render_callback);
  __pyx_v_self->render_callback = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_27__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_27__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_26__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_26__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__114, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_29__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_5MjSim_29__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_5MjSim_28__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_5MjSim_28__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSim.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsimstate.pyx":10
 * 
 *     # need to implement this because numpy doesn't support == on arrays
 *     def __eq__(self, other):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, self.__class__):
 *             return NotImplemented
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_1__eq__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_10MjSimState_1__eq__ = {"__eq__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10MjSimState_1__eq__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_1__eq__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_other = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_other,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_other)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__eq__", 1, 2, 2, 1); __PYX_ERR(6, 10, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__eq__") < 0)) __PYX_ERR(6, 10, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_other = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__eq__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 10, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10MjSimState___eq__(__pyx_self, __pyx_v_self, __pyx_v_other);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState___eq__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  PyObject *__pyx_v_k = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  __Pyx_RefNannySetupContext("__eq__", 0);

  /* "mujoco_py/mjsimstate.pyx":11
 *     # need to implement this because numpy doesn't support == on arrays
 *     def __eq__(self, other):
 *         if not isinstance(other, self.__class__):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_other, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjsimstate.pyx":12
 *     def __eq__(self, other):
 *         if not isinstance(other, self.__class__):
 *             return NotImplemented             # <<<<<<<<<<<<<<
 * 
 *         if set(self.udd_state.keys()) != set(other.udd_state.keys()):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;

    /* "mujoco_py/mjsimstate.pyx":11
 *     # need to implement this because numpy doesn't support == on arrays
 *     def __eq__(self, other):
 *         if not isinstance(other, self.__class__):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 * 
 */
  }

  /* "mujoco_py/mjsimstate.pyx":14
 *             return NotImplemented
 * 
 *         if set(self.udd_state.keys()) != set(other.udd_state.keys()):             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_keys); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 14, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 14, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 14, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 14, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "mujoco_py/mjsimstate.pyx":15
 * 
 *         if set(self.udd_state.keys()) != set(other.udd_state.keys()):
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         for k in self.udd_state.keys():
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "mujoco_py/mjsimstate.pyx":14
 *             return NotImplemented
 * 
 *         if set(self.udd_state.keys()) != set(other.udd_state.keys()):             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  }

  /* "mujoco_py/mjsimstate.pyx":17
 *             return False
 * 
 *         for k in self.udd_state.keys():             # <<<<<<<<<<<<<<
 *             if isinstance(self.udd_state[k], Number) and self.udd_state[k] != other.udd_state[k]:
 *                 return False
 */
  __pyx_t_7 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (unlikely(__pyx_t_6 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
    __PYX_ERR(6, 17, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_t_6, 0, __pyx_n_s_keys, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_8, &__pyx_t_7, &__pyx_t_5, NULL, NULL, __pyx_t_9);
    if (unlikely(__pyx_t_10 == 0)) break;
    if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(6, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "mujoco_py/mjsimstate.pyx":18
 * 
 *         for k in self.udd_state.keys():
 *             if isinstance(self.udd_state[k], Number) and self.udd_state[k] != other.udd_state[k]:             # <<<<<<<<<<<<<<
 *                 return False
 *             elif not np.array_equal(self.udd_state[k], other.udd_state[k]):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetItem(__pyx_t_5, __pyx_v_k); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Number); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyObject_IsInstance(__pyx_t_6, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_11 = (__pyx_t_2 != 0);
    if (__pyx_t_11) {
    } else {
      __pyx_t_3 = __pyx_t_11;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetItem(__pyx_t_5, __pyx_v_k); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_5, __pyx_v_k); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(6, 18, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __pyx_t_11;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_3) {

      /* "mujoco_py/mjsimstate.pyx":19
 *         for k in self.udd_state.keys():
 *             if isinstance(self.udd_state[k], Number) and self.udd_state[k] != other.udd_state[k]:
 *                 return False             # <<<<<<<<<<<<<<
 *             elif not np.array_equal(self.udd_state[k], other.udd_state[k]):
 *                 return False
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;

      /* "mujoco_py/mjsimstate.pyx":18
 * 
 *         for k in self.udd_state.keys():
 *             if isinstance(self.udd_state[k], Number) and self.udd_state[k] != other.udd_state[k]:             # <<<<<<<<<<<<<<
 *                 return False
 *             elif not np.array_equal(self.udd_state[k], other.udd_state[k]):
 */
    }

    /* "mujoco_py/mjsimstate.pyx":20
 *             if isinstance(self.udd_state[k], Number) and self.udd_state[k] != other.udd_state[k]:
 *                 return False
 *             elif not np.array_equal(self.udd_state[k], other.udd_state[k]):             # <<<<<<<<<<<<<<
 *                 return False
 * 
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = PyObject_GetItem(__pyx_t_4, __pyx_v_k); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_13 = PyObject_GetItem(__pyx_t_4, __pyx_v_k); if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_10 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_12, __pyx_t_13};
      __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 20, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_12, __pyx_t_13};
      __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 20, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    } else
    #endif
    {
      __pyx_t_14 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 20, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_12);
      PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_10, __pyx_t_12);
      __Pyx_GIVEREF(__pyx_t_13);
      PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_10, __pyx_t_13);
      __pyx_t_12 = 0;
      __pyx_t_13 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 20, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 20, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_11 = ((!__pyx_t_3) != 0);
    if (__pyx_t_11) {

      /* "mujoco_py/mjsimstate.pyx":21
 *                 return False
 *             elif not np.array_equal(self.udd_state[k], other.udd_state[k]):
 *                 return False             # <<<<<<<<<<<<<<
 * 
 *         return (self.time == other.time and
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;

      /* "mujoco_py/mjsimstate.pyx":20
 *             if isinstance(self.udd_state[k], Number) and self.udd_state[k] != other.udd_state[k]:
 *                 return False
 *             elif not np.array_equal(self.udd_state[k], other.udd_state[k]):             # <<<<<<<<<<<<<<
 *                 return False
 * 
 */
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":23
 *                 return False
 * 
 *         return (self.time == other.time and             # <<<<<<<<<<<<<<
 *                 np.array_equal(self.qpos, other.qpos) and
 *                 np.array_equal(self.qvel, other.qvel) and
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_14 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(6, 23, __pyx_L1_error)
  if (__pyx_t_11) {
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_14);
    __pyx_t_1 = __pyx_t_14;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    goto __pyx_L10_bool_binop_done;
  }

  /* "mujoco_py/mjsimstate.pyx":24
 * 
 *         return (self.time == other.time and
 *                 np.array_equal(self.qpos, other.qpos) and             # <<<<<<<<<<<<<<
 *                 np.array_equal(self.qvel, other.qvel) and
 *                 np.array_equal(self.act, other.act))
 */
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_qpos); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_qpos); if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_12 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_12)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_12);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_9 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_13};
    __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 24, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_13};
    __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 24, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_12) {
      __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_12); __pyx_t_12 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_13);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, __pyx_t_13);
    __pyx_t_6 = 0;
    __pyx_t_13 = 0;
    __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(6, 24, __pyx_L1_error)
  if (__pyx_t_11) {
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_14);
    __pyx_t_1 = __pyx_t_14;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    goto __pyx_L10_bool_binop_done;
  }

  /* "mujoco_py/mjsimstate.pyx":25
 *         return (self.time == other.time and
 *                 np.array_equal(self.qpos, other.qpos) and
 *                 np.array_equal(self.qvel, other.qvel) and             # <<<<<<<<<<<<<<
 *                 np.array_equal(self.act, other.act))
 * 
 */
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_qvel); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_qvel); if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_6 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_9 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_5, __pyx_t_13};
    __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 25, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_5, __pyx_t_13};
    __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 25, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  } else
  #endif
  {
    __pyx_t_12 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_9, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_13);
    PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_9, __pyx_t_13);
    __pyx_t_5 = 0;
    __pyx_t_13 = 0;
    __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(6, 25, __pyx_L1_error)
  if (__pyx_t_11) {
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_14);
    __pyx_t_1 = __pyx_t_14;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    goto __pyx_L10_bool_binop_done;
  }

  /* "mujoco_py/mjsimstate.pyx":26
 *                 np.array_equal(self.qpos, other.qpos) and
 *                 np.array_equal(self.qvel, other.qvel) and
 *                 np.array_equal(self.act, other.act))             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(self, other):
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_act); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_act); if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_5 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_12, function);
      __pyx_t_9 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_12)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_13};
    __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 26, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_13};
    __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 26, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_13);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_13);
    __pyx_t_4 = 0;
    __pyx_t_13 = 0;
    __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_6, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_INCREF(__pyx_t_14);
  __pyx_t_1 = __pyx_t_14;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_L10_bool_binop_done:;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjsimstate.pyx":10
 * 
 *     # need to implement this because numpy doesn't support == on arrays
 *     def __eq__(self, other):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, self.__class__):
 *             return NotImplemented
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsimstate.pyx":28
 *                 np.array_equal(self.act, other.act))
 * 
 *     def __ne__(self, other):             # <<<<<<<<<<<<<<
 *         return not self.__eq__(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_3__ne__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_10MjSimState_3__ne__ = {"__ne__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10MjSimState_3__ne__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_3__ne__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_other = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_other,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_other)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__ne__", 1, 2, 2, 1); __PYX_ERR(6, 28, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__ne__") < 0)) __PYX_ERR(6, 28, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_other = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__ne__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 28, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10MjSimState_2__ne__(__pyx_self, __pyx_v_self, __pyx_v_other);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_2__ne__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("__ne__", 0);

  /* "mujoco_py/mjsimstate.pyx":29
 * 
 *     def __ne__(self, other):
 *         return not self.__eq__(other)             # <<<<<<<<<<<<<<
 * 
 *     def flatten(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eq); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_other};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 29, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_other};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 29, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 29, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_other);
      __Pyx_GIVEREF(__pyx_v_other);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_other);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 29, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(6, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong((!__pyx_t_5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjsimstate.pyx":28
 *                 np.array_equal(self.act, other.act))
 * 
 *     def __ne__(self, other):             # <<<<<<<<<<<<<<
 *         return not self.__eq__(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsimstate.pyx":31
 *         return not self.__eq__(other)
 * 
 *     def flatten(self):             # <<<<<<<<<<<<<<
 *         """ Flattens a state into a numpy array of numbers."""
 *         if self.act is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_5flatten(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_10MjSimState_4flatten[] = " Flattens a state into a numpy array of numbers.";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_10MjSimState_5flatten = {"flatten", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10MjSimState_5flatten, METH_O, __pyx_doc_9mujoco_py_4cymj_10MjSimState_4flatten};
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_5flatten(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("flatten (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10MjSimState_4flatten(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_4flatten(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_act = NULL;
  PyObject *__pyx_v_state_tuple = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("flatten", 0);

  /* "mujoco_py/mjsimstate.pyx":33
 *     def flatten(self):
 *         """ Flattens a state into a numpy array of numbers."""
 *         if self.act is None:             # <<<<<<<<<<<<<<
 *             act = np.empty(0)
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_act); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 == Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjsimstate.pyx":34
 *         """ Flattens a state into a numpy array of numbers."""
 *         if self.act is None:
 *             act = np.empty(0)             # <<<<<<<<<<<<<<
 *         else:
 *             act = self.act
 */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__116, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_act = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "mujoco_py/mjsimstate.pyx":33
 *     def flatten(self):
 *         """ Flattens a state into a numpy array of numbers."""
 *         if self.act is None:             # <<<<<<<<<<<<<<
 *             act = np.empty(0)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/mjsimstate.pyx":36
 *             act = np.empty(0)
 *         else:
 *             act = self.act             # <<<<<<<<<<<<<<
 *         state_tuple = ([self.time], self.qpos, self.qvel, act,
 *                        MjSimState._flatten_dict(self.udd_state))
 */
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_act); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_act = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "mujoco_py/mjsimstate.pyx":37
 *         else:
 *             act = self.act
 *         state_tuple = ([self.time], self.qpos, self.qvel, act,             # <<<<<<<<<<<<<<
 *                        MjSimState._flatten_dict(self.udd_state))
 *         return np.concatenate(state_tuple)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_qpos); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_qvel); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "mujoco_py/mjsimstate.pyx":38
 *             act = self.act
 *         state_tuple = ([self.time], self.qpos, self.qvel, act,
 *                        MjSimState._flatten_dict(self.udd_state))             # <<<<<<<<<<<<<<
 *         return np.concatenate(state_tuple)
 * 
 */
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjSimState); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_flatten_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_9) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 38, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_6);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_8)) {
      PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_7};
      __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 38, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
      PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_7};
      __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 38, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    {
      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 38, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 38, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/mjsimstate.pyx":37
 *         else:
 *             act = self.act
 *         state_tuple = ([self.time], self.qpos, self.qvel, act,             # <<<<<<<<<<<<<<
 *                        MjSimState._flatten_dict(self.udd_state))
 *         return np.concatenate(state_tuple)
 */
  __pyx_t_8 = PyTuple_New(5); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_5);
  __Pyx_INCREF(__pyx_v_act);
  __Pyx_GIVEREF(__pyx_v_act);
  PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_act);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_t_6);
  __pyx_t_4 = 0;
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_v_state_tuple = ((PyObject*)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "mujoco_py/mjsimstate.pyx":39
 *         state_tuple = ([self.time], self.qpos, self.qvel, act,
 *                        MjSimState._flatten_dict(self.udd_state))
 *         return np.concatenate(state_tuple)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_state_tuple); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 39, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_state_tuple};
      __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 39, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_state_tuple};
      __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 39, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else
    #endif
    {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 39, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_state_tuple);
      __Pyx_GIVEREF(__pyx_v_state_tuple);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_state_tuple);
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 39, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_8;
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjsimstate.pyx":31
 *         return not self.__eq__(other)
 * 
 *     def flatten(self):             # <<<<<<<<<<<<<<
 *         """ Flattens a state into a numpy array of numbers."""
 *         if self.act is None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState.flatten", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_act);
  __Pyx_XDECREF(__pyx_v_state_tuple);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsimstate.pyx":42
 * 
 *     @staticmethod
 *     def _flatten_dict(d):             # <<<<<<<<<<<<<<
 *         a = []
 *         for k in sorted(d.keys()):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_7_flatten_dict(PyObject *__pyx_self, PyObject *__pyx_v_d); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_10MjSimState_7_flatten_dict = {"_flatten_dict", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10MjSimState_7_flatten_dict, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_7_flatten_dict(PyObject *__pyx_self, PyObject *__pyx_v_d) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_flatten_dict (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10MjSimState_6_flatten_dict(__pyx_self, ((PyObject *)__pyx_v_d));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_6_flatten_dict(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_d) {
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_v_k = NULL;
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  __Pyx_RefNannySetupContext("_flatten_dict", 0);

  /* "mujoco_py/mjsimstate.pyx":43
 *     @staticmethod
 *     def _flatten_dict(d):
 *         a = []             # <<<<<<<<<<<<<<
 *         for k in sorted(d.keys()):
 *             v = d[k]
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_a = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":44
 *     def _flatten_dict(d):
 *         a = []
 *         for k in sorted(d.keys()):             # <<<<<<<<<<<<<<
 *             v = d[k]
 *             if isinstance(v, Number):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_d, __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 44, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 44, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_5 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 44, __pyx_L1_error)
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(6, 44, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(6, 44, __pyx_L1_error)
    #else
    __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "mujoco_py/mjsimstate.pyx":45
 *         a = []
 *         for k in sorted(d.keys()):
 *             v = d[k]             # <<<<<<<<<<<<<<
 *             if isinstance(v, Number):
 *                 a.extend([v])
 */
    __pyx_t_1 = PyObject_GetItem(__pyx_v_d, __pyx_v_k); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "mujoco_py/mjsimstate.pyx":46
 *         for k in sorted(d.keys()):
 *             v = d[k]
 *             if isinstance(v, Number):             # <<<<<<<<<<<<<<
 *                 a.extend([v])
 *             else:
 */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Number); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyObject_IsInstance(__pyx_v_v, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(6, 46, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = (__pyx_t_7 != 0);
    if (__pyx_t_8) {

      /* "mujoco_py/mjsimstate.pyx":47
 *             v = d[k]
 *             if isinstance(v, Number):
 *                 a.extend([v])             # <<<<<<<<<<<<<<
 *             else:
 *                 a.extend(v.ravel())
 */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 47, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_v);
      __Pyx_GIVEREF(__pyx_v_v);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_v);
      __pyx_t_5 = __Pyx_PyList_Extend(__pyx_v_a, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 47, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "mujoco_py/mjsimstate.pyx":46
 *         for k in sorted(d.keys()):
 *             v = d[k]
 *             if isinstance(v, Number):             # <<<<<<<<<<<<<<
 *                 a.extend([v])
 *             else:
 */
      goto __pyx_L5;
    }

    /* "mujoco_py/mjsimstate.pyx":49
 *                 a.extend([v])
 *             else:
 *                 a.extend(v.ravel())             # <<<<<<<<<<<<<<
 * 
 *         return np.array(a)
 */
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_ravel); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 49, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 49, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 49, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = __Pyx_PyList_Extend(__pyx_v_a, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 49, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __pyx_L5:;

    /* "mujoco_py/mjsimstate.pyx":44
 *     def _flatten_dict(d):
 *         a = []
 *         for k in sorted(d.keys()):             # <<<<<<<<<<<<<<
 *             v = d[k]
 *             if isinstance(v, Number):
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/mjsimstate.pyx":51
 *                 a.extend(v.ravel())
 * 
 *         return np.array(a)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_a); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_a};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 51, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_a};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 51, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 51, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_v_a);
      __Pyx_GIVEREF(__pyx_v_a);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_a);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 51, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjsimstate.pyx":42
 * 
 *     @staticmethod
 *     def _flatten_dict(d):             # <<<<<<<<<<<<<<
 *         a = []
 *         for k in sorted(d.keys()):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState._flatten_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsimstate.pyx":54
 * 
 *     @staticmethod
 *     def from_flattened(array, sim):             # <<<<<<<<<<<<<<
 *         idx_time = 0
 *         idx_qpos = idx_time + 1
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_9from_flattened(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_10MjSimState_9from_flattened = {"from_flattened", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10MjSimState_9from_flattened, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_9from_flattened(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_array = 0;
  PyObject *__pyx_v_sim = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("from_flattened (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_array,&__pyx_n_s_sim,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_array)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sim)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("from_flattened", 1, 2, 2, 1); __PYX_ERR(6, 54, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_flattened") < 0)) __PYX_ERR(6, 54, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_array = values[0];
    __pyx_v_sim = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("from_flattened", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 54, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState.from_flattened", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10MjSimState_8from_flattened(__pyx_self, __pyx_v_array, __pyx_v_sim);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_8from_flattened(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_array, PyObject *__pyx_v_sim) {
  PyObject *__pyx_v_idx_time = NULL;
  PyObject *__pyx_v_idx_qpos = NULL;
  PyObject *__pyx_v_idx_qvel = NULL;
  PyObject *__pyx_v_idx_act = NULL;
  PyObject *__pyx_v_idx_udd = NULL;
  PyObject *__pyx_v_time = NULL;
  PyObject *__pyx_v_qpos = NULL;
  PyObject *__pyx_v_qvel = NULL;
  PyObject *__pyx_v_act = NULL;
  PyObject *__pyx_v_flat_udd_state = NULL;
  PyObject *__pyx_v_udd_state = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("from_flattened", 0);

  /* "mujoco_py/mjsimstate.pyx":55
 *     @staticmethod
 *     def from_flattened(array, sim):
 *         idx_time = 0             # <<<<<<<<<<<<<<
 *         idx_qpos = idx_time + 1
 *         idx_qvel = idx_qpos + sim.model.nq
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_v_idx_time = __pyx_int_0;

  /* "mujoco_py/mjsimstate.pyx":56
 *     def from_flattened(array, sim):
 *         idx_time = 0
 *         idx_qpos = idx_time + 1             # <<<<<<<<<<<<<<
 *         idx_qvel = idx_qpos + sim.model.nq
 *         idx_act = idx_qvel + sim.model.nv
 */
  __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_idx_time, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_idx_qpos = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":57
 *         idx_time = 0
 *         idx_qpos = idx_time + 1
 *         idx_qvel = idx_qpos + sim.model.nq             # <<<<<<<<<<<<<<
 *         idx_act = idx_qvel + sim.model.nv
 *         idx_udd = idx_act + sim.model.na
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_nq); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_v_idx_qpos, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_idx_qvel = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":58
 *         idx_qpos = idx_time + 1
 *         idx_qvel = idx_qpos + sim.model.nq
 *         idx_act = idx_qvel + sim.model.nv             # <<<<<<<<<<<<<<
 *         idx_udd = idx_act + sim.model.na
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_v_idx_qvel, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_idx_act = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":59
 *         idx_qvel = idx_qpos + sim.model.nq
 *         idx_act = idx_qvel + sim.model.nv
 *         idx_udd = idx_act + sim.model.na             # <<<<<<<<<<<<<<
 * 
 *         time = array[idx_time]
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_na); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_v_idx_act, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_idx_udd = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":61
 *         idx_udd = idx_act + sim.model.na
 * 
 *         time = array[idx_time]             # <<<<<<<<<<<<<<
 *         qpos = array[idx_qpos:idx_qpos + sim.model.nq]
 *         qvel = array[idx_qvel:idx_qvel + sim.model.nv]
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_array, __pyx_v_idx_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_time = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":62
 * 
 *         time = array[idx_time]
 *         qpos = array[idx_qpos:idx_qpos + sim.model.nq]             # <<<<<<<<<<<<<<
 *         qvel = array[idx_qvel:idx_qvel + sim.model.nv]
 *         if sim.model.na == 0:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_nq); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_v_idx_qpos, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_array, 0, 0, &__pyx_v_idx_qpos, &__pyx_t_1, NULL, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_qpos = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/mjsimstate.pyx":63
 *         time = array[idx_time]
 *         qpos = array[idx_qpos:idx_qpos + sim.model.nq]
 *         qvel = array[idx_qvel:idx_qvel + sim.model.nv]             # <<<<<<<<<<<<<<
 *         if sim.model.na == 0:
 *             act = None
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_nv); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Add(__pyx_v_idx_qvel, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_array, 0, 0, &__pyx_v_idx_qvel, &__pyx_t_2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_qvel = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":64
 *         qpos = array[idx_qpos:idx_qpos + sim.model.nq]
 *         qvel = array[idx_qvel:idx_qvel + sim.model.nv]
 *         if sim.model.na == 0:             # <<<<<<<<<<<<<<
 *             act = None
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_na); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_2, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "mujoco_py/mjsimstate.pyx":65
 *         qvel = array[idx_qvel:idx_qvel + sim.model.nv]
 *         if sim.model.na == 0:
 *             act = None             # <<<<<<<<<<<<<<
 *         else:
 *             act = array[idx_act:idx_act + sim.model.na]
 */
    __Pyx_INCREF(Py_None);
    __pyx_v_act = Py_None;

    /* "mujoco_py/mjsimstate.pyx":64
 *         qpos = array[idx_qpos:idx_qpos + sim.model.nq]
 *         qvel = array[idx_qvel:idx_qvel + sim.model.nv]
 *         if sim.model.na == 0:             # <<<<<<<<<<<<<<
 *             act = None
 *         else:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/mjsimstate.pyx":67
 *             act = None
 *         else:
 *             act = array[idx_act:idx_act + sim.model.na]             # <<<<<<<<<<<<<<
 *         flat_udd_state = array[idx_udd:]
 *         udd_state = MjSimState._unflatten_dict(flat_udd_state, sim.udd_state)
 */
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_na); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Add(__pyx_v_idx_act, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_array, 0, 0, &__pyx_v_idx_act, &__pyx_t_1, NULL, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_act = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "mujoco_py/mjsimstate.pyx":68
 *         else:
 *             act = array[idx_act:idx_act + sim.model.na]
 *         flat_udd_state = array[idx_udd:]             # <<<<<<<<<<<<<<
 *         udd_state = MjSimState._unflatten_dict(flat_udd_state, sim.udd_state)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_array, 0, 0, &__pyx_v_idx_udd, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_flat_udd_state = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/mjsimstate.pyx":69
 *             act = array[idx_act:idx_act + sim.model.na]
 *         flat_udd_state = array[idx_udd:]
 *         udd_state = MjSimState._unflatten_dict(flat_udd_state, sim.udd_state)             # <<<<<<<<<<<<<<
 * 
 *         return MjSimState(time, qpos, qvel, act, udd_state)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjSimState); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unflatten_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_udd_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_flat_udd_state, __pyx_t_1};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 69, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_flat_udd_state, __pyx_t_1};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 69, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_flat_udd_state);
    __Pyx_GIVEREF(__pyx_v_flat_udd_state);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_flat_udd_state);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_udd_state = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/mjsimstate.pyx":71
 *         udd_state = MjSimState._unflatten_dict(flat_udd_state, sim.udd_state)
 * 
 *         return MjSimState(time, qpos, qvel, act, udd_state)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjSimState); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_v_time, __pyx_v_qpos, __pyx_v_qvel, __pyx_v_act, __pyx_v_udd_state};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 71, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_v_time, __pyx_v_qpos, __pyx_v_qvel, __pyx_v_act, __pyx_v_udd_state};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 71, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_1 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_INCREF(__pyx_v_time);
    __Pyx_GIVEREF(__pyx_v_time);
    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_6, __pyx_v_time);
    __Pyx_INCREF(__pyx_v_qpos);
    __Pyx_GIVEREF(__pyx_v_qpos);
    PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_v_qpos);
    __Pyx_INCREF(__pyx_v_qvel);
    __Pyx_GIVEREF(__pyx_v_qvel);
    PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_6, __pyx_v_qvel);
    __Pyx_INCREF(__pyx_v_act);
    __Pyx_GIVEREF(__pyx_v_act);
    PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_6, __pyx_v_act);
    __Pyx_INCREF(__pyx_v_udd_state);
    __Pyx_GIVEREF(__pyx_v_udd_state);
    PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_6, __pyx_v_udd_state);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjsimstate.pyx":54
 * 
 *     @staticmethod
 *     def from_flattened(array, sim):             # <<<<<<<<<<<<<<
 *         idx_time = 0
 *         idx_qpos = idx_time + 1
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState.from_flattened", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_idx_time);
  __Pyx_XDECREF(__pyx_v_idx_qpos);
  __Pyx_XDECREF(__pyx_v_idx_qvel);
  __Pyx_XDECREF(__pyx_v_idx_act);
  __Pyx_XDECREF(__pyx_v_idx_udd);
  __Pyx_XDECREF(__pyx_v_time);
  __Pyx_XDECREF(__pyx_v_qpos);
  __Pyx_XDECREF(__pyx_v_qvel);
  __Pyx_XDECREF(__pyx_v_act);
  __Pyx_XDECREF(__pyx_v_flat_udd_state);
  __Pyx_XDECREF(__pyx_v_udd_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjsimstate.pyx":74
 * 
 *     @staticmethod
 *     def _unflatten_dict(a, schema_example):             # <<<<<<<<<<<<<<
 *         d = {}
 *         idx = 0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_11_unflatten_dict(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_10MjSimState_11_unflatten_dict = {"_unflatten_dict", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10MjSimState_11_unflatten_dict, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_10MjSimState_11_unflatten_dict(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_a = 0;
  PyObject *__pyx_v_schema_example = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_unflatten_dict (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_schema_example,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_schema_example)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_unflatten_dict", 1, 2, 2, 1); __PYX_ERR(6, 74, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_unflatten_dict") < 0)) __PYX_ERR(6, 74, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_a = values[0];
    __pyx_v_schema_example = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_unflatten_dict", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 74, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState._unflatten_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_10MjSimState_10_unflatten_dict(__pyx_self, __pyx_v_a, __pyx_v_schema_example);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_10MjSimState_10_unflatten_dict(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_schema_example) {
  PyObject *__pyx_v_d = NULL;
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_v_k = NULL;
  PyObject *__pyx_v_schema_val = NULL;
  PyObject *__pyx_v_val = NULL;
  PyObject *__pyx_v_val_array = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("_unflatten_dict", 0);

  /* "mujoco_py/mjsimstate.pyx":75
 *     @staticmethod
 *     def _unflatten_dict(a, schema_example):
 *         d = {}             # <<<<<<<<<<<<<<
 *         idx = 0
 *         for k in sorted(schema_example.keys()):
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_d = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":76
 *     def _unflatten_dict(a, schema_example):
 *         d = {}
 *         idx = 0             # <<<<<<<<<<<<<<
 *         for k in sorted(schema_example.keys()):
 *             schema_val = schema_example[k]
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_v_idx = __pyx_int_0;

  /* "mujoco_py/mjsimstate.pyx":77
 *         d = {}
 *         idx = 0
 *         for k in sorted(schema_example.keys()):             # <<<<<<<<<<<<<<
 *             schema_val = schema_example[k]
 *             if isinstance(schema_val, Number):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema_example, __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 77, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 77, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_5 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 77, __pyx_L1_error)
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(6, 77, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(6, 77, __pyx_L1_error)
    #else
    __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "mujoco_py/mjsimstate.pyx":78
 *         idx = 0
 *         for k in sorted(schema_example.keys()):
 *             schema_val = schema_example[k]             # <<<<<<<<<<<<<<
 *             if isinstance(schema_val, Number):
 *                 val = a[idx]
 */
    __pyx_t_1 = PyObject_GetItem(__pyx_v_schema_example, __pyx_v_k); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 78, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_schema_val, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "mujoco_py/mjsimstate.pyx":79
 *         for k in sorted(schema_example.keys()):
 *             schema_val = schema_example[k]
 *             if isinstance(schema_val, Number):             # <<<<<<<<<<<<<<
 *                 val = a[idx]
 *                 idx += 1
 */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Number); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyObject_IsInstance(__pyx_v_schema_val, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(6, 79, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = (__pyx_t_7 != 0);
    if (__pyx_t_8) {

      /* "mujoco_py/mjsimstate.pyx":80
 *             schema_val = schema_example[k]
 *             if isinstance(schema_val, Number):
 *                 val = a[idx]             # <<<<<<<<<<<<<<
 *                 idx += 1
 *                 d[k] = val
 */
      __pyx_t_1 = PyObject_GetItem(__pyx_v_a, __pyx_v_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 80, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "mujoco_py/mjsimstate.pyx":81
 *             if isinstance(schema_val, Number):
 *                 val = a[idx]
 *                 idx += 1             # <<<<<<<<<<<<<<
 *                 d[k] = val
 *             else:
 */
      __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_idx, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 81, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_idx, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "mujoco_py/mjsimstate.pyx":82
 *                 val = a[idx]
 *                 idx += 1
 *                 d[k] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 assert isinstance(schema_val, np.ndarray)
 */
      if (unlikely(PyDict_SetItem(__pyx_v_d, __pyx_v_k, __pyx_v_val) < 0)) __PYX_ERR(6, 82, __pyx_L1_error)

      /* "mujoco_py/mjsimstate.pyx":79
 *         for k in sorted(schema_example.keys()):
 *             schema_val = schema_example[k]
 *             if isinstance(schema_val, Number):             # <<<<<<<<<<<<<<
 *                 val = a[idx]
 *                 idx += 1
 */
      goto __pyx_L5;
    }

    /* "mujoco_py/mjsimstate.pyx":84
 *                 d[k] = val
 *             else:
 *                 assert isinstance(schema_val, np.ndarray)             # <<<<<<<<<<<<<<
 *                 val_array = a[idx:idx+schema_val.size]
 *                 idx += schema_val.size
 */
    /*else*/ {
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!Py_OptimizeFlag)) {
        __pyx_t_8 = __Pyx_TypeCheck(__pyx_v_schema_val, __pyx_ptype_5numpy_ndarray); 
        if (unlikely(!(__pyx_t_8 != 0))) {
          PyErr_SetNone(PyExc_AssertionError);
          __PYX_ERR(6, 84, __pyx_L1_error)
        }
      }
      #endif

      /* "mujoco_py/mjsimstate.pyx":85
 *             else:
 *                 assert isinstance(schema_val, np.ndarray)
 *                 val_array = a[idx:idx+schema_val.size]             # <<<<<<<<<<<<<<
 *                 idx += schema_val.size
 *                 val = np.array(val_array).reshape(schema_val.shape)
 */
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema_val, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 85, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyNumber_Add(__pyx_v_idx, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 85, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_a, 0, 0, &__pyx_v_idx, &__pyx_t_2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 85, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_val_array, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "mujoco_py/mjsimstate.pyx":86
 *                 assert isinstance(schema_val, np.ndarray)
 *                 val_array = a[idx:idx+schema_val.size]
 *                 idx += schema_val.size             # <<<<<<<<<<<<<<
 *                 val = np.array(val_array).reshape(schema_val.shape)
 *                 d[k] = val
 */
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema_val, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_idx, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF_SET(__pyx_v_idx, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "mujoco_py/mjsimstate.pyx":87
 *                 val_array = a[idx:idx+schema_val.size]
 *                 idx += schema_val.size
 *                 val = np.array(val_array).reshape(schema_val.shape)             # <<<<<<<<<<<<<<
 *                 d[k] = val
 *         return d
 */
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_val_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 87, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_9)) {
          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_val_array};
          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 87, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_val_array};
          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 87, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        {
          __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 87, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL;
          __Pyx_INCREF(__pyx_v_val_array);
          __Pyx_GIVEREF(__pyx_v_val_array);
          PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_val_array);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 87, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema_val, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_10 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      if (!__pyx_t_10) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 87, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_9)) {
          PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_1};
          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 87, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
          PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_1};
          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 87, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else
        #endif
        {
          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 87, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 87, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "mujoco_py/mjsimstate.pyx":88
 *                 idx += schema_val.size
 *                 val = np.array(val_array).reshape(schema_val.shape)
 *                 d[k] = val             # <<<<<<<<<<<<<<
 *         return d
 */
      if (unlikely(PyDict_SetItem(__pyx_v_d, __pyx_v_k, __pyx_v_val) < 0)) __PYX_ERR(6, 88, __pyx_L1_error)
    }
    __pyx_L5:;

    /* "mujoco_py/mjsimstate.pyx":77
 *         d = {}
 *         idx = 0
 *         for k in sorted(schema_example.keys()):             # <<<<<<<<<<<<<<
 *             schema_val = schema_example[k]
 *             if isinstance(schema_val, Number):
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/mjsimstate.pyx":89
 *                 val = np.array(val_array).reshape(schema_val.shape)
 *                 d[k] = val
 *         return d             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_d);
  __pyx_r = __pyx_v_d;
  goto __pyx_L0;

  /* "mujoco_py/mjsimstate.pyx":74
 * 
 *     @staticmethod
 *     def _unflatten_dict(a, schema_example):             # <<<<<<<<<<<<<<
 *         d = {}
 *         idx = 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mujoco_py.cymj.MjSimState._unflatten_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_d);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XDECREF(__pyx_v_schema_val);
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XDECREF(__pyx_v_val_array);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":34
 *     cdef public object sim
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         maxgeom = 1000
 *         mjv_makeScene(&self._scn, maxgeom)
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext___cinit__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_15MjRenderContext___cinit__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  long __pyx_v_maxgeom;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/mjrendercontext.pyx":35
 * 
 *     def __cinit__(self):
 *         maxgeom = 1000             # <<<<<<<<<<<<<<
 *         mjv_makeScene(&self._scn, maxgeom)
 *         mjv_defaultCamera(&self._cam)
 */
  __pyx_v_maxgeom = 0x3E8;

  /* "mujoco_py/mjrendercontext.pyx":36
 *     def __cinit__(self):
 *         maxgeom = 1000
 *         mjv_makeScene(&self._scn, maxgeom)             # <<<<<<<<<<<<<<
 *         mjv_defaultCamera(&self._cam)
 *         mjv_defaultOption(&self._vopt)
 */
  mjv_makeScene((&__pyx_v_self->_scn), __pyx_v_maxgeom);

  /* "mujoco_py/mjrendercontext.pyx":37
 *         maxgeom = 1000
 *         mjv_makeScene(&self._scn, maxgeom)
 *         mjv_defaultCamera(&self._cam)             # <<<<<<<<<<<<<<
 *         mjv_defaultOption(&self._vopt)
 *         mjr_defaultContext(&self._con)
 */
  mjv_defaultCamera((&__pyx_v_self->_cam));

  /* "mujoco_py/mjrendercontext.pyx":38
 *         mjv_makeScene(&self._scn, maxgeom)
 *         mjv_defaultCamera(&self._cam)
 *         mjv_defaultOption(&self._vopt)             # <<<<<<<<<<<<<<
 *         mjr_defaultContext(&self._con)
 * 
 */
  mjv_defaultOption((&__pyx_v_self->_vopt));

  /* "mujoco_py/mjrendercontext.pyx":39
 *         mjv_defaultCamera(&self._cam)
 *         mjv_defaultOption(&self._vopt)
 *         mjr_defaultContext(&self._con)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, MjSim sim, bint offscreen=True, int device_id=-1, opengl_backend=None):
 */
  mjr_defaultContext((&__pyx_v_self->_con));

  /* "mujoco_py/mjrendercontext.pyx":34
 *     cdef public object sim
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         maxgeom = 1000
 *         mjv_makeScene(&self._scn, maxgeom)
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":41
 *         mjr_defaultContext(&self._con)
 * 
 *     def __init__(self, MjSim sim, bint offscreen=True, int device_id=-1, opengl_backend=None):             # <<<<<<<<<<<<<<
 *         self.sim = sim
 *         self._setup_opengl_context(offscreen, device_id, opengl_backend)
 */

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_sim = 0;
  int __pyx_v_offscreen;
  int __pyx_v_device_id;
  PyObject *__pyx_v_opengl_backend = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sim,&__pyx_n_s_offscreen,&__pyx_n_s_device_id,&__pyx_n_s_opengl_backend,0};
    PyObject* values[4] = {0,0,0,0};
    values[3] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sim)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offscreen);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_device_id);
          if (value) { values[2] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_opengl_backend);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 41, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sim = ((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)values[0]);
    if (values[1]) {
      __pyx_v_offscreen = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_offscreen == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 41, __pyx_L3_error)
    } else {
      __pyx_v_offscreen = ((int)1);
    }
    if (values[2]) {
      __pyx_v_device_id = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_device_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 41, __pyx_L3_error)
    } else {
      __pyx_v_device_id = ((int)-1);
    }
    __pyx_v_opengl_backend = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 41, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sim), __pyx_ptype_9mujoco_py_4cymj_MjSim, 1, "sim", 0))) __PYX_ERR(1, 41, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_2__init__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), __pyx_v_sim, __pyx_v_offscreen, __pyx_v_device_id, __pyx_v_opengl_backend);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_2__init__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_sim, int __pyx_v_offscreen, int __pyx_v_device_id, PyObject *__pyx_v_opengl_backend) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  mjModel *__pyx_t_8;
  mjData *__pyx_t_9;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "mujoco_py/mjrendercontext.pyx":42
 * 
 *     def __init__(self, MjSim sim, bint offscreen=True, int device_id=-1, opengl_backend=None):
 *         self.sim = sim             # <<<<<<<<<<<<<<
 *         self._setup_opengl_context(offscreen, device_id, opengl_backend)
 *         self.offscreen = offscreen
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_sim));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_sim));
  __Pyx_GOTREF(__pyx_v_self->sim);
  __Pyx_DECREF(__pyx_v_self->sim);
  __pyx_v_self->sim = ((PyObject *)__pyx_v_sim);

  /* "mujoco_py/mjrendercontext.pyx":43
 *     def __init__(self, MjSim sim, bint offscreen=True, int device_id=-1, opengl_backend=None):
 *         self.sim = sim
 *         self._setup_opengl_context(offscreen, device_id, opengl_backend)             # <<<<<<<<<<<<<<
 *         self.offscreen = offscreen
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setup_opengl_context); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_offscreen); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_device_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_v_opengl_backend};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 43, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_v_opengl_backend};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 43, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
    __Pyx_INCREF(__pyx_v_opengl_backend);
    __Pyx_GIVEREF(__pyx_v_opengl_backend);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_opengl_backend);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":44
 *         self.sim = sim
 *         self._setup_opengl_context(offscreen, device_id, opengl_backend)
 *         self.offscreen = offscreen             # <<<<<<<<<<<<<<
 * 
 *         # Ensure the model data has been updated so that there
 */
  __pyx_v_self->offscreen = __pyx_v_offscreen;

  /* "mujoco_py/mjrendercontext.pyx":48
 *         # Ensure the model data has been updated so that there
 *         # is something to render
 *         sim.forward()             # <<<<<<<<<<<<<<
 * 
 *         sim.add_render_context(self)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_sim), __pyx_n_s_forward); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 48, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 48, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":50
 *         sim.forward()
 * 
 *         sim.add_render_context(self)             # <<<<<<<<<<<<<<
 * 
 *         self._model_ptr = sim.model.ptr
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_sim), __pyx_n_s_add_render_context); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, ((PyObject *)__pyx_v_self)};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 50, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, ((PyObject *)__pyx_v_self)};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 50, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 50, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 50, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":52
 *         sim.add_render_context(self)
 * 
 *         self._model_ptr = sim.model.ptr             # <<<<<<<<<<<<<<
 *         self._data_ptr = sim.data.ptr
 *         self.scn = WrapMjvScene(&self._scn)
 */
  __pyx_t_8 = __pyx_v_sim->model->ptr;
  __pyx_v_self->_model_ptr = __pyx_t_8;

  /* "mujoco_py/mjrendercontext.pyx":53
 * 
 *         self._model_ptr = sim.model.ptr
 *         self._data_ptr = sim.data.ptr             # <<<<<<<<<<<<<<
 *         self.scn = WrapMjvScene(&self._scn)
 *         self.cam = WrapMjvCamera(&self._cam)
 */
  __pyx_t_9 = __pyx_v_sim->data->ptr;
  __pyx_v_self->_data_ptr = __pyx_t_9;

  /* "mujoco_py/mjrendercontext.pyx":54
 *         self._model_ptr = sim.model.ptr
 *         self._data_ptr = sim.data.ptr
 *         self.scn = WrapMjvScene(&self._scn)             # <<<<<<<<<<<<<<
 *         self.cam = WrapMjvCamera(&self._cam)
 *         self.vopt = WrapMjvOption(&self._vopt)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjvScene((&__pyx_v_self->_scn))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->scn);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->scn));
  __pyx_v_self->scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":55
 *         self._data_ptr = sim.data.ptr
 *         self.scn = WrapMjvScene(&self._scn)
 *         self.cam = WrapMjvCamera(&self._cam)             # <<<<<<<<<<<<<<
 *         self.vopt = WrapMjvOption(&self._vopt)
 *         self.con = WrapMjrContext(&self._con)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjvCamera((&__pyx_v_self->_cam))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->cam);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->cam));
  __pyx_v_self->cam = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":56
 *         self.scn = WrapMjvScene(&self._scn)
 *         self.cam = WrapMjvCamera(&self._cam)
 *         self.vopt = WrapMjvOption(&self._vopt)             # <<<<<<<<<<<<<<
 *         self.con = WrapMjrContext(&self._con)
 *         self._pert.active = 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjvOption((&__pyx_v_self->_vopt))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->vopt);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->vopt));
  __pyx_v_self->vopt = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":57
 *         self.cam = WrapMjvCamera(&self._cam)
 *         self.vopt = WrapMjvOption(&self._vopt)
 *         self.con = WrapMjrContext(&self._con)             # <<<<<<<<<<<<<<
 *         self._pert.active = 0
 *         self._pert.select = 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjrContext((&__pyx_v_self->_con))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->con);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->con));
  __pyx_v_self->con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":58
 *         self.vopt = WrapMjvOption(&self._vopt)
 *         self.con = WrapMjrContext(&self._con)
 *         self._pert.active = 0             # <<<<<<<<<<<<<<
 *         self._pert.select = 0
 *         self.pert = WrapMjvPerturb(&self._pert)
 */
  __pyx_v_self->_pert.active = 0;

  /* "mujoco_py/mjrendercontext.pyx":59
 *         self.con = WrapMjrContext(&self._con)
 *         self._pert.active = 0
 *         self._pert.select = 0             # <<<<<<<<<<<<<<
 *         self.pert = WrapMjvPerturb(&self._pert)
 * 
 */
  __pyx_v_self->_pert.select = 0;

  /* "mujoco_py/mjrendercontext.pyx":60
 *         self._pert.active = 0
 *         self._pert.select = 0
 *         self.pert = WrapMjvPerturb(&self._pert)             # <<<<<<<<<<<<<<
 * 
 *         self._markers = []
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjvPerturb((&__pyx_v_self->_pert))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->pert);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->pert));
  __pyx_v_self->pert = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":62
 *         self.pert = WrapMjvPerturb(&self._pert)
 * 
 *         self._markers = []             # <<<<<<<<<<<<<<
 *         self._overlay = {}
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_markers);
  __Pyx_DECREF(__pyx_v_self->_markers);
  __pyx_v_self->_markers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":63
 * 
 *         self._markers = []
 *         self._overlay = {}             # <<<<<<<<<<<<<<
 * 
 *         self._init_camera(sim)
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_overlay);
  __Pyx_DECREF(__pyx_v_self->_overlay);
  __pyx_v_self->_overlay = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":65
 *         self._overlay = {}
 * 
 *         self._init_camera(sim)             # <<<<<<<<<<<<<<
 *         self._set_mujoco_buffers()
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_camera); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_sim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_sim)};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 65, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_sim)};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 65, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 65, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_sim));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_sim));
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_sim));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 65, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":66
 * 
 *         self._init_camera(sim)
 *         self._set_mujoco_buffers()             # <<<<<<<<<<<<<<
 * 
 *     def update_sim(self, MjSim new_sim):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_mujoco_buffers); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 66, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 66, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":41
 *         mjr_defaultContext(&self._con)
 * 
 *     def __init__(self, MjSim sim, bint offscreen=True, int device_id=-1, opengl_backend=None):             # <<<<<<<<<<<<<<
 *         self.sim = sim
 *         self._setup_opengl_context(offscreen, device_id, opengl_backend)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":68
 *         self._set_mujoco_buffers()
 * 
 *     def update_sim(self, MjSim new_sim):             # <<<<<<<<<<<<<<
 *         if new_sim == self.sim:
 *             return
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_5update_sim(PyObject *__pyx_v_self, PyObject *__pyx_v_new_sim); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_5update_sim(PyObject *__pyx_v_self, PyObject *__pyx_v_new_sim) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("update_sim (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new_sim), __pyx_ptype_9mujoco_py_4cymj_MjSim, 1, "new_sim", 0))) __PYX_ERR(1, 68, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_4update_sim(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), ((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)__pyx_v_new_sim));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_4update_sim(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_new_sim) {
  PyObject *__pyx_v_render_context = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  mjModel *__pyx_t_3;
  mjData *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("update_sim", 0);

  /* "mujoco_py/mjrendercontext.pyx":69
 * 
 *     def update_sim(self, MjSim new_sim):
 *         if new_sim == self.sim:             # <<<<<<<<<<<<<<
 *             return
 *         self._model_ptr = new_sim.model.ptr
 */
  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_new_sim), __pyx_v_self->sim, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 69, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "mujoco_py/mjrendercontext.pyx":70
 *     def update_sim(self, MjSim new_sim):
 *         if new_sim == self.sim:
 *             return             # <<<<<<<<<<<<<<
 *         self._model_ptr = new_sim.model.ptr
 *         self._data_ptr = new_sim.data.ptr
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "mujoco_py/mjrendercontext.pyx":69
 * 
 *     def update_sim(self, MjSim new_sim):
 *         if new_sim == self.sim:             # <<<<<<<<<<<<<<
 *             return
 *         self._model_ptr = new_sim.model.ptr
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":71
 *         if new_sim == self.sim:
 *             return
 *         self._model_ptr = new_sim.model.ptr             # <<<<<<<<<<<<<<
 *         self._data_ptr = new_sim.data.ptr
 *         self._set_mujoco_buffers()
 */
  __pyx_t_3 = __pyx_v_new_sim->model->ptr;
  __pyx_v_self->_model_ptr = __pyx_t_3;

  /* "mujoco_py/mjrendercontext.pyx":72
 *             return
 *         self._model_ptr = new_sim.model.ptr
 *         self._data_ptr = new_sim.data.ptr             # <<<<<<<<<<<<<<
 *         self._set_mujoco_buffers()
 *         for render_context in self.sim.render_contexts:
 */
  __pyx_t_4 = __pyx_v_new_sim->data->ptr;
  __pyx_v_self->_data_ptr = __pyx_t_4;

  /* "mujoco_py/mjrendercontext.pyx":73
 *         self._model_ptr = new_sim.model.ptr
 *         self._data_ptr = new_sim.data.ptr
 *         self._set_mujoco_buffers()             # <<<<<<<<<<<<<<
 *         for render_context in self.sim.render_contexts:
 *             new_sim.add_render_context(render_context)
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_mujoco_buffers); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 73, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 73, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":74
 *         self._data_ptr = new_sim.data.ptr
 *         self._set_mujoco_buffers()
 *         for render_context in self.sim.render_contexts:             # <<<<<<<<<<<<<<
 *             new_sim.add_render_context(render_context)
 *         self.sim = new_sim
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->sim, __pyx_n_s_render_contexts); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 74, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 74, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 74, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 74, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 74, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_8(__pyx_t_5);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(1, 74, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_render_context, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "mujoco_py/mjrendercontext.pyx":75
 *         self._set_mujoco_buffers()
 *         for render_context in self.sim.render_contexts:
 *             new_sim.add_render_context(render_context)             # <<<<<<<<<<<<<<
 *         self.sim = new_sim
 * 
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_new_sim), __pyx_n_s_add_render_context); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_9) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_render_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 75, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_render_context};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 75, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_render_context};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 75, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      {
        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 75, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
        __Pyx_INCREF(__pyx_v_render_context);
        __Pyx_GIVEREF(__pyx_v_render_context);
        PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_render_context);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 75, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/mjrendercontext.pyx":74
 *         self._data_ptr = new_sim.data.ptr
 *         self._set_mujoco_buffers()
 *         for render_context in self.sim.render_contexts:             # <<<<<<<<<<<<<<
 *             new_sim.add_render_context(render_context)
 *         self.sim = new_sim
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "mujoco_py/mjrendercontext.pyx":76
 *         for render_context in self.sim.render_contexts:
 *             new_sim.add_render_context(render_context)
 *         self.sim = new_sim             # <<<<<<<<<<<<<<
 * 
 *     def _set_mujoco_buffers(self):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_new_sim));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_new_sim));
  __Pyx_GOTREF(__pyx_v_self->sim);
  __Pyx_DECREF(__pyx_v_self->sim);
  __pyx_v_self->sim = ((PyObject *)__pyx_v_new_sim);

  /* "mujoco_py/mjrendercontext.pyx":68
 *         self._set_mujoco_buffers()
 * 
 *     def update_sim(self, MjSim new_sim):             # <<<<<<<<<<<<<<
 *         if new_sim == self.sim:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.update_sim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_render_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":78
 *         self.sim = new_sim
 * 
 *     def _set_mujoco_buffers(self):             # <<<<<<<<<<<<<<
 *         mjr_makeContext(self._model_ptr, &self._con, mjFONTSCALE_150)
 *         if self.offscreen:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_7_set_mujoco_buffers(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_7_set_mujoco_buffers(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_mujoco_buffers (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_6_set_mujoco_buffers(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_6_set_mujoco_buffers(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_set_mujoco_buffers", 0);

  /* "mujoco_py/mjrendercontext.pyx":79
 * 
 *     def _set_mujoco_buffers(self):
 *         mjr_makeContext(self._model_ptr, &self._con, mjFONTSCALE_150)             # <<<<<<<<<<<<<<
 *         if self.offscreen:
 *             mjr_setBuffer(mjFB_OFFSCREEN, &self._con);
 */
  mjr_makeContext(__pyx_v_self->_model_ptr, (&__pyx_v_self->_con), mjFONTSCALE_150);

  /* "mujoco_py/mjrendercontext.pyx":80
 *     def _set_mujoco_buffers(self):
 *         mjr_makeContext(self._model_ptr, &self._con, mjFONTSCALE_150)
 *         if self.offscreen:             # <<<<<<<<<<<<<<
 *             mjr_setBuffer(mjFB_OFFSCREEN, &self._con);
 *             if self._con.currentBuffer != mjFB_OFFSCREEN:
 */
  __pyx_t_1 = (__pyx_v_self->offscreen != 0);
  if (__pyx_t_1) {

    /* "mujoco_py/mjrendercontext.pyx":81
 *         mjr_makeContext(self._model_ptr, &self._con, mjFONTSCALE_150)
 *         if self.offscreen:
 *             mjr_setBuffer(mjFB_OFFSCREEN, &self._con);             # <<<<<<<<<<<<<<
 *             if self._con.currentBuffer != mjFB_OFFSCREEN:
 *                 raise RuntimeError('Offscreen rendering not supported')
 */
    mjr_setBuffer(mjFB_OFFSCREEN, (&__pyx_v_self->_con));

    /* "mujoco_py/mjrendercontext.pyx":82
 *         if self.offscreen:
 *             mjr_setBuffer(mjFB_OFFSCREEN, &self._con);
 *             if self._con.currentBuffer != mjFB_OFFSCREEN:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError('Offscreen rendering not supported')
 *         else:
 */
    __pyx_t_1 = ((__pyx_v_self->_con.currentBuffer != mjFB_OFFSCREEN) != 0);
    if (__pyx_t_1) {

      /* "mujoco_py/mjrendercontext.pyx":83
 *             mjr_setBuffer(mjFB_OFFSCREEN, &self._con);
 *             if self._con.currentBuffer != mjFB_OFFSCREEN:
 *                 raise RuntimeError('Offscreen rendering not supported')             # <<<<<<<<<<<<<<
 *         else:
 *             mjr_setBuffer(mjFB_WINDOW, &self._con);
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__117, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 83, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(1, 83, __pyx_L1_error)

      /* "mujoco_py/mjrendercontext.pyx":82
 *         if self.offscreen:
 *             mjr_setBuffer(mjFB_OFFSCREEN, &self._con);
 *             if self._con.currentBuffer != mjFB_OFFSCREEN:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError('Offscreen rendering not supported')
 *         else:
 */
    }

    /* "mujoco_py/mjrendercontext.pyx":80
 *     def _set_mujoco_buffers(self):
 *         mjr_makeContext(self._model_ptr, &self._con, mjFONTSCALE_150)
 *         if self.offscreen:             # <<<<<<<<<<<<<<
 *             mjr_setBuffer(mjFB_OFFSCREEN, &self._con);
 *             if self._con.currentBuffer != mjFB_OFFSCREEN:
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/mjrendercontext.pyx":85
 *                 raise RuntimeError('Offscreen rendering not supported')
 *         else:
 *             mjr_setBuffer(mjFB_WINDOW, &self._con);             # <<<<<<<<<<<<<<
 *             if self._con.currentBuffer != mjFB_WINDOW:
 *                 raise RuntimeError('Window rendering not supported')
 */
  /*else*/ {
    mjr_setBuffer(mjFB_WINDOW, (&__pyx_v_self->_con));

    /* "mujoco_py/mjrendercontext.pyx":86
 *         else:
 *             mjr_setBuffer(mjFB_WINDOW, &self._con);
 *             if self._con.currentBuffer != mjFB_WINDOW:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError('Window rendering not supported')
 *         self.con = WrapMjrContext(&self._con)
 */
    __pyx_t_1 = ((__pyx_v_self->_con.currentBuffer != mjFB_WINDOW) != 0);
    if (__pyx_t_1) {

      /* "mujoco_py/mjrendercontext.pyx":87
 *             mjr_setBuffer(mjFB_WINDOW, &self._con);
 *             if self._con.currentBuffer != mjFB_WINDOW:
 *                 raise RuntimeError('Window rendering not supported')             # <<<<<<<<<<<<<<
 *         self.con = WrapMjrContext(&self._con)
 * 
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__118, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(1, 87, __pyx_L1_error)

      /* "mujoco_py/mjrendercontext.pyx":86
 *         else:
 *             mjr_setBuffer(mjFB_WINDOW, &self._con);
 *             if self._con.currentBuffer != mjFB_WINDOW:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError('Window rendering not supported')
 *         self.con = WrapMjrContext(&self._con)
 */
    }
  }
  __pyx_L3:;

  /* "mujoco_py/mjrendercontext.pyx":88
 *             if self._con.currentBuffer != mjFB_WINDOW:
 *                 raise RuntimeError('Window rendering not supported')
 *         self.con = WrapMjrContext(&self._con)             # <<<<<<<<<<<<<<
 * 
 *     def _setup_opengl_context(self, offscreen, device_id, opengl_backend):
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjrContext((&__pyx_v_self->_con))); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->con);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->con));
  __pyx_v_self->con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":78
 *         self.sim = new_sim
 * 
 *     def _set_mujoco_buffers(self):             # <<<<<<<<<<<<<<
 *         mjr_makeContext(self._model_ptr, &self._con, mjFONTSCALE_150)
 *         if self.offscreen:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext._set_mujoco_buffers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":90
 *         self.con = WrapMjrContext(&self._con)
 * 
 *     def _setup_opengl_context(self, offscreen, device_id, opengl_backend):             # <<<<<<<<<<<<<<
 *         if opengl_backend is None and (not offscreen or sys.platform == 'darwin'):
 *             # default to glfw for onscreen viewing or mac (both offscreen/onscreen)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_9_setup_opengl_context(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_9_setup_opengl_context(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_offscreen = 0;
  PyObject *__pyx_v_device_id = 0;
  PyObject *__pyx_v_opengl_backend = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_setup_opengl_context (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offscreen,&__pyx_n_s_device_id,&__pyx_n_s_opengl_backend,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offscreen)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_device_id)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_setup_opengl_context", 1, 3, 3, 1); __PYX_ERR(1, 90, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_opengl_backend)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_setup_opengl_context", 1, 3, 3, 2); __PYX_ERR(1, 90, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_setup_opengl_context") < 0)) __PYX_ERR(1, 90, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_offscreen = values[0];
    __pyx_v_device_id = values[1];
    __pyx_v_opengl_backend = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_setup_opengl_context", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 90, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext._setup_opengl_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_setup_opengl_context(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), __pyx_v_offscreen, __pyx_v_device_id, __pyx_v_opengl_backend);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_setup_opengl_context(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_offscreen, PyObject *__pyx_v_device_id, PyObject *__pyx_v_opengl_backend) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_setup_opengl_context", 0);
  __Pyx_INCREF(__pyx_v_device_id);
  __Pyx_INCREF(__pyx_v_opengl_backend);

  /* "mujoco_py/mjrendercontext.pyx":91
 * 
 *     def _setup_opengl_context(self, offscreen, device_id, opengl_backend):
 *         if opengl_backend is None and (not offscreen or sys.platform == 'darwin'):             # <<<<<<<<<<<<<<
 *             # default to glfw for onscreen viewing or mac (both offscreen/onscreen)
 *             opengl_backend = 'glfw'
 */
  __pyx_t_2 = (__pyx_v_opengl_backend == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_offscreen); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 91, __pyx_L1_error)
  __pyx_t_2 = ((!__pyx_t_3) != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_platform); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_n_u_darwin, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 91, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "mujoco_py/mjrendercontext.pyx":93
 *         if opengl_backend is None and (not offscreen or sys.platform == 'darwin'):
 *             # default to glfw for onscreen viewing or mac (both offscreen/onscreen)
 *             opengl_backend = 'glfw'             # <<<<<<<<<<<<<<
 * 
 *         if opengl_backend == 'glfw':
 */
    __Pyx_INCREF(__pyx_n_u_glfw);
    __Pyx_DECREF_SET(__pyx_v_opengl_backend, __pyx_n_u_glfw);

    /* "mujoco_py/mjrendercontext.pyx":91
 * 
 *     def _setup_opengl_context(self, offscreen, device_id, opengl_backend):
 *         if opengl_backend is None and (not offscreen or sys.platform == 'darwin'):             # <<<<<<<<<<<<<<
 *             # default to glfw for onscreen viewing or mac (both offscreen/onscreen)
 *             opengl_backend = 'glfw'
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":95
 *             opengl_backend = 'glfw'
 * 
 *         if opengl_backend == 'glfw':             # <<<<<<<<<<<<<<
 *             self.opengl_context = GlfwContext(offscreen=offscreen)
 *         else:
 */
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_opengl_backend, __pyx_n_u_glfw, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 95, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "mujoco_py/mjrendercontext.pyx":96
 * 
 *         if opengl_backend == 'glfw':
 *             self.opengl_context = GlfwContext(offscreen=offscreen)             # <<<<<<<<<<<<<<
 *         else:
 *             if device_id < 0:
 */
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GlfwContext); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_offscreen, __pyx_v_offscreen) < 0) __PYX_ERR(1, 96, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_v_self->opengl_context);
    __Pyx_DECREF(__pyx_v_self->opengl_context);
    __pyx_v_self->opengl_context = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "mujoco_py/mjrendercontext.pyx":95
 *             opengl_backend = 'glfw'
 * 
 *         if opengl_backend == 'glfw':             # <<<<<<<<<<<<<<
 *             self.opengl_context = GlfwContext(offscreen=offscreen)
 *         else:
 */
    goto __pyx_L7;
  }

  /* "mujoco_py/mjrendercontext.pyx":98
 *             self.opengl_context = GlfwContext(offscreen=offscreen)
 *         else:
 *             if device_id < 0:             # <<<<<<<<<<<<<<
 *                 if "GPUS" in os.environ:
 *                     device_id = os.environ["GPUS"]
 */
  /*else*/ {
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_device_id, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 98, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 98, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_1) {

      /* "mujoco_py/mjrendercontext.pyx":99
 *         else:
 *             if device_id < 0:
 *                 if "GPUS" in os.environ:             # <<<<<<<<<<<<<<
 *                     device_id = os.environ["GPUS"]
 *                 else:
 */
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 99, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_environ); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 99, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_GPUS, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 99, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {

        /* "mujoco_py/mjrendercontext.pyx":100
 *             if device_id < 0:
 *                 if "GPUS" in os.environ:
 *                     device_id = os.environ["GPUS"]             # <<<<<<<<<<<<<<
 *                 else:
 *                     device_id = os.getenv('CUDA_VISIBLE_DEVICES', '')
 */
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 100, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_environ); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 100, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyObject_GetItem(__pyx_t_6, __pyx_n_u_GPUS); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 100, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF_SET(__pyx_v_device_id, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "mujoco_py/mjrendercontext.pyx":99
 *         else:
 *             if device_id < 0:
 *                 if "GPUS" in os.environ:             # <<<<<<<<<<<<<<
 *                     device_id = os.environ["GPUS"]
 *                 else:
 */
        goto __pyx_L9;
      }

      /* "mujoco_py/mjrendercontext.pyx":102
 *                     device_id = os.environ["GPUS"]
 *                 else:
 *                     device_id = os.getenv('CUDA_VISIBLE_DEVICES', '')             # <<<<<<<<<<<<<<
 *                 if len(device_id) > 0:
 *                     device_id = int(device_id.split(',')[0])
 */
      /*else*/ {
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 102, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_getenv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 102, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__119, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 102, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF_SET(__pyx_v_device_id, __pyx_t_4);
        __pyx_t_4 = 0;
      }
      __pyx_L9:;

      /* "mujoco_py/mjrendercontext.pyx":103
 *                 else:
 *                     device_id = os.getenv('CUDA_VISIBLE_DEVICES', '')
 *                 if len(device_id) > 0:             # <<<<<<<<<<<<<<
 *                     device_id = int(device_id.split(',')[0])
 *                 else:
 */
      __pyx_t_7 = PyObject_Length(__pyx_v_device_id); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(1, 103, __pyx_L1_error)
      __pyx_t_2 = ((__pyx_t_7 > 0) != 0);
      if (__pyx_t_2) {

        /* "mujoco_py/mjrendercontext.pyx":104
 *                     device_id = os.getenv('CUDA_VISIBLE_DEVICES', '')
 *                 if len(device_id) > 0:
 *                     device_id = int(device_id.split(',')[0])             # <<<<<<<<<<<<<<
 *                 else:
 *                     # Sometimes env variable is an empty string.
 */
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_device_id, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 104, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__121, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 104, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 104, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 104, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_device_id, __pyx_t_6);
        __pyx_t_6 = 0;

        /* "mujoco_py/mjrendercontext.pyx":103
 *                 else:
 *                     device_id = os.getenv('CUDA_VISIBLE_DEVICES', '')
 *                 if len(device_id) > 0:             # <<<<<<<<<<<<<<
 *                     device_id = int(device_id.split(',')[0])
 *                 else:
 */
        goto __pyx_L10;
      }

      /* "mujoco_py/mjrendercontext.pyx":107
 *                 else:
 *                     # Sometimes env variable is an empty string.
 *                     device_id = 0             # <<<<<<<<<<<<<<
 *             self.opengl_context = OffscreenOpenGLContext(device_id)
 * 
 */
      /*else*/ {
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_DECREF_SET(__pyx_v_device_id, __pyx_int_0);
      }
      __pyx_L10:;

      /* "mujoco_py/mjrendercontext.pyx":98
 *             self.opengl_context = GlfwContext(offscreen=offscreen)
 *         else:
 *             if device_id < 0:             # <<<<<<<<<<<<<<
 *                 if "GPUS" in os.environ:
 *                     device_id = os.environ["GPUS"]
 */
    }

    /* "mujoco_py/mjrendercontext.pyx":108
 *                     # Sometimes env variable is an empty string.
 *                     device_id = 0
 *             self.opengl_context = OffscreenOpenGLContext(device_id)             # <<<<<<<<<<<<<<
 * 
 *     def _init_camera(self, sim):
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_OffscreenOpenGLContext); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_device_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 108, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_device_id};
        __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 108, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_6);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_device_id};
        __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 108, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_6);
      } else
      #endif
      {
        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 108, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_device_id);
        __Pyx_GIVEREF(__pyx_v_device_id);
        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_device_id);
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 108, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_v_self->opengl_context);
    __Pyx_DECREF(__pyx_v_self->opengl_context);
    __pyx_v_self->opengl_context = __pyx_t_6;
    __pyx_t_6 = 0;
  }
  __pyx_L7:;

  /* "mujoco_py/mjrendercontext.pyx":90
 *         self.con = WrapMjrContext(&self._con)
 * 
 *     def _setup_opengl_context(self, offscreen, device_id, opengl_backend):             # <<<<<<<<<<<<<<
 *         if opengl_backend is None and (not offscreen or sys.platform == 'darwin'):
 *             # default to glfw for onscreen viewing or mac (both offscreen/onscreen)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext._setup_opengl_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_device_id);
  __Pyx_XDECREF(__pyx_v_opengl_backend);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":110
 *             self.opengl_context = OffscreenOpenGLContext(device_id)
 * 
 *     def _init_camera(self, sim):             # <<<<<<<<<<<<<<
 *         # Make the free camera look at the scene
 *         self.cam.type = const.CAMERA_FREE
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_11_init_camera(PyObject *__pyx_v_self, PyObject *__pyx_v_sim); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_11_init_camera(PyObject *__pyx_v_self, PyObject *__pyx_v_sim) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_camera (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_10_init_camera(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_sim));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_10_init_camera(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_sim) {
  long __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  long __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_init_camera", 0);

  /* "mujoco_py/mjrendercontext.pyx":112
 *     def _init_camera(self, sim):
 *         # Make the free camera look at the scene
 *         self.cam.type = const.CAMERA_FREE             # <<<<<<<<<<<<<<
 *         self.cam.fixedcamid = -1
 *         for i in range(3):
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_const); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_CAMERA_FREE); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->cam), __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(1, 112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":113
 *         # Make the free camera look at the scene
 *         self.cam.type = const.CAMERA_FREE
 *         self.cam.fixedcamid = -1             # <<<<<<<<<<<<<<
 *         for i in range(3):
 *             self.cam.lookat[i] = np.median(sim.data.geom_xpos[:, i])
 */
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->cam), __pyx_n_s_fixedcamid, __pyx_int_neg_1) < 0) __PYX_ERR(1, 113, __pyx_L1_error)

  /* "mujoco_py/mjrendercontext.pyx":114
 *         self.cam.type = const.CAMERA_FREE
 *         self.cam.fixedcamid = -1
 *         for i in range(3):             # <<<<<<<<<<<<<<
 *             self.cam.lookat[i] = np.median(sim.data.geom_xpos[:, i])
 *         self.cam.distance = sim.model.stat.extent
 */
  for (__pyx_t_3 = 0; __pyx_t_3 < 3; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "mujoco_py/mjrendercontext.pyx":115
 *         self.cam.fixedcamid = -1
 *         for i in range(3):
 *             self.cam.lookat[i] = np.median(sim.data.geom_xpos[:, i])             # <<<<<<<<<<<<<<
 *         self.cam.distance = sim.model.stat.extent
 * 
 */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_median); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_geom_xpos); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_slice__122);
    __Pyx_GIVEREF(__pyx_slice__122);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__122);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_GetItem(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 115, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_1};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 115, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_1};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 115, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else
      #endif
      {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 115, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 115, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->cam), __pyx_n_s_lookat); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_SetItemInt(__pyx_t_4, __pyx_v_i, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) __PYX_ERR(1, 115, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "mujoco_py/mjrendercontext.pyx":116
 *         for i in range(3):
 *             self.cam.lookat[i] = np.median(sim.data.geom_xpos[:, i])
 *         self.cam.distance = sim.model.stat.extent             # <<<<<<<<<<<<<<
 * 
 *     def update_offscreen_size(self, width, height):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_stat); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_extent); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->cam), __pyx_n_s_distance, __pyx_t_2) < 0) __PYX_ERR(1, 116, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":110
 *             self.opengl_context = OffscreenOpenGLContext(device_id)
 * 
 *     def _init_camera(self, sim):             # <<<<<<<<<<<<<<
 *         # Make the free camera look at the scene
 *         self.cam.type = const.CAMERA_FREE
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext._init_camera", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":118
 *         self.cam.distance = sim.model.stat.extent
 * 
 *     def update_offscreen_size(self, width, height):             # <<<<<<<<<<<<<<
 *         if width != self._con.offWidth or height != self._con.offHeight:
 *             self._model_ptr.vis.global_.offwidth = width
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_13update_offscreen_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_13update_offscreen_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_width = 0;
  PyObject *__pyx_v_height = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("update_offscreen_size (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_width,&__pyx_n_s_height,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("update_offscreen_size", 1, 2, 2, 1); __PYX_ERR(1, 118, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "update_offscreen_size") < 0)) __PYX_ERR(1, 118, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_width = values[0];
    __pyx_v_height = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("update_offscreen_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 118, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.update_offscreen_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_12update_offscreen_size(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), __pyx_v_width, __pyx_v_height);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_12update_offscreen_size(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("update_offscreen_size", 0);

  /* "mujoco_py/mjrendercontext.pyx":119
 * 
 *     def update_offscreen_size(self, width, height):
 *         if width != self._con.offWidth or height != self._con.offHeight:             # <<<<<<<<<<<<<<
 *             self._model_ptr.vis.global_.offwidth = width
 *             self._model_ptr.vis.global_.offheight = height
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->_con.offWidth); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_width, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (!__pyx_t_4) {
  } else {
    __pyx_t_1 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->_con.offHeight); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_height, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "mujoco_py/mjrendercontext.pyx":120
 *     def update_offscreen_size(self, width, height):
 *         if width != self._con.offWidth or height != self._con.offHeight:
 *             self._model_ptr.vis.global_.offwidth = width             # <<<<<<<<<<<<<<
 *             self._model_ptr.vis.global_.offheight = height
 *             mjr_freeContext(&self._con)
 */
    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_width); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 120, __pyx_L1_error)
    __pyx_v_self->_model_ptr->vis.global.offwidth = __pyx_t_5;

    /* "mujoco_py/mjrendercontext.pyx":121
 *         if width != self._con.offWidth or height != self._con.offHeight:
 *             self._model_ptr.vis.global_.offwidth = width
 *             self._model_ptr.vis.global_.offheight = height             # <<<<<<<<<<<<<<
 *             mjr_freeContext(&self._con)
 *             self._set_mujoco_buffers()
 */
    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_height); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 121, __pyx_L1_error)
    __pyx_v_self->_model_ptr->vis.global.offheight = __pyx_t_5;

    /* "mujoco_py/mjrendercontext.pyx":122
 *             self._model_ptr.vis.global_.offwidth = width
 *             self._model_ptr.vis.global_.offheight = height
 *             mjr_freeContext(&self._con)             # <<<<<<<<<<<<<<
 *             self._set_mujoco_buffers()
 * 
 */
    mjr_freeContext((&__pyx_v_self->_con));

    /* "mujoco_py/mjrendercontext.pyx":123
 *             self._model_ptr.vis.global_.offheight = height
 *             mjr_freeContext(&self._con)
 *             self._set_mujoco_buffers()             # <<<<<<<<<<<<<<
 * 
 *     def render(self, width, height, camera_id=None):
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_mujoco_buffers); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_6) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 123, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 123, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/mjrendercontext.pyx":119
 * 
 *     def update_offscreen_size(self, width, height):
 *         if width != self._con.offWidth or height != self._con.offHeight:             # <<<<<<<<<<<<<<
 *             self._model_ptr.vis.global_.offwidth = width
 *             self._model_ptr.vis.global_.offheight = height
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":118
 *         self.cam.distance = sim.model.stat.extent
 * 
 *     def update_offscreen_size(self, width, height):             # <<<<<<<<<<<<<<
 *         if width != self._con.offWidth or height != self._con.offHeight:
 *             self._model_ptr.vis.global_.offwidth = width
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.update_offscreen_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":125
 *             self._set_mujoco_buffers()
 * 
 *     def render(self, width, height, camera_id=None):             # <<<<<<<<<<<<<<
 *         cdef mjrRect rect
 *         rect.left = 0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_15render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_15render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_width = 0;
  PyObject *__pyx_v_height = 0;
  PyObject *__pyx_v_camera_id = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("render (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_width,&__pyx_n_s_height,&__pyx_n_s_camera_id,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("render", 0, 2, 3, 1); __PYX_ERR(1, 125, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_camera_id);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(1, 125, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_width = values[0];
    __pyx_v_height = values[1];
    __pyx_v_camera_id = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("render", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 125, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_14render(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), __pyx_v_width, __pyx_v_height, __pyx_v_camera_id);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_14render(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height, PyObject *__pyx_v_camera_id) {
  mjrRect __pyx_v_rect;
  PyObject *__pyx_v_new_width = NULL;
  PyObject *__pyx_v_new_height = NULL;
  PyObject *__pyx_v_marker_params = NULL;
  PyObject *__pyx_v_gridpos = NULL;
  PyObject *__pyx_v_text1 = NULL;
  PyObject *__pyx_v_text2 = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  Py_ssize_t __pyx_t_10;
  int __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_t_13;
  char const *__pyx_t_14;
  char const *__pyx_t_15;
  __Pyx_RefNannySetupContext("render", 0);

  /* "mujoco_py/mjrendercontext.pyx":127
 *     def render(self, width, height, camera_id=None):
 *         cdef mjrRect rect
 *         rect.left = 0             # <<<<<<<<<<<<<<
 *         rect.bottom = 0
 *         rect.width = width
 */
  __pyx_v_rect.left = 0;

  /* "mujoco_py/mjrendercontext.pyx":128
 *         cdef mjrRect rect
 *         rect.left = 0
 *         rect.bottom = 0             # <<<<<<<<<<<<<<
 *         rect.width = width
 *         rect.height = height
 */
  __pyx_v_rect.bottom = 0;

  /* "mujoco_py/mjrendercontext.pyx":129
 *         rect.left = 0
 *         rect.bottom = 0
 *         rect.width = width             # <<<<<<<<<<<<<<
 *         rect.height = height
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_width); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 129, __pyx_L1_error)
  __pyx_v_rect.width = __pyx_t_1;

  /* "mujoco_py/mjrendercontext.pyx":130
 *         rect.bottom = 0
 *         rect.width = width
 *         rect.height = height             # <<<<<<<<<<<<<<
 * 
 *         if self.sim.render_callback is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_height); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 130, __pyx_L1_error)
  __pyx_v_rect.height = __pyx_t_1;

  /* "mujoco_py/mjrendercontext.pyx":132
 *         rect.height = height
 * 
 *         if self.sim.render_callback is not None:             # <<<<<<<<<<<<<<
 *             self.sim.render_callback(self.sim, self)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->sim, __pyx_n_s_render_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__pyx_t_2 != Py_None);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "mujoco_py/mjrendercontext.pyx":133
 * 
 *         if self.sim.render_callback is not None:
 *             self.sim.render_callback(self.sim, self)             # <<<<<<<<<<<<<<
 * 
 *         # Sometimes buffers are too small.
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->sim, __pyx_n_s_render_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_1 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_1 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self->sim, ((PyObject *)__pyx_v_self)};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 133, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self->sim, ((PyObject *)__pyx_v_self)};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 133, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_INCREF(__pyx_v_self->sim);
      __Pyx_GIVEREF(__pyx_v_self->sim);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_1, __pyx_v_self->sim);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_1, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/mjrendercontext.pyx":132
 *         rect.height = height
 * 
 *         if self.sim.render_callback is not None:             # <<<<<<<<<<<<<<
 *             self.sim.render_callback(self.sim, self)
 * 
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":136
 * 
 *         # Sometimes buffers are too small.
 *         if width > self._con.offWidth or height > self._con.offHeight:             # <<<<<<<<<<<<<<
 *             new_width = max(width, self._model_ptr.vis.global_.offwidth)
 *             new_height = max(height, self._model_ptr.vis.global_.offheight)
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->_con.offWidth); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_RichCompare(__pyx_v_width, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __pyx_t_3;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_self->_con.offHeight); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_height, __pyx_t_5, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __pyx_t_3;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_4) {

    /* "mujoco_py/mjrendercontext.pyx":137
 *         # Sometimes buffers are too small.
 *         if width > self._con.offWidth or height > self._con.offHeight:
 *             new_width = max(width, self._model_ptr.vis.global_.offwidth)             # <<<<<<<<<<<<<<
 *             new_height = max(height, self._model_ptr.vis.global_.offheight)
 *             self.update_offscreen_size(new_width, new_height)
 */
    __pyx_t_1 = __pyx_v_self->_model_ptr->vis.global.offwidth;
    __Pyx_INCREF(__pyx_v_width);
    __pyx_t_2 = __pyx_v_width;
    __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 137, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 137, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_4) {
      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 137, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __pyx_t_6;
      __pyx_t_6 = 0;
    } else {
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_5 = __pyx_t_2;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __pyx_t_5;
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_new_width = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/mjrendercontext.pyx":138
 *         if width > self._con.offWidth or height > self._con.offHeight:
 *             new_width = max(width, self._model_ptr.vis.global_.offwidth)
 *             new_height = max(height, self._model_ptr.vis.global_.offheight)             # <<<<<<<<<<<<<<
 *             self.update_offscreen_size(new_width, new_height)
 * 
 */
    __pyx_t_1 = __pyx_v_self->_model_ptr->vis.global.offheight;
    __Pyx_INCREF(__pyx_v_height);
    __pyx_t_2 = __pyx_v_height;
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 138, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 138, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_4) {
      __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 138, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = __pyx_t_7;
      __pyx_t_7 = 0;
    } else {
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_5 = __pyx_t_2;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __pyx_t_5;
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_new_height = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "mujoco_py/mjrendercontext.pyx":139
 *             new_width = max(width, self._model_ptr.vis.global_.offwidth)
 *             new_height = max(height, self._model_ptr.vis.global_.offheight)
 *             self.update_offscreen_size(new_width, new_height)             # <<<<<<<<<<<<<<
 * 
 *         if camera_id is not None:
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_update_offscreen_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_1 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_1 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_new_width, __pyx_v_new_height};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_new_width, __pyx_v_new_height};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_INCREF(__pyx_v_new_width);
      __Pyx_GIVEREF(__pyx_v_new_width);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_1, __pyx_v_new_width);
      __Pyx_INCREF(__pyx_v_new_height);
      __Pyx_GIVEREF(__pyx_v_new_height);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_v_new_height);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/mjrendercontext.pyx":136
 * 
 *         # Sometimes buffers are too small.
 *         if width > self._con.offWidth or height > self._con.offHeight:             # <<<<<<<<<<<<<<
 *             new_width = max(width, self._model_ptr.vis.global_.offwidth)
 *             new_height = max(height, self._model_ptr.vis.global_.offheight)
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":141
 *             self.update_offscreen_size(new_width, new_height)
 * 
 *         if camera_id is not None:             # <<<<<<<<<<<<<<
 *             if camera_id == -1:
 *                 self.cam.type = const.CAMERA_FREE
 */
  __pyx_t_4 = (__pyx_v_camera_id != Py_None);
  __pyx_t_3 = (__pyx_t_4 != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjrendercontext.pyx":142
 * 
 *         if camera_id is not None:
 *             if camera_id == -1:             # <<<<<<<<<<<<<<
 *                 self.cam.type = const.CAMERA_FREE
 *             else:
 */
    __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_v_camera_id, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 142, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "mujoco_py/mjrendercontext.pyx":143
 *         if camera_id is not None:
 *             if camera_id == -1:
 *                 self.cam.type = const.CAMERA_FREE             # <<<<<<<<<<<<<<
 *             else:
 *                 self.cam.type = const.CAMERA_FIXED
 */
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_const); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CAMERA_FREE); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->cam), __pyx_n_s_type, __pyx_t_5) < 0) __PYX_ERR(1, 143, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "mujoco_py/mjrendercontext.pyx":142
 * 
 *         if camera_id is not None:
 *             if camera_id == -1:             # <<<<<<<<<<<<<<
 *                 self.cam.type = const.CAMERA_FREE
 *             else:
 */
      goto __pyx_L8;
    }

    /* "mujoco_py/mjrendercontext.pyx":145
 *                 self.cam.type = const.CAMERA_FREE
 *             else:
 *                 self.cam.type = const.CAMERA_FIXED             # <<<<<<<<<<<<<<
 *             self.cam.fixedcamid = camera_id
 * 
 */
    /*else*/ {
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_const); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 145, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_CAMERA_FIXED); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 145, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->cam), __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(1, 145, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_L8:;

    /* "mujoco_py/mjrendercontext.pyx":146
 *             else:
 *                 self.cam.type = const.CAMERA_FIXED
 *             self.cam.fixedcamid = camera_id             # <<<<<<<<<<<<<<
 * 
 *         self.opengl_context.set_buffer_size(width, height)
 */
    if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->cam), __pyx_n_s_fixedcamid, __pyx_v_camera_id) < 0) __PYX_ERR(1, 146, __pyx_L1_error)

    /* "mujoco_py/mjrendercontext.pyx":141
 *             self.update_offscreen_size(new_width, new_height)
 * 
 *         if camera_id is not None:             # <<<<<<<<<<<<<<
 *             if camera_id == -1:
 *                 self.cam.type = const.CAMERA_FREE
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":148
 *             self.cam.fixedcamid = camera_id
 * 
 *         self.opengl_context.set_buffer_size(width, height)             # <<<<<<<<<<<<<<
 * 
 *         mjv_updateScene(self._model_ptr, self._data_ptr, &self._vopt,
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->opengl_context, __pyx_n_s_set_buffer_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_1 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_width, __pyx_v_height};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 148, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_width, __pyx_v_height};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 148, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_INCREF(__pyx_v_width);
    __Pyx_GIVEREF(__pyx_v_width);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_1, __pyx_v_width);
    __Pyx_INCREF(__pyx_v_height);
    __Pyx_GIVEREF(__pyx_v_height);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_1, __pyx_v_height);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":150
 *         self.opengl_context.set_buffer_size(width, height)
 * 
 *         mjv_updateScene(self._model_ptr, self._data_ptr, &self._vopt,             # <<<<<<<<<<<<<<
 *                         &self._pert, &self._cam, mjCAT_ALL, &self._scn)
 * 
 */
  mjv_updateScene(__pyx_v_self->_model_ptr, __pyx_v_self->_data_ptr, (&__pyx_v_self->_vopt), (&__pyx_v_self->_pert), (&__pyx_v_self->_cam), mjCAT_ALL, (&__pyx_v_self->_scn));

  /* "mujoco_py/mjrendercontext.pyx":153
 *                         &self._pert, &self._cam, mjCAT_ALL, &self._scn)
 * 
 *         for marker_params in self._markers:             # <<<<<<<<<<<<<<
 *             self._add_marker_to_scene(marker_params)
 * 
 */
  if (unlikely(__pyx_v_self->_markers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 153, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_v_self->_markers; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
  for (;;) {
    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 153, __pyx_L1_error)
    #else
    __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_marker_params, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "mujoco_py/mjrendercontext.pyx":154
 * 
 *         for marker_params in self._markers:
 *             self._add_marker_to_scene(marker_params)             # <<<<<<<<<<<<<<
 * 
 *         mjr_render(rect, &self._scn, &self._con)
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_marker_to_scene); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_marker_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_marker_params};
        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 154, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_5);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_marker_params};
        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 154, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_5);
      } else
      #endif
      {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_marker_params);
        __Pyx_GIVEREF(__pyx_v_marker_params);
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_marker_params);
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "mujoco_py/mjrendercontext.pyx":153
 *                         &self._pert, &self._cam, mjCAT_ALL, &self._scn)
 * 
 *         for marker_params in self._markers:             # <<<<<<<<<<<<<<
 *             self._add_marker_to_scene(marker_params)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":156
 *             self._add_marker_to_scene(marker_params)
 * 
 *         mjr_render(rect, &self._scn, &self._con)             # <<<<<<<<<<<<<<
 *         for gridpos, (text1, text2) in self._overlay.items():
 *             mjr_overlay(const.FONTSCALE_150, gridpos, rect, text1.encode(), text2.encode(), &self._con)
 */
  mjr_render(__pyx_v_rect, (&__pyx_v_self->_scn), (&__pyx_v_self->_con));

  /* "mujoco_py/mjrendercontext.pyx":157
 * 
 *         mjr_render(rect, &self._scn, &self._con)
 *         for gridpos, (text1, text2) in self._overlay.items():             # <<<<<<<<<<<<<<
 *             mjr_overlay(const.FONTSCALE_150, gridpos, rect, text1.encode(), text2.encode(), &self._con)
 * 
 */
  __pyx_t_8 = 0;
  if (unlikely(__pyx_v_self->_overlay == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(1, 157, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_self->_overlay, 1, __pyx_n_s_items, (&__pyx_t_10), (&__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_2);
  __pyx_t_2 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_10, &__pyx_t_8, &__pyx_t_5, &__pyx_t_7, NULL, __pyx_t_1);
    if (unlikely(__pyx_t_11 == 0)) break;
    if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(1, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_XDECREF_SET(__pyx_v_gridpos, __pyx_t_5);
    __pyx_t_5 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(1, 157, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_9 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_9);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 157, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 157, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 157, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_5 = __pyx_t_12(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L13_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 1; __pyx_t_9 = __pyx_t_12(__pyx_t_6); if (unlikely(!__pyx_t_9)) goto __pyx_L13_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_6), 2) < 0) __PYX_ERR(1, 157, __pyx_L1_error)
      __pyx_t_12 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L14_unpacking_done;
      __pyx_L13_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(1, 157, __pyx_L1_error)
      __pyx_L14_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_text1, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_text2, __pyx_t_9);
    __pyx_t_9 = 0;

    /* "mujoco_py/mjrendercontext.pyx":158
 *         mjr_render(rect, &self._scn, &self._con)
 *         for gridpos, (text1, text2) in self._overlay.items():
 *             mjr_overlay(const.FONTSCALE_150, gridpos, rect, text1.encode(), text2.encode(), &self._con)             # <<<<<<<<<<<<<<
 * 
 *     def read_pixels(self, width, height, depth=True):
 */
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_const); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_FONTSCALE_150); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 158, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_gridpos); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 158, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_text1, __pyx_n_s_encode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 158, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 158, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_t_9); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(1, 158, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_text2, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_6) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 158, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 158, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(1, 158, __pyx_L1_error)
    mjr_overlay(__pyx_t_11, __pyx_t_13, __pyx_v_rect, __pyx_t_14, __pyx_t_15, (&__pyx_v_self->_con));
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":125
 *             self._set_mujoco_buffers()
 * 
 *     def render(self, width, height, camera_id=None):             # <<<<<<<<<<<<<<
 *         cdef mjrRect rect
 *         rect.left = 0
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_new_width);
  __Pyx_XDECREF(__pyx_v_new_height);
  __Pyx_XDECREF(__pyx_v_marker_params);
  __Pyx_XDECREF(__pyx_v_gridpos);
  __Pyx_XDECREF(__pyx_v_text1);
  __Pyx_XDECREF(__pyx_v_text2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":160
 *             mjr_overlay(const.FONTSCALE_150, gridpos, rect, text1.encode(), text2.encode(), &self._con)
 * 
 *     def read_pixels(self, width, height, depth=True):             # <<<<<<<<<<<<<<
 *         cdef mjrRect rect
 *         rect.left = 0
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_17read_pixels(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_17read_pixels(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_width = 0;
  PyObject *__pyx_v_height = 0;
  PyObject *__pyx_v_depth = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_pixels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_width,&__pyx_n_s_height,&__pyx_n_s_depth,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)Py_True);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_pixels", 0, 2, 3, 1); __PYX_ERR(1, 160, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_pixels") < 0)) __PYX_ERR(1, 160, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_width = values[0];
    __pyx_v_height = values[1];
    __pyx_v_depth = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read_pixels", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 160, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.read_pixels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_16read_pixels(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), __pyx_v_width, __pyx_v_height, __pyx_v_depth);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_16read_pixels(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height, PyObject *__pyx_v_depth) {
  mjrRect __pyx_v_rect;
  PyObject *__pyx_v_rgb_arr = NULL;
  PyObject *__pyx_v_depth_arr = NULL;
  __Pyx_memviewslice __pyx_v_rgb_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_depth_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_v_rgb_img = NULL;
  PyObject *__pyx_v_depth_img = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_memviewslice __pyx_t_7 = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  __Pyx_RefNannySetupContext("read_pixels", 0);

  /* "mujoco_py/mjrendercontext.pyx":162
 *     def read_pixels(self, width, height, depth=True):
 *         cdef mjrRect rect
 *         rect.left = 0             # <<<<<<<<<<<<<<
 *         rect.bottom = 0
 *         rect.width = width
 */
  __pyx_v_rect.left = 0;

  /* "mujoco_py/mjrendercontext.pyx":163
 *         cdef mjrRect rect
 *         rect.left = 0
 *         rect.bottom = 0             # <<<<<<<<<<<<<<
 *         rect.width = width
 *         rect.height = height
 */
  __pyx_v_rect.bottom = 0;

  /* "mujoco_py/mjrendercontext.pyx":164
 *         rect.left = 0
 *         rect.bottom = 0
 *         rect.width = width             # <<<<<<<<<<<<<<
 *         rect.height = height
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_width); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 164, __pyx_L1_error)
  __pyx_v_rect.width = __pyx_t_1;

  /* "mujoco_py/mjrendercontext.pyx":165
 *         rect.bottom = 0
 *         rect.width = width
 *         rect.height = height             # <<<<<<<<<<<<<<
 * 
 *         rgb_arr = np.zeros(3 * rect.width * rect.height, dtype=np.uint8)
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_height); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 165, __pyx_L1_error)
  __pyx_v_rect.height = __pyx_t_1;

  /* "mujoco_py/mjrendercontext.pyx":167
 *         rect.height = height
 * 
 *         rgb_arr = np.zeros(3 * rect.width * rect.height, dtype=np.uint8)             # <<<<<<<<<<<<<<
 *         depth_arr = np.zeros(rect.width * rect.height, dtype=np.float32)
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyInt_From_long(((3 * __pyx_v_rect.width) * __pyx_v_rect.height)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_uint8); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_rgb_arr = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "mujoco_py/mjrendercontext.pyx":168
 * 
 *         rgb_arr = np.zeros(3 * rect.width * rect.height, dtype=np.uint8)
 *         depth_arr = np.zeros(rect.width * rect.height, dtype=np.float32)             # <<<<<<<<<<<<<<
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 *         cdef float[::view.contiguous] depth_view = depth_arr
 */
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_rect.width * __pyx_v_rect.height)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_depth_arr = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "mujoco_py/mjrendercontext.pyx":169
 *         rgb_arr = np.zeros(3 * rect.width * rect.height, dtype=np.uint8)
 *         depth_arr = np.zeros(rect.width * rect.height, dtype=np.float32)
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr             # <<<<<<<<<<<<<<
 *         cdef float[::view.contiguous] depth_view = depth_arr
 *         mjr_readPixels(&rgb_view[0], &depth_view[0], rect, &self._con)
 */
  __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(__pyx_v_rgb_arr);
  if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(1, 169, __pyx_L1_error)
  __pyx_v_rgb_view = __pyx_t_7;
  __pyx_t_7.memview = NULL;
  __pyx_t_7.data = NULL;

  /* "mujoco_py/mjrendercontext.pyx":170
 *         depth_arr = np.zeros(rect.width * rect.height, dtype=np.float32)
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 *         cdef float[::view.contiguous] depth_view = depth_arr             # <<<<<<<<<<<<<<
 *         mjr_readPixels(&rgb_view[0], &depth_view[0], rect, &self._con)
 *         rgb_img = rgb_arr.reshape(rect.height, rect.width, 3)
 */
  __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_v_depth_arr);
  if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(1, 170, __pyx_L1_error)
  __pyx_v_depth_view = __pyx_t_8;
  __pyx_t_8.memview = NULL;
  __pyx_t_8.data = NULL;

  /* "mujoco_py/mjrendercontext.pyx":171
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 *         cdef float[::view.contiguous] depth_view = depth_arr
 *         mjr_readPixels(&rgb_view[0], &depth_view[0], rect, &self._con)             # <<<<<<<<<<<<<<
 *         rgb_img = rgb_arr.reshape(rect.height, rect.width, 3)
 *         if depth:
 */
  __pyx_t_9 = 0;
  __pyx_t_1 = -1;
  if (__pyx_t_9 < 0) {
    __pyx_t_9 += __pyx_v_rgb_view.shape[0];
    if (unlikely(__pyx_t_9 < 0)) __pyx_t_1 = 0;
  } else if (unlikely(__pyx_t_9 >= __pyx_v_rgb_view.shape[0])) __pyx_t_1 = 0;
  if (unlikely(__pyx_t_1 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_1);
    __PYX_ERR(1, 171, __pyx_L1_error)
  }
  __pyx_t_10 = 0;
  __pyx_t_1 = -1;
  if (__pyx_t_10 < 0) {
    __pyx_t_10 += __pyx_v_depth_view.shape[0];
    if (unlikely(__pyx_t_10 < 0)) __pyx_t_1 = 0;
  } else if (unlikely(__pyx_t_10 >= __pyx_v_depth_view.shape[0])) __pyx_t_1 = 0;
  if (unlikely(__pyx_t_1 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_1);
    __PYX_ERR(1, 171, __pyx_L1_error)
  }
  mjr_readPixels((&(*((unsigned char *) ( /* dim=0 */ ((char *) (((unsigned char *) __pyx_v_rgb_view.data) + __pyx_t_9)) )))), (&(*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_depth_view.data) + __pyx_t_10)) )))), __pyx_v_rect, (&__pyx_v_self->_con));

  /* "mujoco_py/mjrendercontext.pyx":172
 *         cdef float[::view.contiguous] depth_view = depth_arr
 *         mjr_readPixels(&rgb_view[0], &depth_view[0], rect, &self._con)
 *         rgb_img = rgb_arr.reshape(rect.height, rect.width, 3)             # <<<<<<<<<<<<<<
 *         if depth:
 *             depth_img = depth_arr.reshape(rect.height, rect.width)
 */
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_rgb_arr, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_rect.height); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_rect.width); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_1 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_4, __pyx_t_2, __pyx_int_3};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_1, 3+__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 172, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_4, __pyx_t_2, __pyx_int_3};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_1, 3+__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 172, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_11 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_2);
    __Pyx_INCREF(__pyx_int_3);
    __Pyx_GIVEREF(__pyx_int_3);
    PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_1, __pyx_int_3);
    __pyx_t_4 = 0;
    __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_rgb_img = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "mujoco_py/mjrendercontext.pyx":173
 *         mjr_readPixels(&rgb_view[0], &depth_view[0], rect, &self._con)
 *         rgb_img = rgb_arr.reshape(rect.height, rect.width, 3)
 *         if depth:             # <<<<<<<<<<<<<<
 *             depth_img = depth_arr.reshape(rect.height, rect.width)
 *             return (rgb_img, depth_img)
 */
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_depth); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(1, 173, __pyx_L1_error)
  if (__pyx_t_12) {

    /* "mujoco_py/mjrendercontext.pyx":174
 *         rgb_img = rgb_arr.reshape(rect.height, rect.width, 3)
 *         if depth:
 *             depth_img = depth_arr.reshape(rect.height, rect.width)             # <<<<<<<<<<<<<<
 *             return (rgb_img, depth_img)
 *         else:
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_depth_arr, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_rect.height); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_rect.width); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = NULL;
    __pyx_t_1 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_1 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_11, __pyx_t_2};
      __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 174, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_11, __pyx_t_2};
      __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 174, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_1, __pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_1, __pyx_t_2);
      __pyx_t_11 = 0;
      __pyx_t_2 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_depth_img = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "mujoco_py/mjrendercontext.pyx":175
 *         if depth:
 *             depth_img = depth_arr.reshape(rect.height, rect.width)
 *             return (rgb_img, depth_img)             # <<<<<<<<<<<<<<
 *         else:
 *             return rgb_img
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_rgb_img);
    __Pyx_GIVEREF(__pyx_v_rgb_img);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_rgb_img);
    __Pyx_INCREF(__pyx_v_depth_img);
    __Pyx_GIVEREF(__pyx_v_depth_img);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_depth_img);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "mujoco_py/mjrendercontext.pyx":173
 *         mjr_readPixels(&rgb_view[0], &depth_view[0], rect, &self._con)
 *         rgb_img = rgb_arr.reshape(rect.height, rect.width, 3)
 *         if depth:             # <<<<<<<<<<<<<<
 *             depth_img = depth_arr.reshape(rect.height, rect.width)
 *             return (rgb_img, depth_img)
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":177
 *             return (rgb_img, depth_img)
 *         else:
 *             return rgb_img             # <<<<<<<<<<<<<<
 * 
 *     def upload_texture(self, int tex_id):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_rgb_img);
    __pyx_r = __pyx_v_rgb_img;
    goto __pyx_L0;
  }

  /* "mujoco_py/mjrendercontext.pyx":160
 *             mjr_overlay(const.FONTSCALE_150, gridpos, rect, text1.encode(), text2.encode(), &self._con)
 * 
 *     def read_pixels(self, width, height, depth=True):             # <<<<<<<<<<<<<<
 *         cdef mjrRect rect
 *         rect.left = 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.read_pixels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rgb_arr);
  __Pyx_XDECREF(__pyx_v_depth_arr);
  __PYX_XDEC_MEMVIEW(&__pyx_v_rgb_view, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_depth_view, 1);
  __Pyx_XDECREF(__pyx_v_rgb_img);
  __Pyx_XDECREF(__pyx_v_depth_img);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":179
 *             return rgb_img
 * 
 *     def upload_texture(self, int tex_id):             # <<<<<<<<<<<<<<
 *         """ Uploads given texture to the GPU. """
 *         self.opengl_context.make_context_current()
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_19upload_texture(PyObject *__pyx_v_self, PyObject *__pyx_arg_tex_id); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_18upload_texture[] = " Uploads given texture to the GPU. ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_19upload_texture(PyObject *__pyx_v_self, PyObject *__pyx_arg_tex_id) {
  int __pyx_v_tex_id;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("upload_texture (wrapper)", 0);
  assert(__pyx_arg_tex_id); {
    __pyx_v_tex_id = __Pyx_PyInt_As_int(__pyx_arg_tex_id); if (unlikely((__pyx_v_tex_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 179, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.upload_texture", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_18upload_texture(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), ((int)__pyx_v_tex_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_18upload_texture(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, int __pyx_v_tex_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("upload_texture", 0);

  /* "mujoco_py/mjrendercontext.pyx":181
 *     def upload_texture(self, int tex_id):
 *         """ Uploads given texture to the GPU. """
 *         self.opengl_context.make_context_current()             # <<<<<<<<<<<<<<
 *         mjr_uploadTexture(self._model_ptr, &self._con, tex_id)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->opengl_context, __pyx_n_s_make_context_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 181, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 181, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":182
 *         """ Uploads given texture to the GPU. """
 *         self.opengl_context.make_context_current()
 *         mjr_uploadTexture(self._model_ptr, &self._con, tex_id)             # <<<<<<<<<<<<<<
 * 
 *     def draw_pixels(self, np.ndarray[np.uint8_t, ndim=3] image, int left, int bottom):
 */
  mjr_uploadTexture(__pyx_v_self->_model_ptr, (&__pyx_v_self->_con), __pyx_v_tex_id);

  /* "mujoco_py/mjrendercontext.pyx":179
 *             return rgb_img
 * 
 *     def upload_texture(self, int tex_id):             # <<<<<<<<<<<<<<
 *         """ Uploads given texture to the GPU. """
 *         self.opengl_context.make_context_current()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.upload_texture", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":184
 *         mjr_uploadTexture(self._model_ptr, &self._con, tex_id)
 * 
 *     def draw_pixels(self, np.ndarray[np.uint8_t, ndim=3] image, int left, int bottom):             # <<<<<<<<<<<<<<
 *         """Draw an image into the OpenGL buffer."""
 *         cdef unsigned char[::view.contiguous] image_view = image.ravel()
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_21draw_pixels(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_20draw_pixels[] = "Draw an image into the OpenGL buffer.";
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_21draw_pixels(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_image = 0;
  int __pyx_v_left;
  int __pyx_v_bottom;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("draw_pixels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_image,&__pyx_n_s_left,&__pyx_n_s_bottom,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_image)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_left)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("draw_pixels", 1, 3, 3, 1); __PYX_ERR(1, 184, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bottom)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("draw_pixels", 1, 3, 3, 2); __PYX_ERR(1, 184, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "draw_pixels") < 0)) __PYX_ERR(1, 184, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_image = ((PyArrayObject *)values[0]);
    __pyx_v_left = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_left == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 184, __pyx_L3_error)
    __pyx_v_bottom = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_bottom == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 184, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("draw_pixels", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 184, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.draw_pixels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_image), __pyx_ptype_5numpy_ndarray, 1, "image", 0))) __PYX_ERR(1, 184, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_20draw_pixels(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), __pyx_v_image, __pyx_v_left, __pyx_v_bottom);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_20draw_pixels(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyArrayObject *__pyx_v_image, int __pyx_v_left, int __pyx_v_bottom) {
  __Pyx_memviewslice __pyx_v_image_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  mjrRect __pyx_v_viewport;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_image;
  __Pyx_Buffer __pyx_pybuffer_image;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_memviewslice __pyx_t_4 = { 0, 0, { 0 }, { 0 }, { 0 } };
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("draw_pixels", 0);
  __pyx_pybuffer_image.pybuffer.buf = NULL;
  __pyx_pybuffer_image.refcount = 0;
  __pyx_pybuffernd_image.data = NULL;
  __pyx_pybuffernd_image.rcbuffer = &__pyx_pybuffer_image;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_image.rcbuffer->pybuffer, (PyObject*)__pyx_v_image, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) __PYX_ERR(1, 184, __pyx_L1_error)
  }
  __pyx_pybuffernd_image.diminfo[0].strides = __pyx_pybuffernd_image.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_image.diminfo[0].shape = __pyx_pybuffernd_image.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_image.diminfo[1].strides = __pyx_pybuffernd_image.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_image.diminfo[1].shape = __pyx_pybuffernd_image.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_image.diminfo[2].strides = __pyx_pybuffernd_image.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_image.diminfo[2].shape = __pyx_pybuffernd_image.rcbuffer->pybuffer.shape[2];

  /* "mujoco_py/mjrendercontext.pyx":186
 *     def draw_pixels(self, np.ndarray[np.uint8_t, ndim=3] image, int left, int bottom):
 *         """Draw an image into the OpenGL buffer."""
 *         cdef unsigned char[::view.contiguous] image_view = image.ravel()             # <<<<<<<<<<<<<<
 *         cdef mjrRect viewport
 *         viewport.left = left
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_image), __pyx_n_s_ravel); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 186, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 186, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(__pyx_t_1);
  if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(1, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_image_view = __pyx_t_4;
  __pyx_t_4.memview = NULL;
  __pyx_t_4.data = NULL;

  /* "mujoco_py/mjrendercontext.pyx":188
 *         cdef unsigned char[::view.contiguous] image_view = image.ravel()
 *         cdef mjrRect viewport
 *         viewport.left = left             # <<<<<<<<<<<<<<
 *         viewport.bottom = bottom
 *         viewport.width = image.shape[1]
 */
  __pyx_v_viewport.left = __pyx_v_left;

  /* "mujoco_py/mjrendercontext.pyx":189
 *         cdef mjrRect viewport
 *         viewport.left = left
 *         viewport.bottom = bottom             # <<<<<<<<<<<<<<
 *         viewport.width = image.shape[1]
 *         viewport.height = image.shape[0]
 */
  __pyx_v_viewport.bottom = __pyx_v_bottom;

  /* "mujoco_py/mjrendercontext.pyx":190
 *         viewport.left = left
 *         viewport.bottom = bottom
 *         viewport.width = image.shape[1]             # <<<<<<<<<<<<<<
 *         viewport.height = image.shape[0]
 *         mjr_drawPixels(&image_view[0], NULL, viewport, &self._con)
 */
  __pyx_v_viewport.width = (__pyx_v_image->dimensions[1]);

  /* "mujoco_py/mjrendercontext.pyx":191
 *         viewport.bottom = bottom
 *         viewport.width = image.shape[1]
 *         viewport.height = image.shape[0]             # <<<<<<<<<<<<<<
 *         mjr_drawPixels(&image_view[0], NULL, viewport, &self._con)
 * 
 */
  __pyx_v_viewport.height = (__pyx_v_image->dimensions[0]);

  /* "mujoco_py/mjrendercontext.pyx":192
 *         viewport.width = image.shape[1]
 *         viewport.height = image.shape[0]
 *         mjr_drawPixels(&image_view[0], NULL, viewport, &self._con)             # <<<<<<<<<<<<<<
 * 
 *     def move_camera(self, int action, double reldx, double reldy):
 */
  __pyx_t_5 = 0;
  __pyx_t_6 = -1;
  if (__pyx_t_5 < 0) {
    __pyx_t_5 += __pyx_v_image_view.shape[0];
    if (unlikely(__pyx_t_5 < 0)) __pyx_t_6 = 0;
  } else if (unlikely(__pyx_t_5 >= __pyx_v_image_view.shape[0])) __pyx_t_6 = 0;
  if (unlikely(__pyx_t_6 != -1)) {
    __Pyx_RaiseBufferIndexError(__pyx_t_6);
    __PYX_ERR(1, 192, __pyx_L1_error)
  }
  mjr_drawPixels((&(*((unsigned char *) ( /* dim=0 */ ((char *) (((unsigned char *) __pyx_v_image_view.data) + __pyx_t_5)) )))), NULL, __pyx_v_viewport, (&__pyx_v_self->_con));

  /* "mujoco_py/mjrendercontext.pyx":184
 *         mjr_uploadTexture(self._model_ptr, &self._con, tex_id)
 * 
 *     def draw_pixels(self, np.ndarray[np.uint8_t, ndim=3] image, int left, int bottom):             # <<<<<<<<<<<<<<
 *         """Draw an image into the OpenGL buffer."""
 *         cdef unsigned char[::view.contiguous] image_view = image.ravel()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_image.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.draw_pixels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_image.rcbuffer->pybuffer);
  __pyx_L2:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_image_view, 1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":194
 *         mjr_drawPixels(&image_view[0], NULL, viewport, &self._con)
 * 
 *     def move_camera(self, int action, double reldx, double reldy):             # <<<<<<<<<<<<<<
 *         """ Moves the camera based on mouse movements. Action is one of mjMOUSE_*. """
 *         mjv_moveCamera(self._model_ptr, action, reldx, reldy, &self._scn, &self._cam)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_23move_camera(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_22move_camera[] = " Moves the camera based on mouse movements. Action is one of mjMOUSE_*. ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_23move_camera(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_action;
  double __pyx_v_reldx;
  double __pyx_v_reldy;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("move_camera (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_action,&__pyx_n_s_reldx,&__pyx_n_s_reldy,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_action)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_reldx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("move_camera", 1, 3, 3, 1); __PYX_ERR(1, 194, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_reldy)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("move_camera", 1, 3, 3, 2); __PYX_ERR(1, 194, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "move_camera") < 0)) __PYX_ERR(1, 194, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_action = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_action == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 194, __pyx_L3_error)
    __pyx_v_reldx = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_reldx == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 194, __pyx_L3_error)
    __pyx_v_reldy = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_reldy == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 194, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("move_camera", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 194, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.move_camera", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_22move_camera(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), __pyx_v_action, __pyx_v_reldx, __pyx_v_reldy);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_22move_camera(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, int __pyx_v_action, double __pyx_v_reldx, double __pyx_v_reldy) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("move_camera", 0);

  /* "mujoco_py/mjrendercontext.pyx":196
 *     def move_camera(self, int action, double reldx, double reldy):
 *         """ Moves the camera based on mouse movements. Action is one of mjMOUSE_*. """
 *         mjv_moveCamera(self._model_ptr, action, reldx, reldy, &self._scn, &self._cam)             # <<<<<<<<<<<<<<
 * 
 *     def add_overlay(self, int gridpos, str text1, str text2):
 */
  mjv_moveCamera(__pyx_v_self->_model_ptr, __pyx_v_action, __pyx_v_reldx, __pyx_v_reldy, (&__pyx_v_self->_scn), (&__pyx_v_self->_cam));

  /* "mujoco_py/mjrendercontext.pyx":194
 *         mjr_drawPixels(&image_view[0], NULL, viewport, &self._con)
 * 
 *     def move_camera(self, int action, double reldx, double reldy):             # <<<<<<<<<<<<<<
 *         """ Moves the camera based on mouse movements. Action is one of mjMOUSE_*. """
 *         mjv_moveCamera(self._model_ptr, action, reldx, reldy, &self._scn, &self._cam)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":198
 *         mjv_moveCamera(self._model_ptr, action, reldx, reldy, &self._scn, &self._cam)
 * 
 *     def add_overlay(self, int gridpos, str text1, str text2):             # <<<<<<<<<<<<<<
 *         """ Overlays text on the scene. """
 *         if gridpos not in self._overlay:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_25add_overlay(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_24add_overlay[] = " Overlays text on the scene. ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_25add_overlay(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_gridpos;
  PyObject *__pyx_v_text1 = 0;
  PyObject *__pyx_v_text2 = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_overlay (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_gridpos,&__pyx_n_s_text1,&__pyx_n_s_text2,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gridpos)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_text1)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("add_overlay", 1, 3, 3, 1); __PYX_ERR(1, 198, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_text2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("add_overlay", 1, 3, 3, 2); __PYX_ERR(1, 198, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_overlay") < 0)) __PYX_ERR(1, 198, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_gridpos = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_gridpos == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 198, __pyx_L3_error)
    __pyx_v_text1 = ((PyObject*)values[1]);
    __pyx_v_text2 = ((PyObject*)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_overlay", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 198, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.add_overlay", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_text1), (&PyUnicode_Type), 1, "text1", 1))) __PYX_ERR(1, 198, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_text2), (&PyUnicode_Type), 1, "text2", 1))) __PYX_ERR(1, 198, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_24add_overlay(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), __pyx_v_gridpos, __pyx_v_text1, __pyx_v_text2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_24add_overlay(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, int __pyx_v_gridpos, PyObject *__pyx_v_text1, PyObject *__pyx_v_text2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("add_overlay", 0);

  /* "mujoco_py/mjrendercontext.pyx":200
 *     def add_overlay(self, int gridpos, str text1, str text2):
 *         """ Overlays text on the scene. """
 *         if gridpos not in self._overlay:             # <<<<<<<<<<<<<<
 *             self._overlay[gridpos] = ["", ""]
 *         self._overlay[gridpos][0] += text1 + "\n"
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_gridpos); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_v_self->_overlay == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 200, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_t_1, __pyx_v_self->_overlay, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjrendercontext.pyx":201
 *         """ Overlays text on the scene. """
 *         if gridpos not in self._overlay:
 *             self._overlay[gridpos] = ["", ""]             # <<<<<<<<<<<<<<
 *         self._overlay[gridpos][0] += text1 + "\n"
 *         self._overlay[gridpos][1] += text2 + "\n"
 */
    __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_kp_u__83);
    __Pyx_GIVEREF(__pyx_kp_u__83);
    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__83);
    __Pyx_INCREF(__pyx_kp_u__83);
    __Pyx_GIVEREF(__pyx_kp_u__83);
    PyList_SET_ITEM(__pyx_t_1, 1, __pyx_kp_u__83);
    if (unlikely(__pyx_v_self->_overlay == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 201, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_gridpos); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(PyDict_SetItem(__pyx_v_self->_overlay, __pyx_t_4, __pyx_t_1) < 0)) __PYX_ERR(1, 201, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/mjrendercontext.pyx":200
 *     def add_overlay(self, int gridpos, str text1, str text2):
 *         """ Overlays text on the scene. """
 *         if gridpos not in self._overlay:             # <<<<<<<<<<<<<<
 *             self._overlay[gridpos] = ["", ""]
 *         self._overlay[gridpos][0] += text1 + "\n"
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":202
 *         if gridpos not in self._overlay:
 *             self._overlay[gridpos] = ["", ""]
 *         self._overlay[gridpos][0] += text1 + "\n"             # <<<<<<<<<<<<<<
 *         self._overlay[gridpos][1] += text2 + "\n"
 * 
 */
  if (unlikely(__pyx_v_self->_overlay == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 202, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_gridpos); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_overlay, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, __pyx_t_5, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_text1, __pyx_kp_u__123); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(__Pyx_SetItemInt(__pyx_t_4, __pyx_t_5, __pyx_t_7, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(1, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjrendercontext.pyx":203
 *             self._overlay[gridpos] = ["", ""]
 *         self._overlay[gridpos][0] += text1 + "\n"
 *         self._overlay[gridpos][1] += text2 + "\n"             # <<<<<<<<<<<<<<
 * 
 *     def add_marker(self, **marker_params):
 */
  if (unlikely(__pyx_v_self->_overlay == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 203, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_gridpos); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_self->_overlay, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = 1;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, __pyx_t_5, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_text2, __pyx_kp_u__123); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(__Pyx_SetItemInt(__pyx_t_7, __pyx_t_5, __pyx_t_1, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(1, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "mujoco_py/mjrendercontext.pyx":198
 *         mjv_moveCamera(self._model_ptr, action, reldx, reldy, &self._scn, &self._cam)
 * 
 *     def add_overlay(self, int gridpos, str text1, str text2):             # <<<<<<<<<<<<<<
 *         """ Overlays text on the scene. """
 *         if gridpos not in self._overlay:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.add_overlay", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":205
 *         self._overlay[gridpos][1] += text2 + "\n"
 * 
 *     def add_marker(self, **marker_params):             # <<<<<<<<<<<<<<
 *         self._markers.append(marker_params)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_27add_marker(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_27add_marker(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_marker_params = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_marker (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("add_marker", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (__pyx_kwds && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "add_marker", 1))) return NULL;
  __pyx_v_marker_params = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_marker_params)) return NULL;
  __Pyx_GOTREF(__pyx_v_marker_params);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_26add_marker(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), __pyx_v_marker_params);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_marker_params);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_26add_marker(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_marker_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("add_marker", 0);

  /* "mujoco_py/mjrendercontext.pyx":206
 * 
 *     def add_marker(self, **marker_params):
 *         self._markers.append(marker_params)             # <<<<<<<<<<<<<<
 * 
 *     def _add_marker_to_scene(self, marker_params):
 */
  if (unlikely(__pyx_v_self->_markers == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(1, 206, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->_markers, __pyx_v_marker_params); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 206, __pyx_L1_error)

  /* "mujoco_py/mjrendercontext.pyx":205
 *         self._overlay[gridpos][1] += text2 + "\n"
 * 
 *     def add_marker(self, **marker_params):             # <<<<<<<<<<<<<<
 *         self._markers.append(marker_params)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.add_marker", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":208
 *         self._markers.append(marker_params)
 * 
 *     def _add_marker_to_scene(self, marker_params):             # <<<<<<<<<<<<<<
 *         """ Adds marker to scene, and returns the corresponding object. """
 *         if self._scn.ngeom >= self._scn.maxgeom:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_29_add_marker_to_scene(PyObject *__pyx_v_self, PyObject *__pyx_v_marker_params); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_28_add_marker_to_scene[] = " Adds marker to scene, and returns the corresponding object. ";
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_29_add_marker_to_scene(PyObject *__pyx_v_self, PyObject *__pyx_v_marker_params) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_add_marker_to_scene (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_28_add_marker_to_scene(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_marker_params));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_28_add_marker_to_scene(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_marker_params) {
  mjvGeom *__pyx_v_g;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *__pyx_v_wrapped = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_attr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  float __pyx_t_5[3];
  PyObject *__pyx_t_6 = NULL;
  float __pyx_t_7[9];
  float __pyx_t_8[4];
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  char const *__pyx_t_18;
  __Pyx_RefNannySetupContext("_add_marker_to_scene", 0);

  /* "mujoco_py/mjrendercontext.pyx":210
 *     def _add_marker_to_scene(self, marker_params):
 *         """ Adds marker to scene, and returns the corresponding object. """
 *         if self._scn.ngeom >= self._scn.maxgeom:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Ran out of geoms. maxgeom: %d' % self._scn.maxgeom)
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->_scn.ngeom >= __pyx_v_self->_scn.maxgeom) != 0);
  if (__pyx_t_1) {

    /* "mujoco_py/mjrendercontext.pyx":211
 *         """ Adds marker to scene, and returns the corresponding object. """
 *         if self._scn.ngeom >= self._scn.maxgeom:
 *             raise RuntimeError('Ran out of geoms. maxgeom: %d' % self._scn.maxgeom)             # <<<<<<<<<<<<<<
 * 
 *         cdef mjvGeom *g = self._scn.geoms + self._scn.ngeom
 */
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->_scn.maxgeom); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Ran_out_of_geoms_maxgeom_d, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 211, __pyx_L1_error)

    /* "mujoco_py/mjrendercontext.pyx":210
 *     def _add_marker_to_scene(self, marker_params):
 *         """ Adds marker to scene, and returns the corresponding object. """
 *         if self._scn.ngeom >= self._scn.maxgeom:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Ran out of geoms. maxgeom: %d' % self._scn.maxgeom)
 * 
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":213
 *             raise RuntimeError('Ran out of geoms. maxgeom: %d' % self._scn.maxgeom)
 * 
 *         cdef mjvGeom *g = self._scn.geoms + self._scn.ngeom             # <<<<<<<<<<<<<<
 * 
 *         # default values.
 */
  __pyx_v_g = (__pyx_v_self->_scn.geoms + __pyx_v_self->_scn.ngeom);

  /* "mujoco_py/mjrendercontext.pyx":216
 * 
 *         # default values.
 *         g.dataid = -1             # <<<<<<<<<<<<<<
 *         g.objtype = const.OBJ_UNKNOWN
 *         g.objid = -1
 */
  __pyx_v_g->dataid = -1;

  /* "mujoco_py/mjrendercontext.pyx":217
 *         # default values.
 *         g.dataid = -1
 *         g.objtype = const.OBJ_UNKNOWN             # <<<<<<<<<<<<<<
 *         g.objid = -1
 *         g.category = const.CAT_DECOR
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_const); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_OBJ_UNKNOWN); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_g->objtype = __pyx_t_4;

  /* "mujoco_py/mjrendercontext.pyx":218
 *         g.dataid = -1
 *         g.objtype = const.OBJ_UNKNOWN
 *         g.objid = -1             # <<<<<<<<<<<<<<
 *         g.category = const.CAT_DECOR
 *         g.texid = -1
 */
  __pyx_v_g->objid = -1;

  /* "mujoco_py/mjrendercontext.pyx":219
 *         g.objtype = const.OBJ_UNKNOWN
 *         g.objid = -1
 *         g.category = const.CAT_DECOR             # <<<<<<<<<<<<<<
 *         g.texid = -1
 *         g.texuniform = 0
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_const); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CAT_DECOR); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_g->category = __pyx_t_4;

  /* "mujoco_py/mjrendercontext.pyx":220
 *         g.objid = -1
 *         g.category = const.CAT_DECOR
 *         g.texid = -1             # <<<<<<<<<<<<<<
 *         g.texuniform = 0
 *         g.texrepeat[0] = 1
 */
  __pyx_v_g->texid = -1;

  /* "mujoco_py/mjrendercontext.pyx":221
 *         g.category = const.CAT_DECOR
 *         g.texid = -1
 *         g.texuniform = 0             # <<<<<<<<<<<<<<
 *         g.texrepeat[0] = 1
 *         g.texrepeat[1] = 1
 */
  __pyx_v_g->texuniform = 0;

  /* "mujoco_py/mjrendercontext.pyx":222
 *         g.texid = -1
 *         g.texuniform = 0
 *         g.texrepeat[0] = 1             # <<<<<<<<<<<<<<
 *         g.texrepeat[1] = 1
 *         g.emission = 0
 */
  (__pyx_v_g->texrepeat[0]) = 1.0;

  /* "mujoco_py/mjrendercontext.pyx":223
 *         g.texuniform = 0
 *         g.texrepeat[0] = 1
 *         g.texrepeat[1] = 1             # <<<<<<<<<<<<<<
 *         g.emission = 0
 *         g.specular = 0.5
 */
  (__pyx_v_g->texrepeat[1]) = 1.0;

  /* "mujoco_py/mjrendercontext.pyx":224
 *         g.texrepeat[0] = 1
 *         g.texrepeat[1] = 1
 *         g.emission = 0             # <<<<<<<<<<<<<<
 *         g.specular = 0.5
 *         g.shininess = 0.5
 */
  __pyx_v_g->emission = 0.0;

  /* "mujoco_py/mjrendercontext.pyx":225
 *         g.texrepeat[1] = 1
 *         g.emission = 0
 *         g.specular = 0.5             # <<<<<<<<<<<<<<
 *         g.shininess = 0.5
 *         g.reflectance = 0
 */
  __pyx_v_g->specular = 0.5;

  /* "mujoco_py/mjrendercontext.pyx":226
 *         g.emission = 0
 *         g.specular = 0.5
 *         g.shininess = 0.5             # <<<<<<<<<<<<<<
 *         g.reflectance = 0
 *         g.type = const.GEOM_BOX
 */
  __pyx_v_g->shininess = 0.5;

  /* "mujoco_py/mjrendercontext.pyx":227
 *         g.specular = 0.5
 *         g.shininess = 0.5
 *         g.reflectance = 0             # <<<<<<<<<<<<<<
 *         g.type = const.GEOM_BOX
 *         g.size[:] = np.ones(3) * 0.1
 */
  __pyx_v_g->reflectance = 0.0;

  /* "mujoco_py/mjrendercontext.pyx":228
 *         g.shininess = 0.5
 *         g.reflectance = 0
 *         g.type = const.GEOM_BOX             # <<<<<<<<<<<<<<
 *         g.size[:] = np.ones(3) * 0.1
 *         g.mat[:] = np.eye(3).flatten()
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_const); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GEOM_BOX); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_g->type = __pyx_t_4;

  /* "mujoco_py/mjrendercontext.pyx":229
 *         g.reflectance = 0
 *         g.type = const.GEOM_BOX
 *         g.size[:] = np.ones(3) * 0.1             # <<<<<<<<<<<<<<
 *         g.mat[:] = np.eye(3).flatten()
 *         g.rgba[:] = np.ones(4)
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__124, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_float_0_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(__Pyx_carray_from_py_float(__pyx_t_3, __pyx_t_5, 3) < 0)) __PYX_ERR(1, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  memcpy(&(__pyx_v_g->size[0]), __pyx_t_5, sizeof(__pyx_v_g->size[0]) * (3));

  /* "mujoco_py/mjrendercontext.pyx":230
 *         g.type = const.GEOM_BOX
 *         g.size[:] = np.ones(3) * 0.1
 *         g.mat[:] = np.eye(3).flatten()             # <<<<<<<<<<<<<<
 *         g.rgba[:] = np.ones(4)
 *         wrapped = WrapMjvGeom(g)
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_eye); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__125, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_flatten); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 230, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 230, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(__Pyx_carray_from_py_float(__pyx_t_3, __pyx_t_7, 9) < 0)) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  memcpy(&(__pyx_v_g->mat[0]), __pyx_t_7, sizeof(__pyx_v_g->mat[0]) * (9));

  /* "mujoco_py/mjrendercontext.pyx":231
 *         g.size[:] = np.ones(3) * 0.1
 *         g.mat[:] = np.eye(3).flatten()
 *         g.rgba[:] = np.ones(4)             # <<<<<<<<<<<<<<
 *         wrapped = WrapMjvGeom(g)
 * 
 */
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__126, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(__Pyx_carray_from_py_float(__pyx_t_3, __pyx_t_8, 4) < 0)) __PYX_ERR(1, 231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  memcpy(&(__pyx_v_g->rgba[0]), __pyx_t_8, sizeof(__pyx_v_g->rgba[0]) * (4));

  /* "mujoco_py/mjrendercontext.pyx":232
 *         g.mat[:] = np.eye(3).flatten()
 *         g.rgba[:] = np.ones(4)
 *         wrapped = WrapMjvGeom(g)             # <<<<<<<<<<<<<<
 * 
 *         for key, value in marker_params.items():
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjvGeom(__pyx_v_g)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_wrapped = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "mujoco_py/mjrendercontext.pyx":234
 *         wrapped = WrapMjvGeom(g)
 * 
 *         for key, value in marker_params.items():             # <<<<<<<<<<<<<<
 *             if isinstance(value, (int, float)):
 *                 setattr(wrapped, key, value)
 */
  __pyx_t_9 = 0;
  if (unlikely(__pyx_v_marker_params == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(1, 234, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_v_marker_params, 0, __pyx_n_s_items, (&__pyx_t_10), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_3);
  __pyx_t_3 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_10, &__pyx_t_9, &__pyx_t_6, &__pyx_t_2, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_11 == 0)) break;
    if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(1, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "mujoco_py/mjrendercontext.pyx":235
 * 
 *         for key, value in marker_params.items():
 *             if isinstance(value, (int, float)):             # <<<<<<<<<<<<<<
 *                 setattr(wrapped, key, value)
 *             elif isinstance(value, (tuple, list, np.ndarray)):
 */
    __pyx_t_12 = PyInt_Check(__pyx_v_value); 
    __pyx_t_13 = (__pyx_t_12 != 0);
    if (!__pyx_t_13) {
    } else {
      __pyx_t_1 = __pyx_t_13;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_13 = PyFloat_Check(__pyx_v_value); 
    __pyx_t_12 = (__pyx_t_13 != 0);
    __pyx_t_1 = __pyx_t_12;
    __pyx_L7_bool_binop_done:;
    __pyx_t_12 = (__pyx_t_1 != 0);
    if (__pyx_t_12) {

      /* "mujoco_py/mjrendercontext.pyx":236
 *         for key, value in marker_params.items():
 *             if isinstance(value, (int, float)):
 *                 setattr(wrapped, key, value)             # <<<<<<<<<<<<<<
 *             elif isinstance(value, (tuple, list, np.ndarray)):
 *                 attr = getattr(wrapped, key)
 */
      __pyx_t_14 = PyObject_SetAttr(((PyObject *)__pyx_v_wrapped), __pyx_v_key, __pyx_v_value); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(1, 236, __pyx_L1_error)

      /* "mujoco_py/mjrendercontext.pyx":235
 * 
 *         for key, value in marker_params.items():
 *             if isinstance(value, (int, float)):             # <<<<<<<<<<<<<<
 *                 setattr(wrapped, key, value)
 *             elif isinstance(value, (tuple, list, np.ndarray)):
 */
      goto __pyx_L6;
    }

    /* "mujoco_py/mjrendercontext.pyx":237
 *             if isinstance(value, (int, float)):
 *                 setattr(wrapped, key, value)
 *             elif isinstance(value, (tuple, list, np.ndarray)):             # <<<<<<<<<<<<<<
 *                 attr = getattr(wrapped, key)
 *                 attr[:] = np.asarray(value).reshape(attr.shape)
 */
    __pyx_t_1 = PyTuple_Check(__pyx_v_value); 
    __pyx_t_13 = (__pyx_t_1 != 0);
    if (!__pyx_t_13) {
    } else {
      __pyx_t_12 = __pyx_t_13;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_13 = PyList_Check(__pyx_v_value); 
    __pyx_t_1 = (__pyx_t_13 != 0);
    if (!__pyx_t_1) {
    } else {
      __pyx_t_12 = __pyx_t_1;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_5numpy_ndarray); 
    __pyx_t_13 = (__pyx_t_1 != 0);
    __pyx_t_12 = __pyx_t_13;
    __pyx_L9_bool_binop_done:;
    __pyx_t_13 = (__pyx_t_12 != 0);
    if (__pyx_t_13) {

      /* "mujoco_py/mjrendercontext.pyx":238
 *                 setattr(wrapped, key, value)
 *             elif isinstance(value, (tuple, list, np.ndarray)):
 *                 attr = getattr(wrapped, key)             # <<<<<<<<<<<<<<
 *                 attr[:] = np.asarray(value).reshape(attr.shape)
 *             elif isinstance(value, str):
 */
      __pyx_t_2 = __Pyx_GetAttr(((PyObject *)__pyx_v_wrapped), __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 238, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XDECREF_SET(__pyx_v_attr, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "mujoco_py/mjrendercontext.pyx":239
 *             elif isinstance(value, (tuple, list, np.ndarray)):
 *                 attr = getattr(wrapped, key)
 *                 attr[:] = np.asarray(value).reshape(attr.shape)             # <<<<<<<<<<<<<<
 *             elif isinstance(value, str):
 *                 assert key == "label", "Only label is a string in mjvGeom."
 */
      __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 239, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_asarray); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 239, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __pyx_t_15 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_16))) {
        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_16);
        if (likely(__pyx_t_15)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
          __Pyx_INCREF(__pyx_t_15);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_16, function);
        }
      }
      if (!__pyx_t_15) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_v_value); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 239, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_16)) {
          PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_v_value};
          __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_16, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 239, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_16)) {
          PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_v_value};
          __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_16, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 239, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else
        #endif
        {
          __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 239, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_17);
          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_15); __pyx_t_15 = NULL;
          __Pyx_INCREF(__pyx_v_value);
          __Pyx_GIVEREF(__pyx_v_value);
          PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_v_value);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_t_17, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 239, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 239, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_attr, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 239, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_17 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_16))) {
        __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_16);
        if (likely(__pyx_t_17)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
          __Pyx_INCREF(__pyx_t_17);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_16, function);
        }
      }
      if (!__pyx_t_17) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 239, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_16)) {
          PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_6};
          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_16, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 239, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_16)) {
          PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_6};
          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_16, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 239, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else
        #endif
        {
          __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 239, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_17); __pyx_t_17 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_t_15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 239, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      if (__Pyx_PyObject_SetSlice(__pyx_v_attr, __pyx_t_2, 0, 0, NULL, NULL, &__pyx_slice__127, 0, 0, 1) < 0) __PYX_ERR(1, 239, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "mujoco_py/mjrendercontext.pyx":237
 *             if isinstance(value, (int, float)):
 *                 setattr(wrapped, key, value)
 *             elif isinstance(value, (tuple, list, np.ndarray)):             # <<<<<<<<<<<<<<
 *                 attr = getattr(wrapped, key)
 *                 attr[:] = np.asarray(value).reshape(attr.shape)
 */
      goto __pyx_L6;
    }

    /* "mujoco_py/mjrendercontext.pyx":240
 *                 attr = getattr(wrapped, key)
 *                 attr[:] = np.asarray(value).reshape(attr.shape)
 *             elif isinstance(value, str):             # <<<<<<<<<<<<<<
 *                 assert key == "label", "Only label is a string in mjvGeom."
 *                 if value == None:
 */
    __pyx_t_13 = PyUnicode_Check(__pyx_v_value); 
    __pyx_t_12 = (__pyx_t_13 != 0);
    if (__pyx_t_12) {

      /* "mujoco_py/mjrendercontext.pyx":241
 *                 attr[:] = np.asarray(value).reshape(attr.shape)
 *             elif isinstance(value, str):
 *                 assert key == "label", "Only label is a string in mjvGeom."             # <<<<<<<<<<<<<<
 *                 if value == None:
 *                     g.label[0] = 0
 */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!Py_OptimizeFlag)) {
        __pyx_t_12 = (__Pyx_PyUnicode_Equals(__pyx_v_key, __pyx_n_u_label, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(1, 241, __pyx_L1_error)
        if (unlikely(!__pyx_t_12)) {
          PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Only_label_is_a_string_in_mjvGeo);
          __PYX_ERR(1, 241, __pyx_L1_error)
        }
      }
      #endif

      /* "mujoco_py/mjrendercontext.pyx":242
 *             elif isinstance(value, str):
 *                 assert key == "label", "Only label is a string in mjvGeom."
 *                 if value == None:             # <<<<<<<<<<<<<<
 *                     g.label[0] = 0
 *                 else:
 */
      __pyx_t_2 = PyObject_RichCompare(__pyx_v_value, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 242, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(1, 242, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_12) {

        /* "mujoco_py/mjrendercontext.pyx":243
 *                 assert key == "label", "Only label is a string in mjvGeom."
 *                 if value == None:
 *                     g.label[0] = 0             # <<<<<<<<<<<<<<
 *                 else:
 *                     strncpy(g.label, value.encode(), 100)
 */
        (__pyx_v_g->label[0]) = 0;

        /* "mujoco_py/mjrendercontext.pyx":242
 *             elif isinstance(value, str):
 *                 assert key == "label", "Only label is a string in mjvGeom."
 *                 if value == None:             # <<<<<<<<<<<<<<
 *                     g.label[0] = 0
 *                 else:
 */
        goto __pyx_L12;
      }

      /* "mujoco_py/mjrendercontext.pyx":245
 *                     g.label[0] = 0
 *                 else:
 *                     strncpy(g.label, value.encode(), 100)             # <<<<<<<<<<<<<<
 *             elif hasattr(wrapped, key):
 *                 raise ValueError("mjvGeom has attr {} but type {} is invalid".format(key, type(value)))
 */
      /*else*/ {
        __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_encode); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_16);
        __pyx_t_15 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_16))) {
          __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_16);
          if (likely(__pyx_t_15)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
            __Pyx_INCREF(__pyx_t_15);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_16, function);
          }
        }
        if (__pyx_t_15) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_15); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 245, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        } else {
          __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 245, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        __pyx_t_18 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_18) && PyErr_Occurred())) __PYX_ERR(1, 245, __pyx_L1_error)
        strncpy(__pyx_v_g->label, __pyx_t_18, 0x64);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __pyx_L12:;

      /* "mujoco_py/mjrendercontext.pyx":240
 *                 attr = getattr(wrapped, key)
 *                 attr[:] = np.asarray(value).reshape(attr.shape)
 *             elif isinstance(value, str):             # <<<<<<<<<<<<<<
 *                 assert key == "label", "Only label is a string in mjvGeom."
 *                 if value == None:
 */
      goto __pyx_L6;
    }

    /* "mujoco_py/mjrendercontext.pyx":246
 *                 else:
 *                     strncpy(g.label, value.encode(), 100)
 *             elif hasattr(wrapped, key):             # <<<<<<<<<<<<<<
 *                 raise ValueError("mjvGeom has attr {} but type {} is invalid".format(key, type(value)))
 *             else:
 */
    __pyx_t_12 = __Pyx_HasAttr(((PyObject *)__pyx_v_wrapped), __pyx_v_key); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(1, 246, __pyx_L1_error)
    __pyx_t_13 = (__pyx_t_12 != 0);
    if (__pyx_t_13) {

      /* "mujoco_py/mjrendercontext.pyx":247
 *                     strncpy(g.label, value.encode(), 100)
 *             elif hasattr(wrapped, key):
 *                 raise ValueError("mjvGeom has attr {} but type {} is invalid".format(key, type(value)))             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError("mjvGeom doesn't have field %s" % key)
 */
      __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_mjvGeom_has_attr_but_type_is_inv, __pyx_n_s_format); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 247, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __pyx_t_15 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_16))) {
        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_16);
        if (likely(__pyx_t_15)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
          __Pyx_INCREF(__pyx_t_15);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_16, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_16)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, ((PyObject *)Py_TYPE(__pyx_v_value))};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_16, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 247, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_16)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, ((PyObject *)Py_TYPE(__pyx_v_value))};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_16, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 247, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 247, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__pyx_t_15) {
          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_15); __pyx_t_15 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_value)));
        __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_value)));
        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_11, ((PyObject *)Py_TYPE(__pyx_v_value)));
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 247, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 247, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 247, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(1, 247, __pyx_L1_error)

      /* "mujoco_py/mjrendercontext.pyx":246
 *                 else:
 *                     strncpy(g.label, value.encode(), 100)
 *             elif hasattr(wrapped, key):             # <<<<<<<<<<<<<<
 *                 raise ValueError("mjvGeom has attr {} but type {} is invalid".format(key, type(value)))
 *             else:
 */
    }

    /* "mujoco_py/mjrendercontext.pyx":249
 *                 raise ValueError("mjvGeom has attr {} but type {} is invalid".format(key, type(value)))
 *             else:
 *                 raise ValueError("mjvGeom doesn't have field %s" % key)             # <<<<<<<<<<<<<<
 * 
 *         self._scn.ngeom += 1
 */
    /*else*/ {
      __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_mjvGeom_doesn_t_have_field_s, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 249, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 249, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 249, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(1, 249, __pyx_L1_error)
    }
    __pyx_L6:;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "mujoco_py/mjrendercontext.pyx":251
 *                 raise ValueError("mjvGeom doesn't have field %s" % key)
 * 
 *         self._scn.ngeom += 1             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_self->_scn.ngeom = (__pyx_v_self->_scn.ngeom + 1);

  /* "mujoco_py/mjrendercontext.pyx":208
 *         self._markers.append(marker_params)
 * 
 *     def _add_marker_to_scene(self, marker_params):             # <<<<<<<<<<<<<<
 *         """ Adds marker to scene, and returns the corresponding object. """
 *         if self._scn.ngeom >= self._scn.maxgeom:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext._add_marker_to_scene", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_wrapped);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_attr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":254
 * 
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         mjr_freeContext(&self._con)
 *         mjv_freeScene(&self._scn)
 */

/* Python wrapper */
static void __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_31__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_31__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_30__dealloc__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_30__dealloc__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "mujoco_py/mjrendercontext.pyx":255
 * 
 *     def __dealloc__(self):
 *         mjr_freeContext(&self._con)             # <<<<<<<<<<<<<<
 *         mjv_freeScene(&self._scn)
 * 
 */
  mjr_freeContext((&__pyx_v_self->_con));

  /* "mujoco_py/mjrendercontext.pyx":256
 *     def __dealloc__(self):
 *         mjr_freeContext(&self._con)
 *         mjv_freeScene(&self._scn)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  mjv_freeScene((&__pyx_v_self->_scn));

  /* "mujoco_py/mjrendercontext.pyx":254
 * 
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         mjr_freeContext(&self._con)
 *         mjv_freeScene(&self._scn)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "mujoco_py/mjrendercontext.pyx":20
 * 
 *     # Public wrappers
 *     cdef readonly PyMjvScene scn             # <<<<<<<<<<<<<<
 *     cdef readonly PyMjvCamera cam
 *     cdef readonly PyMjvOption vopt
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3scn_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3scn_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3scn___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3scn___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->scn));
  __pyx_r = ((PyObject *)__pyx_v_self->scn);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":21
 *     # Public wrappers
 *     cdef readonly PyMjvScene scn
 *     cdef readonly PyMjvCamera cam             # <<<<<<<<<<<<<<
 *     cdef readonly PyMjvOption vopt
 *     cdef readonly PyMjvPerturb pert
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3cam_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3cam_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3cam___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3cam___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->cam));
  __pyx_r = ((PyObject *)__pyx_v_self->cam);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":22
 *     cdef readonly PyMjvScene scn
 *     cdef readonly PyMjvCamera cam
 *     cdef readonly PyMjvOption vopt             # <<<<<<<<<<<<<<
 *     cdef readonly PyMjvPerturb pert
 *     cdef readonly PyMjrContext con
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_4vopt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_4vopt_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_4vopt___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_4vopt___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->vopt));
  __pyx_r = ((PyObject *)__pyx_v_self->vopt);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":23
 *     cdef readonly PyMjvCamera cam
 *     cdef readonly PyMjvOption vopt
 *     cdef readonly PyMjvPerturb pert             # <<<<<<<<<<<<<<
 *     cdef readonly PyMjrContext con
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_4pert_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_4pert_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_4pert___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_4pert___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->pert));
  __pyx_r = ((PyObject *)__pyx_v_self->pert);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":24
 *     cdef readonly PyMjvOption vopt
 *     cdef readonly PyMjvPerturb pert
 *     cdef readonly PyMjrContext con             # <<<<<<<<<<<<<<
 * 
 *     cdef readonly object opengl_context
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3con_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3con_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3con___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3con___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->con));
  __pyx_r = ((PyObject *)__pyx_v_self->con);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":26
 *     cdef readonly PyMjrContext con
 * 
 *     cdef readonly object opengl_context             # <<<<<<<<<<<<<<
 *     cdef readonly int _visible
 *     cdef readonly list _markers
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_14opengl_context_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_14opengl_context_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_14opengl_context___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_14opengl_context___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->opengl_context);
  __pyx_r = __pyx_v_self->opengl_context;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":27
 * 
 *     cdef readonly object opengl_context
 *     cdef readonly int _visible             # <<<<<<<<<<<<<<
 *     cdef readonly list _markers
 *     cdef readonly dict _overlay
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_8_visible_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_8_visible_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_visible___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_visible___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_visible); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext._visible.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":28
 *     cdef readonly object opengl_context
 *     cdef readonly int _visible
 *     cdef readonly list _markers             # <<<<<<<<<<<<<<
 *     cdef readonly dict _overlay
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_8_markers_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_8_markers_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_markers___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_markers___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_markers);
  __pyx_r = __pyx_v_self->_markers;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":29
 *     cdef readonly int _visible
 *     cdef readonly list _markers
 *     cdef readonly dict _overlay             # <<<<<<<<<<<<<<
 * 
 *     cdef readonly bint offscreen
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_8_overlay_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_8_overlay_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_overlay___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_8_overlay___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_overlay);
  __pyx_r = __pyx_v_self->_overlay;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":31
 *     cdef readonly dict _overlay
 * 
 *     cdef readonly bint offscreen             # <<<<<<<<<<<<<<
 *     cdef public object sim
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_9offscreen_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_9offscreen_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_9offscreen___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_9offscreen___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->offscreen); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.offscreen.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":32
 * 
 *     cdef readonly bint offscreen
 *     cdef public object sim             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3sim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3sim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3sim___get__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3sim___get__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->sim);
  __pyx_r = __pyx_v_self->sim;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3sim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3sim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3sim_2__set__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3sim_2__set__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->sim);
  __Pyx_DECREF(__pyx_v_self->sim);
  __pyx_v_self->sim = __pyx_v_value;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3sim_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3sim_5__del__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3sim_4__del__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_3sim_4__del__(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->sim);
  __Pyx_DECREF(__pyx_v_self->sim);
  __pyx_v_self->sim = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_33__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_33__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_32__reduce_cython__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__128, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_35__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_35__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjRenderContext_34__setstate_cython__(((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjRenderContext_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__129, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":261
 * class MjRenderContextOffscreen(MjRenderContext):
 * 
 *     def __cinit__(self, MjSim sim, int device_id):             # <<<<<<<<<<<<<<
 *         super().__init__(sim, offscreen=True, device_id=device_id)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_24MjRenderContextOffscreen_1__cinit__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_24MjRenderContextOffscreen_1__cinit__ = {"__cinit__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_24MjRenderContextOffscreen_1__cinit__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_24MjRenderContextOffscreen_1__cinit__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_sim = 0;
  int __pyx_v_device_id;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_sim,&__pyx_n_s_device_id,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sim)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(1, 261, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_device_id)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(1, 261, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(1, 261, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_sim = ((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)values[1]);
    __pyx_v_device_id = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_device_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 261, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 261, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContextOffscreen.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sim), __pyx_ptype_9mujoco_py_4cymj_MjSim, 1, "sim", 0))) __PYX_ERR(1, 261, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_24MjRenderContextOffscreen___cinit__(__pyx_self, __pyx_v_self, __pyx_v_sim, __pyx_v_device_id);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_24MjRenderContextOffscreen___cinit__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_sim, int __pyx_v_device_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "mujoco_py/mjrendercontext.pyx":262
 * 
 *     def __cinit__(self, MjSim sim, int device_id):
 *         super().__init__(sim, offscreen=True, device_id=device_id)             # <<<<<<<<<<<<<<
 * 
 * class MjRenderContextWindow(MjRenderContext):
 */
  __pyx_t_1 = __Pyx_CyFunction_GetClassObj(__pyx_self);
  if (!__pyx_t_1) { PyErr_SetString(PyExc_SystemError, "super(): empty __class__ cell"); __PYX_ERR(1, 262, __pyx_L1_error) }
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_sim));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_sim));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_sim));
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_offscreen, Py_True) < 0) __PYX_ERR(1, 262, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_device_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_device_id, __pyx_t_4) < 0) __PYX_ERR(1, 262, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjrendercontext.pyx":261
 * class MjRenderContextOffscreen(MjRenderContext):
 * 
 *     def __cinit__(self, MjSim sim, int device_id):             # <<<<<<<<<<<<<<
 *         super().__init__(sim, offscreen=True, device_id=device_id)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContextOffscreen.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":266
 * class MjRenderContextWindow(MjRenderContext):
 * 
 *     def __init__(self, MjSim sim):             # <<<<<<<<<<<<<<
 *         super().__init__(sim, offscreen=False)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_21MjRenderContextWindow_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_21MjRenderContextWindow_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_21MjRenderContextWindow_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_21MjRenderContextWindow_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_sim = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_sim,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sim)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(1, 266, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 266, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_sim = ((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 266, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContextWindow.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sim), __pyx_ptype_9mujoco_py_4cymj_MjSim, 1, "sim", 0))) __PYX_ERR(1, 266, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_21MjRenderContextWindow___init__(__pyx_self, __pyx_v_self, __pyx_v_sim);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_21MjRenderContextWindow___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, struct __pyx_obj_9mujoco_py_4cymj_MjSim *__pyx_v_sim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "mujoco_py/mjrendercontext.pyx":267
 * 
 *     def __init__(self, MjSim sim):
 *         super().__init__(sim, offscreen=False)             # <<<<<<<<<<<<<<
 * 
 *         assert isinstance(self.opengl_context, GlfwContext), (
 */
  __pyx_t_1 = __Pyx_CyFunction_GetClassObj(__pyx_self);
  if (!__pyx_t_1) { PyErr_SetString(PyExc_SystemError, "super(): empty __class__ cell"); __PYX_ERR(1, 267, __pyx_L1_error) }
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_sim));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_sim));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_sim));
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_offscreen, Py_False) < 0) __PYX_ERR(1, 267, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjrendercontext.pyx":269
 *         super().__init__(sim, offscreen=False)
 * 
 *         assert isinstance(self.opengl_context, GlfwContext), (             # <<<<<<<<<<<<<<
 *             "Only GlfwContext supported for windowed rendering")
 * 
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_opengl_context); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GlfwContext); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyObject_IsInstance(__pyx_t_4, __pyx_t_3); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 269, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!(__pyx_t_5 != 0))) {
      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Only_GlfwContext_supported_for_w);
      __PYX_ERR(1, 269, __pyx_L1_error)
    }
  }
  #endif

  /* "mujoco_py/mjrendercontext.pyx":266
 * class MjRenderContextWindow(MjRenderContext):
 * 
 *     def __init__(self, MjSim sim):             # <<<<<<<<<<<<<<
 *         super().__init__(sim, offscreen=False)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContextWindow.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":273
 * 
 *     @property
 *     def window(self):             # <<<<<<<<<<<<<<
 *         return self.opengl_context.window
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_21MjRenderContextWindow_3window(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_21MjRenderContextWindow_3window = {"window", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_21MjRenderContextWindow_3window, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_21MjRenderContextWindow_3window(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("window (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_21MjRenderContextWindow_2window(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_21MjRenderContextWindow_2window(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("window", 0);

  /* "mujoco_py/mjrendercontext.pyx":274
 *     @property
 *     def window(self):
 *         return self.opengl_context.window             # <<<<<<<<<<<<<<
 * 
 *     def render(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_opengl_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_window); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjrendercontext.pyx":273
 * 
 *     @property
 *     def window(self):             # <<<<<<<<<<<<<<
 *         return self.opengl_context.window
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContextWindow.window", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjrendercontext.pyx":276
 *         return self.opengl_context.window
 * 
 *     def render(self):             # <<<<<<<<<<<<<<
 *         if self.window is None or glfw.window_should_close(self.window):
 *             return
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_21MjRenderContextWindow_5render(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_21MjRenderContextWindow_5render = {"render", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_21MjRenderContextWindow_5render, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_21MjRenderContextWindow_5render(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("render (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_21MjRenderContextWindow_4render(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_21MjRenderContextWindow_4render(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  __Pyx_RefNannySetupContext("render", 0);

  /* "mujoco_py/mjrendercontext.pyx":277
 * 
 *     def render(self):
 *         if self.window is None or glfw.window_should_close(self.window):             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__pyx_t_2 == Py_None);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (!__pyx_t_4) {
  } else {
    __pyx_t_1 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_window_should_close); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 277, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 277, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 277, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 277, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 277, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "mujoco_py/mjrendercontext.pyx":278
 *     def render(self):
 *         if self.window is None or glfw.window_should_close(self.window):
 *             return             # <<<<<<<<<<<<<<
 * 
 *         glfw.make_context_current(self.window)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "mujoco_py/mjrendercontext.pyx":277
 * 
 *     def render(self):
 *         if self.window is None or glfw.window_should_close(self.window):             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "mujoco_py/mjrendercontext.pyx":280
 *             return
 * 
 *         glfw.make_context_current(self.window)             # <<<<<<<<<<<<<<
 *         super().render(*glfw.get_framebuffer_size(self.window))
 *         glfw.swap_buffers(self.window)
 */
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_make_context_current); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 280, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_8)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 280, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 280, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 280, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 280, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":281
 * 
 *         glfw.make_context_current(self.window)
 *         super().render(*glfw.get_framebuffer_size(self.window))             # <<<<<<<<<<<<<<
 *         glfw.swap_buffers(self.window)
 */
  __pyx_t_2 = __Pyx_CyFunction_GetClassObj(__pyx_self);
  if (!__pyx_t_2) { PyErr_SetString(PyExc_SystemError, "super(): empty __class__ cell"); __PYX_ERR(1, 281, __pyx_L1_error) }
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_self);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_render); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_get_framebuffer_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 281, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_7};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 281, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_7};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 281, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    {
      __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":282
 *         glfw.make_context_current(self.window)
 *         super().render(*glfw.get_framebuffer_size(self.window))
 *         glfw.swap_buffers(self.window)             # <<<<<<<<<<<<<<
 */
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_glfw); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_swap_buffers); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_window); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_9 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_9) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 282, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_8)) {
      PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_6};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 282, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
      PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_6};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 282, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 282, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __pyx_t_9 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 282, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":276
 *         return self.opengl_context.window
 * 
 *     def render(self):             # <<<<<<<<<<<<<<
 *         if self.window is None or glfw.window_should_close(self.window):
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mujoco_py.cymj.MjRenderContextWindow.render", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":44
 *     """
 * 
 *     def __init__(self, width, height, batch_size=1, device_id=0,             # <<<<<<<<<<<<<<
 *                  depth=False, use_cuda=False):
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer___init__[] = "\n        Args:\n        - width (int): Image width.\n        - height (int): Image height.\n        - batch_size (int): Size of batch to render into. Memory is\n            allocated once upon initialization of object.\n        - device_id (int): Device to use for storing the batch.\n        - depth (bool): if True, render depth in addition to RGB.\n        - use_cuda (bool): if True, use OpenGL-CUDA interop to map\n            the PBO onto a CUDA buffer.\n        ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer___init__};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_width = 0;
  PyObject *__pyx_v_height = 0;
  PyObject *__pyx_v_batch_size = 0;
  PyObject *__pyx_v_device_id = 0;
  PyObject *__pyx_v_depth = 0;
  PyObject *__pyx_v_use_cuda = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_width,&__pyx_n_s_height,&__pyx_n_s_batch_size,&__pyx_n_s_device_id,&__pyx_n_s_depth,&__pyx_n_s_use_cuda,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    values[3] = ((PyObject *)((PyObject *)__pyx_int_1));
    values[4] = ((PyObject *)((PyObject *)__pyx_int_0));

    /* "mujoco_py/mjbatchrenderer.pyx":45
 * 
 *     def __init__(self, width, height, batch_size=1, device_id=0,
 *                  depth=False, use_cuda=False):             # <<<<<<<<<<<<<<
 *         """
 *         Args:
 */
    values[5] = ((PyObject *)((PyObject *)Py_False));
    values[6] = ((PyObject *)((PyObject *)Py_False));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 7, 1); __PYX_ERR(2, 44, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 7, 2); __PYX_ERR(2, 44, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_batch_size);
          if (value) { values[3] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_device_id);
          if (value) { values[4] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth);
          if (value) { values[5] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_use_cuda);
          if (value) { values[6] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(2, 44, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_width = values[1];
    __pyx_v_height = values[2];
    __pyx_v_batch_size = values[3];
    __pyx_v_device_id = values[4];
    __pyx_v_depth = values[5];
    __pyx_v_use_cuda = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 44, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer___init__(__pyx_self, __pyx_v_self, __pyx_v_width, __pyx_v_height, __pyx_v_batch_size, __pyx_v_device_id, __pyx_v_depth, __pyx_v_use_cuda);

  /* "mujoco_py/mjbatchrenderer.pyx":44
 *     """
 * 
 *     def __init__(self, width, height, batch_size=1, device_id=0,             # <<<<<<<<<<<<<<
 *                  depth=False, use_cuda=False):
 *         """
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_width, PyObject *__pyx_v_height, PyObject *__pyx_v_batch_size, PyObject *__pyx_v_device_id, PyObject *__pyx_v_depth, PyObject *__pyx_v_use_cuda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":58
 *         """
 *         # Early initialization to prevent failure in __del__
 *         self._use_cuda = False             # <<<<<<<<<<<<<<
 *         self.pbo_depth, self.pbo_depth = 0, 0
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_use_cuda_2, Py_False) < 0) __PYX_ERR(2, 58, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":59
 *         # Early initialization to prevent failure in __del__
 *         self._use_cuda = False
 *         self.pbo_depth, self.pbo_depth = 0, 0             # <<<<<<<<<<<<<<
 * 
 *         if not usingEGL():
 */
  __pyx_t_1 = __pyx_int_0;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_int_0;
  __Pyx_INCREF(__pyx_t_2);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pbo_depth, __pyx_t_1) < 0) __PYX_ERR(2, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pbo_depth, __pyx_t_2) < 0) __PYX_ERR(2, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":61
 *         self.pbo_depth, self.pbo_depth = 0, 0
 * 
 *         if not usingEGL():             # <<<<<<<<<<<<<<
 *             raise MjBatchRendererNotSupported(
 *                 "MjBatchRenderer currently only supported with EGL-backed"
 */
  __pyx_t_3 = ((!(usingEGL() != 0)) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":62
 * 
 *         if not usingEGL():
 *             raise MjBatchRendererNotSupported(             # <<<<<<<<<<<<<<
 *                 "MjBatchRenderer currently only supported with EGL-backed"
 *                 "rendering context.")
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjBatchRendererNotSupported); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__130, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 62, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":61
 *         self.pbo_depth, self.pbo_depth = 0, 0
 * 
 *         if not usingEGL():             # <<<<<<<<<<<<<<
 *             raise MjBatchRendererNotSupported(
 *                 "MjBatchRenderer currently only supported with EGL-backed"
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":67
 * 
 *         # Make sure OpenGL Context is available before creating PBOs
 *         initOpenGL(device_id)             # <<<<<<<<<<<<<<
 *         makeOpenGLContextCurrent(device_id)
 * 
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_device_id); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 67, __pyx_L1_error)
  initOpenGL(__pyx_t_4);

  /* "mujoco_py/mjbatchrenderer.pyx":68
 *         # Make sure OpenGL Context is available before creating PBOs
 *         initOpenGL(device_id)
 *         makeOpenGLContextCurrent(device_id)             # <<<<<<<<<<<<<<
 * 
 *         self.pbo_rgb = createPBO(width, height, batch_size, 0)
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_device_id); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 68, __pyx_L1_error)
  makeOpenGLContextCurrent(__pyx_t_4);

  /* "mujoco_py/mjbatchrenderer.pyx":70
 *         makeOpenGLContextCurrent(device_id)
 * 
 *         self.pbo_rgb = createPBO(width, height, batch_size, 0)             # <<<<<<<<<<<<<<
 *         self.pbo_depth = createPBO(width, height, batch_size, 1) if depth else 0
 * 
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_width); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 70, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_height); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 70, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_batch_size); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 70, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(createPBO(__pyx_t_4, __pyx_t_5, __pyx_t_6, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pbo_rgb, __pyx_t_1) < 0) __PYX_ERR(2, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":71
 * 
 *         self.pbo_rgb = createPBO(width, height, batch_size, 0)
 *         self.pbo_depth = createPBO(width, height, batch_size, 1) if depth else 0             # <<<<<<<<<<<<<<
 * 
 *         self._depth = depth
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_depth); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 71, __pyx_L1_error)
  if (__pyx_t_3) {
    __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_width); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 71, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_height); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 71, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_batch_size); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 71, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(createPBO(__pyx_t_6, __pyx_t_5, __pyx_t_4, 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(__pyx_int_0);
    __pyx_t_1 = __pyx_int_0;
  }
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pbo_depth, __pyx_t_1) < 0) __PYX_ERR(2, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":73
 *         self.pbo_depth = createPBO(width, height, batch_size, 1) if depth else 0
 * 
 *         self._depth = depth             # <<<<<<<<<<<<<<
 *         self._device_id = device_id
 *         self._width = width
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_depth_2, __pyx_v_depth) < 0) __PYX_ERR(2, 73, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":74
 * 
 *         self._depth = depth
 *         self._device_id = device_id             # <<<<<<<<<<<<<<
 *         self._width = width
 *         self._height = height
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_device_id_2, __pyx_v_device_id) < 0) __PYX_ERR(2, 74, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":75
 *         self._depth = depth
 *         self._device_id = device_id
 *         self._width = width             # <<<<<<<<<<<<<<
 *         self._height = height
 *         self._batch_size = batch_size
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_width_2, __pyx_v_width) < 0) __PYX_ERR(2, 75, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":76
 *         self._device_id = device_id
 *         self._width = width
 *         self._height = height             # <<<<<<<<<<<<<<
 *         self._batch_size = batch_size
 *         self._current_batch_offset = 0
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_height_2, __pyx_v_height) < 0) __PYX_ERR(2, 76, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":77
 *         self._width = width
 *         self._height = height
 *         self._batch_size = batch_size             # <<<<<<<<<<<<<<
 *         self._current_batch_offset = 0
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2, __pyx_v_batch_size) < 0) __PYX_ERR(2, 77, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":78
 *         self._height = height
 *         self._batch_size = batch_size
 *         self._current_batch_offset = 0             # <<<<<<<<<<<<<<
 * 
 *         self._use_cuda = use_cuda
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_current_batch_offset, __pyx_int_0) < 0) __PYX_ERR(2, 78, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":80
 *         self._current_batch_offset = 0
 * 
 *         self._use_cuda = use_cuda             # <<<<<<<<<<<<<<
 *         self._cuda_buffers_are_mapped = False
 *         self._cuda_rgb_ptr, self._cuda_depth_ptr = None, None
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_use_cuda_2, __pyx_v_use_cuda) < 0) __PYX_ERR(2, 80, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":81
 * 
 *         self._use_cuda = use_cuda
 *         self._cuda_buffers_are_mapped = False             # <<<<<<<<<<<<<<
 *         self._cuda_rgb_ptr, self._cuda_depth_ptr = None, None
 *         if use_cuda:
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_buffers_are_mapped, Py_False) < 0) __PYX_ERR(2, 81, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":82
 *         self._use_cuda = use_cuda
 *         self._cuda_buffers_are_mapped = False
 *         self._cuda_rgb_ptr, self._cuda_depth_ptr = None, None             # <<<<<<<<<<<<<<
 *         if use_cuda:
 *             self._init_cuda()
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = Py_None;
  __Pyx_INCREF(__pyx_t_2);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_ptr, __pyx_t_1) < 0) __PYX_ERR(2, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_ptr, __pyx_t_2) < 0) __PYX_ERR(2, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":83
 *         self._cuda_buffers_are_mapped = False
 *         self._cuda_rgb_ptr, self._cuda_depth_ptr = None, None
 *         if use_cuda:             # <<<<<<<<<<<<<<
 *             self._init_cuda()
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_use_cuda); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 83, __pyx_L1_error)
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":84
 *         self._cuda_rgb_ptr, self._cuda_depth_ptr = None, None
 *         if use_cuda:
 *             self._init_cuda()             # <<<<<<<<<<<<<<
 * 
 *     def _init_cuda(self):
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_init_cuda); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 84, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 84, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":83
 *         self._cuda_buffers_are_mapped = False
 *         self._cuda_rgb_ptr, self._cuda_depth_ptr = None, None
 *         if use_cuda:             # <<<<<<<<<<<<<<
 *             self._init_cuda()
 * 
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":44
 *     """
 * 
 *     def __init__(self, width, height, batch_size=1, device_id=0,             # <<<<<<<<<<<<<<
 *                  depth=False, use_cuda=False):
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":86
 *             self._init_cuda()
 * 
 *     def _init_cuda(self):             # <<<<<<<<<<<<<<
 *         if drv is None:
 *             raise ImportError("Failed to import pycuda.")
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_3_init_cuda(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_3_init_cuda = {"_init_cuda", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_3_init_cuda, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_3_init_cuda(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_cuda (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_2_init_cuda(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_2_init_cuda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_RegisteredBuffer = NULL;
  PyObject *__pyx_v_device = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_init_cuda", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":87
 * 
 *     def _init_cuda(self):
 *         if drv is None:             # <<<<<<<<<<<<<<
 *             raise ImportError("Failed to import pycuda.")
 *         # Use local imports so that we don't have to make pycuda
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_drv); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 == Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":88
 *     def _init_cuda(self):
 *         if drv is None:
 *             raise ImportError("Failed to import pycuda.")             # <<<<<<<<<<<<<<
 *         # Use local imports so that we don't have to make pycuda
 *         # opengl interop a requirement
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__131, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 88, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":87
 * 
 *     def _init_cuda(self):
 *         if drv is None:             # <<<<<<<<<<<<<<
 *             raise ImportError("Failed to import pycuda.")
 *         # Use local imports so that we don't have to make pycuda
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":91
 *         # Use local imports so that we don't have to make pycuda
 *         # opengl interop a requirement
 *         from pycuda.gl import RegisteredBuffer             # <<<<<<<<<<<<<<
 * 
 *         drv.init()
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_RegisteredBuffer);
  __Pyx_GIVEREF(__pyx_n_s_RegisteredBuffer);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_RegisteredBuffer);
  __pyx_t_4 = __Pyx_Import(__pyx_n_s_pycuda_gl, __pyx_t_1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_RegisteredBuffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_RegisteredBuffer = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":93
 *         from pycuda.gl import RegisteredBuffer
 * 
 *         drv.init()             # <<<<<<<<<<<<<<
 *         device = drv.Device(self._device_id)
 *         self._cuda_context = device.make_context()
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_drv); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_1) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 93, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 93, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":94
 * 
 *         drv.init()
 *         device = drv.Device(self._device_id)             # <<<<<<<<<<<<<<
 *         self._cuda_context = device.make_context()
 *         self._cuda_context.push()
 */
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_drv); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Device); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_device_id_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 94, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 94, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_device = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":95
 *         drv.init()
 *         device = drv.Device(self._device_id)
 *         self._cuda_context = device.make_context()             # <<<<<<<<<<<<<<
 *         self._cuda_context.push()
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_device, __pyx_n_s_make_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 95, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 95, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_context, __pyx_t_4) < 0) __PYX_ERR(2, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":96
 *         device = drv.Device(self._device_id)
 *         self._cuda_context = device.make_context()
 *         self._cuda_context.push()             # <<<<<<<<<<<<<<
 * 
 *         self._cuda_rgb_pbo = RegisteredBuffer(self.pbo_rgb)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_push); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_1) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 96, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 96, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":98
 *         self._cuda_context.push()
 * 
 *         self._cuda_rgb_pbo = RegisteredBuffer(self.pbo_rgb)             # <<<<<<<<<<<<<<
 *         if self._depth:
 *             self._cuda_depth_pbo = RegisteredBuffer(self.pbo_depth)
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_rgb); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_RegisteredBuffer);
  __pyx_t_1 = __pyx_v_RegisteredBuffer; __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 98, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 98, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 98, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_pbo, __pyx_t_4) < 0) __PYX_ERR(2, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":99
 * 
 *         self._cuda_rgb_pbo = RegisteredBuffer(self.pbo_rgb)
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             self._cuda_depth_pbo = RegisteredBuffer(self.pbo_depth)
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":100
 *         self._cuda_rgb_pbo = RegisteredBuffer(self.pbo_rgb)
 *         if self._depth:
 *             self._cuda_depth_pbo = RegisteredBuffer(self.pbo_depth)             # <<<<<<<<<<<<<<
 * 
 *     def map(self):
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_RegisteredBuffer);
    __pyx_t_6 = __pyx_v_RegisteredBuffer; __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 100, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_1};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 100, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_1};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 100, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else
      #endif
      {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 100, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 100, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_pbo, __pyx_t_4) < 0) __PYX_ERR(2, 100, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":99
 * 
 *         self._cuda_rgb_pbo = RegisteredBuffer(self.pbo_rgb)
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             self._cuda_depth_pbo = RegisteredBuffer(self.pbo_depth)
 * 
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":86
 *             self._init_cuda()
 * 
 *     def _init_cuda(self):             # <<<<<<<<<<<<<<
 *         if drv is None:
 *             raise ImportError("Failed to import pycuda.")
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer._init_cuda", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_RegisteredBuffer);
  __Pyx_XDECREF(__pyx_v_device);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":102
 *             self._cuda_depth_pbo = RegisteredBuffer(self.pbo_depth)
 * 
 *     def map(self):             # <<<<<<<<<<<<<<
 *         """ Map OpenGL buffer to CUDA for reading. """
 *         if not self._use_cuda:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_5map(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_4map[] = " Map OpenGL buffer to CUDA for reading. ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_5map = {"map", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_5map, METH_O, __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_4map};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_5map(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("map (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_4map(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_4map(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_ptr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  __Pyx_RefNannySetupContext("map", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":104
 *     def map(self):
 *         """ Map OpenGL buffer to CUDA for reading. """
 *         if not self._use_cuda:             # <<<<<<<<<<<<<<
 *             raise CudaNotEnabledError()
 *         elif self._cuda_buffers_are_mapped:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_use_cuda_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":105
 *         """ Map OpenGL buffer to CUDA for reading. """
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()             # <<<<<<<<<<<<<<
 *         elif self._cuda_buffers_are_mapped:
 *             return  # just make it a no-op
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_CudaNotEnabledError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 105, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 105, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 105, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":104
 *     def map(self):
 *         """ Map OpenGL buffer to CUDA for reading. """
 *         if not self._use_cuda:             # <<<<<<<<<<<<<<
 *             raise CudaNotEnabledError()
 *         elif self._cuda_buffers_are_mapped:
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":106
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()
 *         elif self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             return  # just make it a no-op
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_buffers_are_mapped); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":107
 *             raise CudaNotEnabledError()
 *         elif self._cuda_buffers_are_mapped:
 *             return  # just make it a no-op             # <<<<<<<<<<<<<<
 * 
 *         self._cuda_context.push()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "mujoco_py/mjbatchrenderer.pyx":106
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()
 *         elif self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             return  # just make it a no-op
 * 
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":109
 *             return  # just make it a no-op
 * 
 *         self._cuda_context.push()             # <<<<<<<<<<<<<<
 *         self._cuda_rgb_mapping = self._cuda_rgb_pbo.map()
 *         ptr, self._cuda_rgb_buf_size = (
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_context); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_push); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 109, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":110
 * 
 *         self._cuda_context.push()
 *         self._cuda_rgb_mapping = self._cuda_rgb_pbo.map()             # <<<<<<<<<<<<<<
 *         ptr, self._cuda_rgb_buf_size = (
 *             self._cuda_rgb_mapping.device_ptr_and_size())
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_pbo); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_map); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 110, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 110, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_mapping, __pyx_t_1) < 0) __PYX_ERR(2, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":112
 *         self._cuda_rgb_mapping = self._cuda_rgb_pbo.map()
 *         ptr, self._cuda_rgb_buf_size = (
 *             self._cuda_rgb_mapping.device_ptr_and_size())             # <<<<<<<<<<<<<<
 *         assert ptr is not None and self._cuda_rgb_buf_size > 0
 *         if self._cuda_rgb_ptr is None:
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_mapping); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_device_ptr_and_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 112, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 112, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(2, 111, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
    index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_5);
    index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(2, 111, __pyx_L1_error)
    __pyx_t_7 = NULL;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L5_unpacking_done;
    __pyx_L4_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(2, 111, __pyx_L1_error)
    __pyx_L5_unpacking_done:;
  }

  /* "mujoco_py/mjbatchrenderer.pyx":111
 *         self._cuda_context.push()
 *         self._cuda_rgb_mapping = self._cuda_rgb_pbo.map()
 *         ptr, self._cuda_rgb_buf_size = (             # <<<<<<<<<<<<<<
 *             self._cuda_rgb_mapping.device_ptr_and_size())
 *         assert ptr is not None and self._cuda_rgb_buf_size > 0
 */
  __pyx_v_ptr = __pyx_t_5;
  __pyx_t_5 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_buf_size, __pyx_t_4) < 0) __PYX_ERR(2, 111, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":113
 *         ptr, self._cuda_rgb_buf_size = (
 *             self._cuda_rgb_mapping.device_ptr_and_size())
 *         assert ptr is not None and self._cuda_rgb_buf_size > 0             # <<<<<<<<<<<<<<
 *         if self._cuda_rgb_ptr is None:
 *             self._cuda_rgb_ptr = ptr
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_2 = (__pyx_v_ptr != Py_None);
    __pyx_t_8 = (__pyx_t_2 != 0);
    if (__pyx_t_8) {
    } else {
      __pyx_t_3 = __pyx_t_8;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_buf_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(2, 113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __pyx_t_8;
    __pyx_L6_bool_binop_done:;
    if (unlikely(!__pyx_t_3)) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(2, 113, __pyx_L1_error)
    }
  }
  #endif

  /* "mujoco_py/mjbatchrenderer.pyx":114
 *             self._cuda_rgb_mapping.device_ptr_and_size())
 *         assert ptr is not None and self._cuda_rgb_buf_size > 0
 *         if self._cuda_rgb_ptr is None:             # <<<<<<<<<<<<<<
 *             self._cuda_rgb_ptr = ptr
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_ptr); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = (__pyx_t_4 == Py_None);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_8 = (__pyx_t_3 != 0);
  if (__pyx_t_8) {

    /* "mujoco_py/mjbatchrenderer.pyx":115
 *         assert ptr is not None and self._cuda_rgb_buf_size > 0
 *         if self._cuda_rgb_ptr is None:
 *             self._cuda_rgb_ptr = ptr             # <<<<<<<<<<<<<<
 * 
 *         # There doesn't seem to be a guarantee from the API that the
 */
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_ptr, __pyx_v_ptr) < 0) __PYX_ERR(2, 115, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":114
 *             self._cuda_rgb_mapping.device_ptr_and_size())
 *         assert ptr is not None and self._cuda_rgb_buf_size > 0
 *         if self._cuda_rgb_ptr is None:             # <<<<<<<<<<<<<<
 *             self._cuda_rgb_ptr = ptr
 * 
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":122
 *         # the interface to MjBatchRenderer to make this clearer to user.
 *         # So, hopefully we won't hit this assert.
 *         assert self._cuda_rgb_ptr == ptr, (             # <<<<<<<<<<<<<<
 *             "Mapped CUDA rgb buffer pointer %d doesn't match old pointer %d" %
 *             (ptr, self._cuda_rgb_ptr))
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_ptr); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_v_ptr, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 122, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(2, 122, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_8)) {

      /* "mujoco_py/mjbatchrenderer.pyx":124
 *         assert self._cuda_rgb_ptr == ptr, (
 *             "Mapped CUDA rgb buffer pointer %d doesn't match old pointer %d" %
 *             (ptr, self._cuda_rgb_ptr))             # <<<<<<<<<<<<<<
 * 
 *         if self._depth:
 */
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_ptr); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 124, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 124, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_ptr);
      __Pyx_GIVEREF(__pyx_v_ptr);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_ptr);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "mujoco_py/mjbatchrenderer.pyx":123
 *         # So, hopefully we won't hit this assert.
 *         assert self._cuda_rgb_ptr == ptr, (
 *             "Mapped CUDA rgb buffer pointer %d doesn't match old pointer %d" %             # <<<<<<<<<<<<<<
 *             (ptr, self._cuda_rgb_ptr))
 * 
 */
      __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_Mapped_CUDA_rgb_buffer_pointer_d, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      PyErr_SetObject(PyExc_AssertionError, __pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(2, 122, __pyx_L1_error)
    }
  }
  #endif

  /* "mujoco_py/mjbatchrenderer.pyx":126
 *             (ptr, self._cuda_rgb_ptr))
 * 
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             self._cuda_depth_mapping = self._cuda_depth_pbo.map()
 *             ptr, self._cuda_depth_buf_size = (
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(2, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_8) {

    /* "mujoco_py/mjbatchrenderer.pyx":127
 * 
 *         if self._depth:
 *             self._cuda_depth_mapping = self._cuda_depth_pbo.map()             # <<<<<<<<<<<<<<
 *             ptr, self._cuda_depth_buf_size = (
 *                 self._cuda_depth_mapping.device_ptr_and_size())
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_pbo); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_map); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 127, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 127, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_mapping, __pyx_t_1) < 0) __PYX_ERR(2, 127, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":129
 *             self._cuda_depth_mapping = self._cuda_depth_pbo.map()
 *             ptr, self._cuda_depth_buf_size = (
 *                 self._cuda_depth_mapping.device_ptr_and_size())             # <<<<<<<<<<<<<<
 *             assert ptr is not None and self._cuda_depth_buf_size > 0
 *             if self._cuda_depth_ptr is None:
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_mapping); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_device_ptr_and_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 129, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 129, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
      PyObject* sequence = __pyx_t_1;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(2, 128, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L10_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L10_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(2, 128, __pyx_L1_error)
      __pyx_t_7 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L11_unpacking_done;
      __pyx_L10_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(2, 128, __pyx_L1_error)
      __pyx_L11_unpacking_done:;
    }

    /* "mujoco_py/mjbatchrenderer.pyx":128
 *         if self._depth:
 *             self._cuda_depth_mapping = self._cuda_depth_pbo.map()
 *             ptr, self._cuda_depth_buf_size = (             # <<<<<<<<<<<<<<
 *                 self._cuda_depth_mapping.device_ptr_and_size())
 *             assert ptr is not None and self._cuda_depth_buf_size > 0
 */
    __Pyx_DECREF_SET(__pyx_v_ptr, __pyx_t_4);
    __pyx_t_4 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_buf_size, __pyx_t_5) < 0) __PYX_ERR(2, 128, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":130
 *             ptr, self._cuda_depth_buf_size = (
 *                 self._cuda_depth_mapping.device_ptr_and_size())
 *             assert ptr is not None and self._cuda_depth_buf_size > 0             # <<<<<<<<<<<<<<
 *             if self._cuda_depth_ptr is None:
 *                 self._cuda_depth_ptr = ptr
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      __pyx_t_3 = (__pyx_v_ptr != Py_None);
      __pyx_t_2 = (__pyx_t_3 != 0);
      if (__pyx_t_2) {
      } else {
        __pyx_t_8 = __pyx_t_2;
        goto __pyx_L12_bool_binop_done;
      }
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_buf_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 130, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 130, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = __pyx_t_2;
      __pyx_L12_bool_binop_done:;
      if (unlikely(!__pyx_t_8)) {
        PyErr_SetNone(PyExc_AssertionError);
        __PYX_ERR(2, 130, __pyx_L1_error)
      }
    }
    #endif

    /* "mujoco_py/mjbatchrenderer.pyx":131
 *                 self._cuda_depth_mapping.device_ptr_and_size())
 *             assert ptr is not None and self._cuda_depth_buf_size > 0
 *             if self._cuda_depth_ptr is None:             # <<<<<<<<<<<<<<
 *                 self._cuda_depth_ptr = ptr
 *             assert self._cuda_depth_ptr == ptr, (
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_ptr); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = (__pyx_t_5 == Py_None);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_2 = (__pyx_t_8 != 0);
    if (__pyx_t_2) {

      /* "mujoco_py/mjbatchrenderer.pyx":132
 *             assert ptr is not None and self._cuda_depth_buf_size > 0
 *             if self._cuda_depth_ptr is None:
 *                 self._cuda_depth_ptr = ptr             # <<<<<<<<<<<<<<
 *             assert self._cuda_depth_ptr == ptr, (
 *                 "Mapped CUDA depth buffer pointer %d doesn't match old pointer %d" %
 */
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_ptr, __pyx_v_ptr) < 0) __PYX_ERR(2, 132, __pyx_L1_error)

      /* "mujoco_py/mjbatchrenderer.pyx":131
 *                 self._cuda_depth_mapping.device_ptr_and_size())
 *             assert ptr is not None and self._cuda_depth_buf_size > 0
 *             if self._cuda_depth_ptr is None:             # <<<<<<<<<<<<<<
 *                 self._cuda_depth_ptr = ptr
 *             assert self._cuda_depth_ptr == ptr, (
 */
    }

    /* "mujoco_py/mjbatchrenderer.pyx":133
 *             if self._cuda_depth_ptr is None:
 *                 self._cuda_depth_ptr = ptr
 *             assert self._cuda_depth_ptr == ptr, (             # <<<<<<<<<<<<<<
 *                 "Mapped CUDA depth buffer pointer %d doesn't match old pointer %d" %
 *                 (ptr, self._cuda_depth_ptr))
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_ptr); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_v_ptr, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 133, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 133, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_2)) {

        /* "mujoco_py/mjbatchrenderer.pyx":135
 *             assert self._cuda_depth_ptr == ptr, (
 *                 "Mapped CUDA depth buffer pointer %d doesn't match old pointer %d" %
 *                 (ptr, self._cuda_depth_ptr))             # <<<<<<<<<<<<<<
 * 
 *         self._cuda_buffers_are_mapped = True
 */
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_ptr); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 135, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 135, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_ptr);
        __Pyx_GIVEREF(__pyx_v_ptr);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_ptr);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
        __pyx_t_1 = 0;

        /* "mujoco_py/mjbatchrenderer.pyx":134
 *                 self._cuda_depth_ptr = ptr
 *             assert self._cuda_depth_ptr == ptr, (
 *                 "Mapped CUDA depth buffer pointer %d doesn't match old pointer %d" %             # <<<<<<<<<<<<<<
 *                 (ptr, self._cuda_depth_ptr))
 * 
 */
        __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_Mapped_CUDA_depth_buffer_pointer, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 134, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        PyErr_SetObject(PyExc_AssertionError, __pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(2, 133, __pyx_L1_error)
      }
    }
    #endif

    /* "mujoco_py/mjbatchrenderer.pyx":126
 *             (ptr, self._cuda_rgb_ptr))
 * 
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             self._cuda_depth_mapping = self._cuda_depth_pbo.map()
 *             ptr, self._cuda_depth_buf_size = (
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":137
 *                 (ptr, self._cuda_depth_ptr))
 * 
 *         self._cuda_buffers_are_mapped = True             # <<<<<<<<<<<<<<
 * 
 *     def unmap(self):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_buffers_are_mapped, Py_True) < 0) __PYX_ERR(2, 137, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":102
 *             self._cuda_depth_pbo = RegisteredBuffer(self.pbo_depth)
 * 
 *     def map(self):             # <<<<<<<<<<<<<<
 *         """ Map OpenGL buffer to CUDA for reading. """
 *         if not self._use_cuda:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ptr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":139
 *         self._cuda_buffers_are_mapped = True
 * 
 *     def unmap(self):             # <<<<<<<<<<<<<<
 *         """ Unmap OpenGL buffer from CUDA so that it can be rendered into. """
 *         if not self._use_cuda:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_7unmap(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_6unmap[] = " Unmap OpenGL buffer from CUDA so that it can be rendered into. ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_7unmap = {"unmap", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_7unmap, METH_O, __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_6unmap};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_7unmap(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unmap (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_6unmap(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_6unmap(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("unmap", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":141
 *     def unmap(self):
 *         """ Unmap OpenGL buffer from CUDA so that it can be rendered into. """
 *         if not self._use_cuda:             # <<<<<<<<<<<<<<
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_use_cuda_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":142
 *         """ Unmap OpenGL buffer from CUDA so that it can be rendered into. """
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()             # <<<<<<<<<<<<<<
 *         elif not self._cuda_buffers_are_mapped:
 *             return  # just make it a no-op
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_CudaNotEnabledError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 142, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 142, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":141
 *     def unmap(self):
 *         """ Unmap OpenGL buffer from CUDA so that it can be rendered into. """
 *         if not self._use_cuda:             # <<<<<<<<<<<<<<
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":143
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             return  # just make it a no-op
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_buffers_are_mapped); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = ((!__pyx_t_3) != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/mjbatchrenderer.pyx":144
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:
 *             return  # just make it a no-op             # <<<<<<<<<<<<<<
 * 
 *         self._cuda_context.push()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "mujoco_py/mjbatchrenderer.pyx":143
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             return  # just make it a no-op
 * 
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":146
 *             return  # just make it a no-op
 * 
 *         self._cuda_context.push()             # <<<<<<<<<<<<<<
 *         self._cuda_rgb_mapping.unmap()
 *         self._cuda_rgb_mapping = None
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_context); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_push); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 146, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 146, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":147
 * 
 *         self._cuda_context.push()
 *         self._cuda_rgb_mapping.unmap()             # <<<<<<<<<<<<<<
 *         self._cuda_rgb_mapping = None
 *         self._cuda_rgb_ptr = None
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_mapping); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_unmap); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 147, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 147, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":148
 *         self._cuda_context.push()
 *         self._cuda_rgb_mapping.unmap()
 *         self._cuda_rgb_mapping = None             # <<<<<<<<<<<<<<
 *         self._cuda_rgb_ptr = None
 *         if self._depth:
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_mapping, Py_None) < 0) __PYX_ERR(2, 148, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":149
 *         self._cuda_rgb_mapping.unmap()
 *         self._cuda_rgb_mapping = None
 *         self._cuda_rgb_ptr = None             # <<<<<<<<<<<<<<
 *         if self._depth:
 *             self._cuda_depth_mapping.unmap()
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_ptr, Py_None) < 0) __PYX_ERR(2, 149, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":150
 *         self._cuda_rgb_mapping = None
 *         self._cuda_rgb_ptr = None
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             self._cuda_depth_mapping.unmap()
 *             self._cuda_depth_mapping = None
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "mujoco_py/mjbatchrenderer.pyx":151
 *         self._cuda_rgb_ptr = None
 *         if self._depth:
 *             self._cuda_depth_mapping.unmap()             # <<<<<<<<<<<<<<
 *             self._cuda_depth_mapping = None
 *             self._cuda_depth_ptr = None
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_mapping); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_unmap); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 151, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 151, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":152
 *         if self._depth:
 *             self._cuda_depth_mapping.unmap()
 *             self._cuda_depth_mapping = None             # <<<<<<<<<<<<<<
 *             self._cuda_depth_ptr = None
 * 
 */
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_mapping, Py_None) < 0) __PYX_ERR(2, 152, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":153
 *             self._cuda_depth_mapping.unmap()
 *             self._cuda_depth_mapping = None
 *             self._cuda_depth_ptr = None             # <<<<<<<<<<<<<<
 * 
 *         self._cuda_buffers_are_mapped = False
 */
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_ptr, Py_None) < 0) __PYX_ERR(2, 153, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":150
 *         self._cuda_rgb_mapping = None
 *         self._cuda_rgb_ptr = None
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             self._cuda_depth_mapping.unmap()
 *             self._cuda_depth_mapping = None
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":155
 *             self._cuda_depth_ptr = None
 * 
 *         self._cuda_buffers_are_mapped = False             # <<<<<<<<<<<<<<
 * 
 *     def prepare_render_context(self, sim):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cuda_buffers_are_mapped, Py_False) < 0) __PYX_ERR(2, 155, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":139
 *         self._cuda_buffers_are_mapped = True
 * 
 *     def unmap(self):             # <<<<<<<<<<<<<<
 *         """ Unmap OpenGL buffer from CUDA so that it can be rendered into. """
 *         if not self._use_cuda:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.unmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":157
 *         self._cuda_buffers_are_mapped = False
 * 
 *     def prepare_render_context(self, sim):             # <<<<<<<<<<<<<<
 *         """
 *         Set up the rendering context for an MjSim. Also happens automatically
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_9prepare_render_context(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_8prepare_render_context[] = "\n        Set up the rendering context for an MjSim. Also happens automatically\n        on `.render()`.\n        ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_9prepare_render_context = {"prepare_render_context", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_9prepare_render_context, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_8prepare_render_context};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_9prepare_render_context(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_sim = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("prepare_render_context (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_sim,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sim)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("prepare_render_context", 1, 2, 2, 1); __PYX_ERR(2, 157, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "prepare_render_context") < 0)) __PYX_ERR(2, 157, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_sim = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("prepare_render_context", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 157, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.prepare_render_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_8prepare_render_context(__pyx_self, __pyx_v_self, __pyx_v_sim);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_8prepare_render_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_sim) {
  PyObject *__pyx_v_c = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  __Pyx_RefNannySetupContext("prepare_render_context", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":162
 *         on `.render()`.
 *         """
 *         for c in sim.render_contexts:             # <<<<<<<<<<<<<<
 *             if (c.offscreen and
 *                     isinstance(c.opengl_context, OffscreenOpenGLContext) and
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sim, __pyx_n_s_render_contexts); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 162, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(2, 162, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 162, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(2, 162, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 162, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 162, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_c, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":163
 *         """
 *         for c in sim.render_contexts:
 *             if (c.offscreen and             # <<<<<<<<<<<<<<
 *                     isinstance(c.opengl_context, OffscreenOpenGLContext) and
 *                     c.opengl_context.device_id == self._device_id):
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_c, __pyx_n_s_offscreen); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 163, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L6_bool_binop_done;
    }

    /* "mujoco_py/mjbatchrenderer.pyx":164
 *         for c in sim.render_contexts:
 *             if (c.offscreen and
 *                     isinstance(c.opengl_context, OffscreenOpenGLContext) and             # <<<<<<<<<<<<<<
 *                     c.opengl_context.device_id == self._device_id):
 *                 return c
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_c, __pyx_n_s_opengl_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_OffscreenOpenGLContext); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyObject_IsInstance(__pyx_t_1, __pyx_t_7); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 164, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (__pyx_t_8) {
    } else {
      __pyx_t_5 = __pyx_t_8;
      goto __pyx_L6_bool_binop_done;
    }

    /* "mujoco_py/mjbatchrenderer.pyx":165
 *             if (c.offscreen and
 *                     isinstance(c.opengl_context, OffscreenOpenGLContext) and
 *                     c.opengl_context.device_id == self._device_id):             # <<<<<<<<<<<<<<
 *                 return c
 * 
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_c, __pyx_n_s_opengl_context); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_device_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_device_id_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = PyObject_RichCompare(__pyx_t_1, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 165, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(2, 165, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_5 = __pyx_t_8;
    __pyx_L6_bool_binop_done:;

    /* "mujoco_py/mjbatchrenderer.pyx":163
 *         """
 *         for c in sim.render_contexts:
 *             if (c.offscreen and             # <<<<<<<<<<<<<<
 *                     isinstance(c.opengl_context, OffscreenOpenGLContext) and
 *                     c.opengl_context.device_id == self._device_id):
 */
    if (__pyx_t_5) {

      /* "mujoco_py/mjbatchrenderer.pyx":166
 *                     isinstance(c.opengl_context, OffscreenOpenGLContext) and
 *                     c.opengl_context.device_id == self._device_id):
 *                 return c             # <<<<<<<<<<<<<<
 * 
 *         return MjRenderContext(sim, device_id=self._device_id)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_c);
      __pyx_r = __pyx_v_c;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "mujoco_py/mjbatchrenderer.pyx":163
 *         """
 *         for c in sim.render_contexts:
 *             if (c.offscreen and             # <<<<<<<<<<<<<<
 *                     isinstance(c.opengl_context, OffscreenOpenGLContext) and
 *                     c.opengl_context.device_id == self._device_id):
 */
    }

    /* "mujoco_py/mjbatchrenderer.pyx":162
 *         on `.render()`.
 *         """
 *         for c in sim.render_contexts:             # <<<<<<<<<<<<<<
 *             if (c.offscreen and
 *                     isinstance(c.opengl_context, OffscreenOpenGLContext) and
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":168
 *                 return c
 * 
 *         return MjRenderContext(sim, device_id=self._device_id)             # <<<<<<<<<<<<<<
 * 
 *     def render(self, sim, camera_id=None, batch_offset=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_sim);
  __Pyx_GIVEREF(__pyx_v_sim);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sim);
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_device_id_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_device_id, __pyx_t_7) < 0) __PYX_ERR(2, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_MjRenderContext), __pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjbatchrenderer.pyx":157
 *         self._cuda_buffers_are_mapped = False
 * 
 *     def prepare_render_context(self, sim):             # <<<<<<<<<<<<<<
 *         """
 *         Set up the rendering context for an MjSim. Also happens automatically
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.prepare_render_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":170
 *         return MjRenderContext(sim, device_id=self._device_id)
 * 
 *     def render(self, sim, camera_id=None, batch_offset=None):             # <<<<<<<<<<<<<<
 *         """
 *         Render current scene from the MjSim into the buffer. By
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_11render(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_10render[] = "\n        Render current scene from the MjSim into the buffer. By\n        default the batch offset is automatically incremented with\n        each call. It can be reset with the batch_offset parameter.\n\n        This method doesn't return anything. Use the `.read` method\n        to read the buffer, or access the buffer pointer directly with\n        e.g. `.cuda_rgb_buffer_pointer` accessor.\n\n        Args:\n        - sim (MjSim): The simulator to use for rendering.\n        - camera_id (int): MuJoCo id for the camera, from\n            `sim.model.camera_name2id()`.\n        - batch_offset (int): offset in batch to render to.\n        ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_11render = {"render", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_11render, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_10render};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_11render(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_sim = 0;
  PyObject *__pyx_v_camera_id = 0;
  PyObject *__pyx_v_batch_offset = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("render (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_sim,&__pyx_n_s_camera_id,&__pyx_n_s_batch_offset,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)((PyObject *)Py_None));
    values[3] = ((PyObject *)((PyObject *)Py_None));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sim)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("render", 0, 2, 4, 1); __PYX_ERR(2, 170, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_camera_id);
          if (value) { values[2] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_batch_offset);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(2, 170, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_sim = values[1];
    __pyx_v_camera_id = values[2];
    __pyx_v_batch_offset = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("render", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 170, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.render", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_10render(__pyx_self, __pyx_v_self, __pyx_v_sim, __pyx_v_camera_id, __pyx_v_batch_offset);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_10render(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_sim, PyObject *__pyx_v_camera_id, PyObject *__pyx_v_batch_offset) {
  PyObject *__pyx_v_render_context = NULL;
  mjrRect __pyx_v_viewport;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *__pyx_v_con = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  unsigned int __pyx_t_10;
  unsigned int __pyx_t_11;
  __Pyx_RefNannySetupContext("render", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":186
 *         - batch_offset (int): offset in batch to render to.
 *         """
 *         if self._use_cuda and self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             raise CudaBufferMappedError(
 *                 "CUDA buffers must be unmapped before calling render.")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_use_cuda_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_buffers_are_mapped); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "mujoco_py/mjbatchrenderer.pyx":187
 *         """
 *         if self._use_cuda and self._cuda_buffers_are_mapped:
 *             raise CudaBufferMappedError(             # <<<<<<<<<<<<<<
 *                 "CUDA buffers must be unmapped before calling render.")
 * 
 */
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_CudaBufferMappedError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__132, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 187, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":186
 *         - batch_offset (int): offset in batch to render to.
 *         """
 *         if self._use_cuda and self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             raise CudaBufferMappedError(
 *                 "CUDA buffers must be unmapped before calling render.")
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":190
 *                 "CUDA buffers must be unmapped before calling render.")
 * 
 *         if batch_offset is not None:             # <<<<<<<<<<<<<<
 *             if batch_offset < 0 or batch_offset >= self._batch_size:
 *                 raise ValueError("batch_offset out of range")
 */
  __pyx_t_1 = (__pyx_v_batch_offset != Py_None);
  __pyx_t_3 = (__pyx_t_1 != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":191
 * 
 *         if batch_offset is not None:
 *             if batch_offset < 0 or batch_offset >= self._batch_size:             # <<<<<<<<<<<<<<
 *                 raise ValueError("batch_offset out of range")
 *             self._current_batch_offset = batch_offset
 */
    __pyx_t_4 = PyObject_RichCompare(__pyx_v_batch_offset, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 191, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 191, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_3 = __pyx_t_1;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_batch_offset, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 191, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 191, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_3 = __pyx_t_1;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_3) {

      /* "mujoco_py/mjbatchrenderer.pyx":192
 *         if batch_offset is not None:
 *             if batch_offset < 0 or batch_offset >= self._batch_size:
 *                 raise ValueError("batch_offset out of range")             # <<<<<<<<<<<<<<
 *             self._current_batch_offset = batch_offset
 * 
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__133, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 192, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(2, 192, __pyx_L1_error)

      /* "mujoco_py/mjbatchrenderer.pyx":191
 * 
 *         if batch_offset is not None:
 *             if batch_offset < 0 or batch_offset >= self._batch_size:             # <<<<<<<<<<<<<<
 *                 raise ValueError("batch_offset out of range")
 *             self._current_batch_offset = batch_offset
 */
    }

    /* "mujoco_py/mjbatchrenderer.pyx":193
 *             if batch_offset < 0 or batch_offset >= self._batch_size:
 *                 raise ValueError("batch_offset out of range")
 *             self._current_batch_offset = batch_offset             # <<<<<<<<<<<<<<
 * 
 *         # Ensure the correct device context is used (this takes ~1 s)
 */
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_current_batch_offset, __pyx_v_batch_offset) < 0) __PYX_ERR(2, 193, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":190
 *                 "CUDA buffers must be unmapped before calling render.")
 * 
 *         if batch_offset is not None:             # <<<<<<<<<<<<<<
 *             if batch_offset < 0 or batch_offset >= self._batch_size:
 *                 raise ValueError("batch_offset out of range")
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":196
 * 
 *         # Ensure the correct device context is used (this takes ~1 s)
 *         makeOpenGLContextCurrent(self._device_id)             # <<<<<<<<<<<<<<
 * 
 *         render_context = self.prepare_render_context(sim)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_device_id_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  makeOpenGLContextCurrent(__pyx_t_5);

  /* "mujoco_py/mjbatchrenderer.pyx":198
 *         makeOpenGLContextCurrent(self._device_id)
 * 
 *         render_context = self.prepare_render_context(sim)             # <<<<<<<<<<<<<<
 *         render_context.update_offscreen_size(self._width, self._height)
 *         render_context.render(self._width, self._height, camera_id=camera_id)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_prepare_render_context); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_sim); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_sim};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 198, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_sim};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 198, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_sim);
      __Pyx_GIVEREF(__pyx_v_sim);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_sim);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_render_context = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":199
 * 
 *         render_context = self.prepare_render_context(sim)
 *         render_context.update_offscreen_size(self._width, self._height)             # <<<<<<<<<<<<<<
 *         render_context.render(self._width, self._height, camera_id=camera_id)
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_render_context, __pyx_n_s_update_offscreen_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_7, __pyx_t_6};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 199, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_7, __pyx_t_6};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 199, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  {
    __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_t_6);
    __pyx_t_7 = 0;
    __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":200
 *         render_context = self.prepare_render_context(sim)
 *         render_context.update_offscreen_size(self._width, self._height)
 *         render_context.render(self._width, self._height, camera_id=camera_id)             # <<<<<<<<<<<<<<
 * 
 *         cdef mjrRect viewport
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_render_context, __pyx_n_s_render); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_9);
  __pyx_t_4 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_camera_id, __pyx_v_camera_id) < 0) __PYX_ERR(2, 200, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":203
 * 
 *         cdef mjrRect viewport
 *         viewport.left = 0             # <<<<<<<<<<<<<<
 *         viewport.bottom = 0
 *         viewport.width = self._width
 */
  __pyx_v_viewport.left = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":204
 *         cdef mjrRect viewport
 *         viewport.left = 0
 *         viewport.bottom = 0             # <<<<<<<<<<<<<<
 *         viewport.width = self._width
 *         viewport.height = self._height
 */
  __pyx_v_viewport.bottom = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":205
 *         viewport.left = 0
 *         viewport.bottom = 0
 *         viewport.width = self._width             # <<<<<<<<<<<<<<
 *         viewport.height = self._height
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_viewport.width = __pyx_t_5;

  /* "mujoco_py/mjbatchrenderer.pyx":206
 *         viewport.bottom = 0
 *         viewport.width = self._width
 *         viewport.height = self._height             # <<<<<<<<<<<<<<
 * 
 *         cdef PyMjrContext con = <PyMjrContext> render_context.con
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_viewport.height = __pyx_t_5;

  /* "mujoco_py/mjbatchrenderer.pyx":208
 *         viewport.height = self._height
 * 
 *         cdef PyMjrContext con = <PyMjrContext> render_context.con             # <<<<<<<<<<<<<<
 *         copyFBOToPBO(con.ptr, self.pbo_rgb, self.pbo_depth,
 *                      viewport, self._current_batch_offset)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_render_context, __pyx_n_s_con); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_9 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":209
 * 
 *         cdef PyMjrContext con = <PyMjrContext> render_context.con
 *         copyFBOToPBO(con.ptr, self.pbo_rgb, self.pbo_depth,             # <<<<<<<<<<<<<<
 *                      viewport, self._current_batch_offset)
 * 
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_rgb); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_PyInt_As_unsigned_int(__pyx_t_9); if (unlikely((__pyx_t_10 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(2, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_depth); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_11 = __Pyx_PyInt_As_unsigned_int(__pyx_t_9); if (unlikely((__pyx_t_11 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(2, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":210
 *         cdef PyMjrContext con = <PyMjrContext> render_context.con
 *         copyFBOToPBO(con.ptr, self.pbo_rgb, self.pbo_depth,
 *                      viewport, self._current_batch_offset)             # <<<<<<<<<<<<<<
 * 
 *         self._current_batch_offset = (self._current_batch_offset + 1) % self._batch_size
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_current_batch_offset); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":209
 * 
 *         cdef PyMjrContext con = <PyMjrContext> render_context.con
 *         copyFBOToPBO(con.ptr, self.pbo_rgb, self.pbo_depth,             # <<<<<<<<<<<<<<
 *                      viewport, self._current_batch_offset)
 * 
 */
  copyFBOToPBO(__pyx_v_con->ptr, __pyx_t_10, __pyx_t_11, __pyx_v_viewport, __pyx_t_5);

  /* "mujoco_py/mjbatchrenderer.pyx":212
 *                      viewport, self._current_batch_offset)
 * 
 *         self._current_batch_offset = (self._current_batch_offset + 1) % self._batch_size             # <<<<<<<<<<<<<<
 * 
 *     def read(self):
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_current_batch_offset); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = PyNumber_Remainder(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_current_batch_offset, __pyx_t_6) < 0) __PYX_ERR(2, 212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":170
 *         return MjRenderContext(sim, device_id=self._device_id)
 * 
 *     def render(self, sim, camera_id=None, batch_offset=None):             # <<<<<<<<<<<<<<
 *         """
 *         Render current scene from the MjSim into the buffer. By
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.render", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_render_context);
  __Pyx_XDECREF((PyObject *)__pyx_v_con);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":214
 *         self._current_batch_offset = (self._current_batch_offset + 1) % self._batch_size
 * 
 *     def read(self):             # <<<<<<<<<<<<<<
 *         """
 *         Transfer a copy of the buffer from the GPU to the CPU as a numpy array.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_13read(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_12read[] = "\n        Transfer a copy of the buffer from the GPU to the CPU as a numpy array.\n\n        Returns:\n        - rgb_batch (numpy array): batch of rgb images in uint8 NHWC format\n        - depth_batch (numpy array): batch of depth images in uint16 NHWC format\n        ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_13read = {"read", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_13read, METH_O, __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_12read};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_13read(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_12read(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_12read(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("read", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":222
 *         - depth_batch (numpy array): batch of depth images in uint16 NHWC format
 *         """
 *         if self._use_cuda:             # <<<<<<<<<<<<<<
 *             return self._read_cuda()
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_use_cuda_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "mujoco_py/mjbatchrenderer.pyx":223
 *         """
 *         if self._use_cuda:
 *             return self._read_cuda()             # <<<<<<<<<<<<<<
 *         else:
 *             return self._read_nocuda()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_read_cuda); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 223, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 223, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "mujoco_py/mjbatchrenderer.pyx":222
 *         - depth_batch (numpy array): batch of depth images in uint16 NHWC format
 *         """
 *         if self._use_cuda:             # <<<<<<<<<<<<<<
 *             return self._read_cuda()
 *         else:
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":225
 *             return self._read_cuda()
 *         else:
 *             return self._read_nocuda()             # <<<<<<<<<<<<<<
 * 
 *     def _read_cuda(self):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_read_nocuda); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 225, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 225, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "mujoco_py/mjbatchrenderer.pyx":214
 *         self._current_batch_offset = (self._current_batch_offset + 1) % self._batch_size
 * 
 *     def read(self):             # <<<<<<<<<<<<<<
 *         """
 *         Transfer a copy of the buffer from the GPU to the CPU as a numpy array.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":227
 *             return self._read_nocuda()
 * 
 *     def _read_cuda(self):             # <<<<<<<<<<<<<<
 *         if not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError(
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_15_read_cuda(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_15_read_cuda = {"_read_cuda", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_15_read_cuda, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_15_read_cuda(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_cuda (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_14_read_cuda(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_14_read_cuda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_rgb_arr = NULL;
  PyObject *__pyx_v_depth_arr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  __Pyx_RefNannySetupContext("_read_cuda", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":228
 * 
 *     def _read_cuda(self):
 *         if not self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             raise CudaBufferNotMappedError(
 *                 "CUDA buffers must be mapped before reading")
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_buffers_are_mapped); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":229
 *     def _read_cuda(self):
 *         if not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError(             # <<<<<<<<<<<<<<
 *                 "CUDA buffers must be mapped before reading")
 * 
 */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_CudaBufferNotMappedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__134, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 229, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":228
 * 
 *     def _read_cuda(self):
 *         if not self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             raise CudaBufferNotMappedError(
 *                 "CUDA buffers must be mapped before reading")
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":232
 *                 "CUDA buffers must be mapped before reading")
 * 
 *         rgb_arr = drv.from_device(             # <<<<<<<<<<<<<<
 *             self._cuda_rgb_ptr,
 *             shape=(self._batch_size, self._height, self._width, 3),
 */
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_drv); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_from_device); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":233
 * 
 *         rgb_arr = drv.from_device(
 *             self._cuda_rgb_ptr,             # <<<<<<<<<<<<<<
 *             shape=(self._batch_size, self._height, self._width, 3),
 *             dtype=np.uint8)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_ptr); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "mujoco_py/mjbatchrenderer.pyx":232
 *                 "CUDA buffers must be mapped before reading")
 * 
 *         rgb_arr = drv.from_device(             # <<<<<<<<<<<<<<
 *             self._cuda_rgb_ptr,
 *             shape=(self._batch_size, self._height, self._width, 3),
 */
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":234
 *         rgb_arr = drv.from_device(
 *             self._cuda_rgb_ptr,
 *             shape=(self._batch_size, self._height, self._width, 3),             # <<<<<<<<<<<<<<
 *             dtype=np.uint8)
 * 
 */
  __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
  __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_9) < 0) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":235
 *             self._cuda_rgb_ptr,
 *             shape=(self._batch_size, self._height, self._width, 3),
 *             dtype=np.uint8)             # <<<<<<<<<<<<<<
 * 
 *         if self._depth:
 */
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_uint8); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":232
 *                 "CUDA buffers must be mapped before reading")
 * 
 *         rgb_arr = drv.from_device(             # <<<<<<<<<<<<<<
 *             self._cuda_rgb_ptr,
 *             shape=(self._batch_size, self._height, self._width, 3),
 */
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_rgb_arr = __pyx_t_8;
  __pyx_t_8 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":237
 *             dtype=np.uint8)
 * 
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             depth_arr = drv.from_device(
 *                 self._cuda_depth_ptr,
 */
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 237, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":238
 * 
 *         if self._depth:
 *             depth_arr = drv.from_device(             # <<<<<<<<<<<<<<
 *                 self._cuda_depth_ptr,
 *                 shape=(self._batch_size, self._height, self._width),
 */
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_drv); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_from_device); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":239
 *         if self._depth:
 *             depth_arr = drv.from_device(
 *                 self._cuda_depth_ptr,             # <<<<<<<<<<<<<<
 *                 shape=(self._batch_size, self._height, self._width),
 *                 dtype=np.uint16)
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_ptr); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);

    /* "mujoco_py/mjbatchrenderer.pyx":238
 * 
 *         if self._depth:
 *             depth_arr = drv.from_device(             # <<<<<<<<<<<<<<
 *                 self._cuda_depth_ptr,
 *                 shape=(self._batch_size, self._height, self._width),
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":240
 *             depth_arr = drv.from_device(
 *                 self._cuda_depth_ptr,
 *                 shape=(self._batch_size, self._height, self._width),             # <<<<<<<<<<<<<<
 *                 dtype=np.uint16)
 *         else:
 */
    __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_7);
    __pyx_t_1 = 0;
    __pyx_t_9 = 0;
    __pyx_t_7 = 0;
    if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(2, 240, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":241
 *                 self._cuda_depth_ptr,
 *                 shape=(self._batch_size, self._height, self._width),
 *                 dtype=np.uint16)             # <<<<<<<<<<<<<<
 *         else:
 *             depth_arr = None
 */
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_uint16); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(2, 240, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":238
 * 
 *         if self._depth:
 *             depth_arr = drv.from_device(             # <<<<<<<<<<<<<<
 *                 self._cuda_depth_ptr,
 *                 shape=(self._batch_size, self._height, self._width),
 */
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_v_depth_arr = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":237
 *             dtype=np.uint8)
 * 
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             depth_arr = drv.from_device(
 *                 self._cuda_depth_ptr,
 */
    goto __pyx_L4;
  }

  /* "mujoco_py/mjbatchrenderer.pyx":243
 *                 dtype=np.uint16)
 *         else:
 *             depth_arr = None             # <<<<<<<<<<<<<<
 * 
 *         return rgb_arr, depth_arr
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_depth_arr = Py_None;
  }
  __pyx_L4:;

  /* "mujoco_py/mjbatchrenderer.pyx":245
 *             depth_arr = None
 * 
 *         return rgb_arr, depth_arr             # <<<<<<<<<<<<<<
 * 
 *     def _read_nocuda(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_rgb_arr);
  __Pyx_GIVEREF(__pyx_v_rgb_arr);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_rgb_arr);
  __Pyx_INCREF(__pyx_v_depth_arr);
  __Pyx_GIVEREF(__pyx_v_depth_arr);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_depth_arr);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjbatchrenderer.pyx":227
 *             return self._read_nocuda()
 * 
 *     def _read_cuda(self):             # <<<<<<<<<<<<<<
 *         if not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer._read_cuda", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rgb_arr);
  __Pyx_XDECREF(__pyx_v_depth_arr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":247
 *         return rgb_arr, depth_arr
 * 
 *     def _read_nocuda(self):             # <<<<<<<<<<<<<<
 *         rgb_arr = np.zeros(3 * self._width * self._height * self._batch_size, dtype=np.uint8)
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_17_read_nocuda(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_17_read_nocuda = {"_read_nocuda", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_17_read_nocuda, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_17_read_nocuda(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_nocuda (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_16_read_nocuda(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_16_read_nocuda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_rgb_arr = NULL;
  __Pyx_memviewslice __pyx_v_rgb_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_v_depth_arr = NULL;
  __Pyx_memviewslice __pyx_v_depth_view = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_memviewslice __pyx_t_6 = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_t_7 = { 0, 0, { 0 }, { 0 }, { 0 } };
  int __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  unsigned int __pyx_t_12;
  unsigned int __pyx_t_13;
  int __pyx_t_14;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  Py_ssize_t __pyx_t_18;
  __Pyx_RefNannySetupContext("_read_nocuda", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":248
 * 
 *     def _read_nocuda(self):
 *         rgb_arr = np.zeros(3 * self._width * self._height * self._batch_size, dtype=np.uint8)             # <<<<<<<<<<<<<<
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 *         depth_arr = np.zeros(self._width * self._height * self._batch_size, dtype=np.uint16)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyNumber_Multiply(__pyx_int_3, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_rgb_arr = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":249
 *     def _read_nocuda(self):
 *         rgb_arr = np.zeros(3 * self._width * self._height * self._batch_size, dtype=np.uint8)
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr             # <<<<<<<<<<<<<<
 *         depth_arr = np.zeros(self._width * self._height * self._batch_size, dtype=np.uint16)
 *         cdef unsigned short[::view.contiguous] depth_view = depth_arr
 */
  __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(__pyx_v_rgb_arr);
  if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(2, 249, __pyx_L1_error)
  __pyx_v_rgb_view = __pyx_t_6;
  __pyx_t_6.memview = NULL;
  __pyx_t_6.data = NULL;

  /* "mujoco_py/mjbatchrenderer.pyx":250
 *         rgb_arr = np.zeros(3 * self._width * self._height * self._batch_size, dtype=np.uint8)
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 *         depth_arr = np.zeros(self._width * self._height * self._batch_size, dtype=np.uint16)             # <<<<<<<<<<<<<<
 *         cdef unsigned short[::view.contiguous] depth_view = depth_arr
 * 
 */
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Multiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint16); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_depth_arr = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":251
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 *         depth_arr = np.zeros(self._width * self._height * self._batch_size, dtype=np.uint16)
 *         cdef unsigned short[::view.contiguous] depth_view = depth_arr             # <<<<<<<<<<<<<<
 * 
 *         if self._depth:
 */
  __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_short(__pyx_v_depth_arr);
  if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(2, 251, __pyx_L1_error)
  __pyx_v_depth_view = __pyx_t_7;
  __pyx_t_7.memview = NULL;
  __pyx_t_7.data = NULL;

  /* "mujoco_py/mjbatchrenderer.pyx":253
 *         cdef unsigned short[::view.contiguous] depth_view = depth_arr
 * 
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             readPBO(&rgb_view[0], &depth_view[0], self.pbo_rgb, self.pbo_depth,
 *                     self._width, self._height, self._batch_size)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(2, 253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_8) {

    /* "mujoco_py/mjbatchrenderer.pyx":254
 * 
 *         if self._depth:
 *             readPBO(&rgb_view[0], &depth_view[0], self.pbo_rgb, self.pbo_depth,             # <<<<<<<<<<<<<<
 *                     self._width, self._height, self._batch_size)
 *             depth_arr = depth_arr.reshape(self._batch_size, self._height, self._width)
 */
    __pyx_t_9 = 0;
    __pyx_t_10 = -1;
    if (__pyx_t_9 < 0) {
      __pyx_t_9 += __pyx_v_rgb_view.shape[0];
      if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
    } else if (unlikely(__pyx_t_9 >= __pyx_v_rgb_view.shape[0])) __pyx_t_10 = 0;
    if (unlikely(__pyx_t_10 != -1)) {
      __Pyx_RaiseBufferIndexError(__pyx_t_10);
      __PYX_ERR(2, 254, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __pyx_t_10 = -1;
    if (__pyx_t_11 < 0) {
      __pyx_t_11 += __pyx_v_depth_view.shape[0];
      if (unlikely(__pyx_t_11 < 0)) __pyx_t_10 = 0;
    } else if (unlikely(__pyx_t_11 >= __pyx_v_depth_view.shape[0])) __pyx_t_10 = 0;
    if (unlikely(__pyx_t_10 != -1)) {
      __Pyx_RaiseBufferIndexError(__pyx_t_10);
      __PYX_ERR(2, 254, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_rgb); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_12 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(2, 254, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_depth); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_13 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(2, 254, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":255
 *         if self._depth:
 *             readPBO(&rgb_view[0], &depth_view[0], self.pbo_rgb, self.pbo_depth,
 *                     self._width, self._height, self._batch_size)             # <<<<<<<<<<<<<<
 *             depth_arr = depth_arr.reshape(self._batch_size, self._height, self._width)
 *         else:
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 255, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 255, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 255, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":254
 * 
 *         if self._depth:
 *             readPBO(&rgb_view[0], &depth_view[0], self.pbo_rgb, self.pbo_depth,             # <<<<<<<<<<<<<<
 *                     self._width, self._height, self._batch_size)
 *             depth_arr = depth_arr.reshape(self._batch_size, self._height, self._width)
 */
    readPBO((&(*((unsigned char *) ( /* dim=0 */ ((char *) (((unsigned char *) __pyx_v_rgb_view.data) + __pyx_t_9)) )))), (&(*((unsigned short *) ( /* dim=0 */ ((char *) (((unsigned short *) __pyx_v_depth_view.data) + __pyx_t_11)) )))), __pyx_t_12, __pyx_t_13, __pyx_t_10, __pyx_t_14, __pyx_t_15);

    /* "mujoco_py/mjbatchrenderer.pyx":256
 *             readPBO(&rgb_view[0], &depth_view[0], self.pbo_rgb, self.pbo_depth,
 *                     self._width, self._height, self._batch_size)
 *             depth_arr = depth_arr.reshape(self._batch_size, self._height, self._width)             # <<<<<<<<<<<<<<
 *         else:
 *             readPBO(&rgb_view[0], NULL, self.pbo_rgb, 0,
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_depth_arr, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_16 = NULL;
    __pyx_t_15 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_16)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_16);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_15 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_t_1, __pyx_t_3, __pyx_t_2};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_15, 3+__pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 256, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_t_1, __pyx_t_3, __pyx_t_2};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_15, 3+__pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 256, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    {
      __pyx_t_17 = PyTuple_New(3+__pyx_t_15); if (unlikely(!__pyx_t_17)) __PYX_ERR(2, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      if (__pyx_t_16) {
        __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_15, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_15, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_17, 2+__pyx_t_15, __pyx_t_2);
      __pyx_t_1 = 0;
      __pyx_t_3 = 0;
      __pyx_t_2 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF_SET(__pyx_v_depth_arr, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":253
 *         cdef unsigned short[::view.contiguous] depth_view = depth_arr
 * 
 *         if self._depth:             # <<<<<<<<<<<<<<
 *             readPBO(&rgb_view[0], &depth_view[0], self.pbo_rgb, self.pbo_depth,
 *                     self._width, self._height, self._batch_size)
 */
    goto __pyx_L3;
  }

  /* "mujoco_py/mjbatchrenderer.pyx":258
 *             depth_arr = depth_arr.reshape(self._batch_size, self._height, self._width)
 *         else:
 *             readPBO(&rgb_view[0], NULL, self.pbo_rgb, 0,             # <<<<<<<<<<<<<<
 *                     self._width, self._height, self._batch_size)
 *             # Fine to throw aray depth_arr above since malloc/free is cheap
 */
  /*else*/ {
    __pyx_t_18 = 0;
    __pyx_t_15 = -1;
    if (__pyx_t_18 < 0) {
      __pyx_t_18 += __pyx_v_rgb_view.shape[0];
      if (unlikely(__pyx_t_18 < 0)) __pyx_t_15 = 0;
    } else if (unlikely(__pyx_t_18 >= __pyx_v_rgb_view.shape[0])) __pyx_t_15 = 0;
    if (unlikely(__pyx_t_15 != -1)) {
      __Pyx_RaiseBufferIndexError(__pyx_t_15);
      __PYX_ERR(2, 258, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_rgb); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_13 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(2, 258, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":259
 *         else:
 *             readPBO(&rgb_view[0], NULL, self.pbo_rgb, 0,
 *                     self._width, self._height, self._batch_size)             # <<<<<<<<<<<<<<
 *             # Fine to throw aray depth_arr above since malloc/free is cheap
 *             depth_arr = None
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 259, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 259, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 259, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":258
 *             depth_arr = depth_arr.reshape(self._batch_size, self._height, self._width)
 *         else:
 *             readPBO(&rgb_view[0], NULL, self.pbo_rgb, 0,             # <<<<<<<<<<<<<<
 *                     self._width, self._height, self._batch_size)
 *             # Fine to throw aray depth_arr above since malloc/free is cheap
 */
    readPBO((&(*((unsigned char *) ( /* dim=0 */ ((char *) (((unsigned char *) __pyx_v_rgb_view.data) + __pyx_t_18)) )))), NULL, __pyx_t_13, 0, __pyx_t_15, __pyx_t_14, __pyx_t_10);

    /* "mujoco_py/mjbatchrenderer.pyx":261
 *                     self._width, self._height, self._batch_size)
 *             # Fine to throw aray depth_arr above since malloc/free is cheap
 *             depth_arr = None             # <<<<<<<<<<<<<<
 * 
 *         rgb_arr = rgb_arr.reshape(self._batch_size, self._height, self._width, 3)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_depth_arr, Py_None);
  }
  __pyx_L3:;

  /* "mujoco_py/mjbatchrenderer.pyx":263
 *             depth_arr = None
 * 
 *         rgb_arr = rgb_arr.reshape(self._batch_size, self._height, self._width, 3)             # <<<<<<<<<<<<<<
 *         return rgb_arr, depth_arr
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_rgb_arr, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_batch_size_2); if (unlikely(!__pyx_t_17)) __PYX_ERR(2, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_10 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_t_17, __pyx_t_2, __pyx_t_3, __pyx_int_3};
    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 263, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_t_17, __pyx_t_2, __pyx_t_3, __pyx_int_3};
    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 263, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_16 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_17);
    PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_10, __pyx_t_17);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_10, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_16, 2+__pyx_t_10, __pyx_t_3);
    __Pyx_INCREF(__pyx_int_3);
    __Pyx_GIVEREF(__pyx_int_3);
    PyTuple_SET_ITEM(__pyx_t_16, 3+__pyx_t_10, __pyx_int_3);
    __pyx_t_17 = 0;
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_16, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF_SET(__pyx_v_rgb_arr, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":264
 * 
 *         rgb_arr = rgb_arr.reshape(self._batch_size, self._height, self._width, 3)
 *         return rgb_arr, depth_arr             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_rgb_arr);
  __Pyx_GIVEREF(__pyx_v_rgb_arr);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_rgb_arr);
  __Pyx_INCREF(__pyx_v_depth_arr);
  __Pyx_GIVEREF(__pyx_v_depth_arr);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_depth_arr);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjbatchrenderer.pyx":247
 *         return rgb_arr, depth_arr
 * 
 *     def _read_nocuda(self):             # <<<<<<<<<<<<<<
 *         rgb_arr = np.zeros(3 * self._width * self._height * self._batch_size, dtype=np.uint8)
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer._read_nocuda", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rgb_arr);
  __PYX_XDEC_MEMVIEW(&__pyx_v_rgb_view, 1);
  __Pyx_XDECREF(__pyx_v_depth_arr);
  __PYX_XDEC_MEMVIEW(&__pyx_v_depth_view, 1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":267
 * 
 *     @property
 *     def cuda_rgb_buffer_pointer(self):             # <<<<<<<<<<<<<<
 *         """ Pointer to CUDA buffer for RGB batch. """
 *         if not self._use_cuda:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_19cuda_rgb_buffer_pointer(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_18cuda_rgb_buffer_pointer[] = " Pointer to CUDA buffer for RGB batch. ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_19cuda_rgb_buffer_pointer = {"cuda_rgb_buffer_pointer", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_19cuda_rgb_buffer_pointer, METH_O, __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_18cuda_rgb_buffer_pointer};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_19cuda_rgb_buffer_pointer(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cuda_rgb_buffer_pointer (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_18cuda_rgb_buffer_pointer(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_18cuda_rgb_buffer_pointer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("cuda_rgb_buffer_pointer", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":269
 *     def cuda_rgb_buffer_pointer(self):
 *         """ Pointer to CUDA buffer for RGB batch. """
 *         if not self._use_cuda:             # <<<<<<<<<<<<<<
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_use_cuda_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 269, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":270
 *         """ Pointer to CUDA buffer for RGB batch. """
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()             # <<<<<<<<<<<<<<
 *         elif not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError()
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_CudaNotEnabledError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 270, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 270, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 270, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":269
 *     def cuda_rgb_buffer_pointer(self):
 *         """ Pointer to CUDA buffer for RGB batch. """
 *         if not self._use_cuda:             # <<<<<<<<<<<<<<
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":271
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             raise CudaBufferNotMappedError()
 *         return self._cuda_rgb_ptr
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_buffers_are_mapped); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = ((!__pyx_t_3) != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/mjbatchrenderer.pyx":272
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError()             # <<<<<<<<<<<<<<
 *         return self._cuda_rgb_ptr
 * 
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_CudaBufferNotMappedError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 272, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 272, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 272, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":271
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             raise CudaBufferNotMappedError()
 *         return self._cuda_rgb_ptr
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":273
 *         elif not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError()
 *         return self._cuda_rgb_ptr             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_ptr); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjbatchrenderer.pyx":267
 * 
 *     @property
 *     def cuda_rgb_buffer_pointer(self):             # <<<<<<<<<<<<<<
 *         """ Pointer to CUDA buffer for RGB batch. """
 *         if not self._use_cuda:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.cuda_rgb_buffer_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":276
 * 
 *     @property
 *     def cuda_depth_buffer_pointer(self):             # <<<<<<<<<<<<<<
 *         """ Pointer to CUDA buffer for depth batch. """
 *         if not self._use_cuda:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_21cuda_depth_buffer_pointer(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_20cuda_depth_buffer_pointer[] = " Pointer to CUDA buffer for depth batch. ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_21cuda_depth_buffer_pointer = {"cuda_depth_buffer_pointer", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_21cuda_depth_buffer_pointer, METH_O, __pyx_doc_9mujoco_py_4cymj_15MjBatchRenderer_20cuda_depth_buffer_pointer};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_21cuda_depth_buffer_pointer(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cuda_depth_buffer_pointer (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_20cuda_depth_buffer_pointer(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_20cuda_depth_buffer_pointer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("cuda_depth_buffer_pointer", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":278
 *     def cuda_depth_buffer_pointer(self):
 *         """ Pointer to CUDA buffer for depth batch. """
 *         if not self._use_cuda:             # <<<<<<<<<<<<<<
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_use_cuda_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":279
 *         """ Pointer to CUDA buffer for depth batch. """
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()             # <<<<<<<<<<<<<<
 *         elif not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError()
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_CudaNotEnabledError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 279, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 279, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 279, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":278
 *     def cuda_depth_buffer_pointer(self):
 *         """ Pointer to CUDA buffer for depth batch. """
 *         if not self._use_cuda:             # <<<<<<<<<<<<<<
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":280
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             raise CudaBufferNotMappedError()
 *         if not self._depth:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_buffers_are_mapped); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 280, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = ((!__pyx_t_3) != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/mjbatchrenderer.pyx":281
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError()             # <<<<<<<<<<<<<<
 *         if not self._depth:
 *             raise RuntimeError("Depth not enabled. Use depth=True on initialization.")
 */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_CudaBufferNotMappedError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 281, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 281, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 281, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":280
 *         if not self._use_cuda:
 *             raise CudaNotEnabledError()
 *         elif not self._cuda_buffers_are_mapped:             # <<<<<<<<<<<<<<
 *             raise CudaBufferNotMappedError()
 *         if not self._depth:
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":282
 *         elif not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError()
 *         if not self._depth:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Depth not enabled. Use depth=True on initialization.")
 *         return self._cuda_depth_ptr
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 282, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {

    /* "mujoco_py/mjbatchrenderer.pyx":283
 *             raise CudaBufferNotMappedError()
 *         if not self._depth:
 *             raise RuntimeError("Depth not enabled. Use depth=True on initialization.")             # <<<<<<<<<<<<<<
 *         return self._cuda_depth_ptr
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__135, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 283, __pyx_L1_error)

    /* "mujoco_py/mjbatchrenderer.pyx":282
 *         elif not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError()
 *         if not self._depth:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Depth not enabled. Use depth=True on initialization.")
 *         return self._cuda_depth_ptr
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":284
 *         if not self._depth:
 *             raise RuntimeError("Depth not enabled. Use depth=True on initialization.")
 *         return self._cuda_depth_ptr             # <<<<<<<<<<<<<<
 * 
 *     def __del__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_ptr); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "mujoco_py/mjbatchrenderer.pyx":276
 * 
 *     @property
 *     def cuda_depth_buffer_pointer(self):             # <<<<<<<<<<<<<<
 *         """ Pointer to CUDA buffer for depth batch. """
 *         if not self._use_cuda:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.cuda_depth_buffer_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/mjbatchrenderer.pyx":286
 *         return self._cuda_depth_ptr
 * 
 *     def __del__(self):             # <<<<<<<<<<<<<<
 *         if self._use_cuda:
 *             self._cuda_context.push()
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_23__del__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_23__del__ = {"__del__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_23__del__, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_15MjBatchRenderer_23__del__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_22__del__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_15MjBatchRenderer_22__del__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  __Pyx_RefNannySetupContext("__del__", 0);

  /* "mujoco_py/mjbatchrenderer.pyx":287
 * 
 *     def __del__(self):
 *         if self._use_cuda:             # <<<<<<<<<<<<<<
 *             self._cuda_context.push()
 *             self.unmap()
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_use_cuda_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "mujoco_py/mjbatchrenderer.pyx":288
 *     def __del__(self):
 *         if self._use_cuda:
 *             self._cuda_context.push()             # <<<<<<<<<<<<<<
 *             self.unmap()
 *             self._cuda_rgb_pbo.unregister()
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_context); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_push); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 288, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 288, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":289
 *         if self._use_cuda:
 *             self._cuda_context.push()
 *             self.unmap()             # <<<<<<<<<<<<<<
 *             self._cuda_rgb_pbo.unregister()
 *             if self._depth:
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_unmap); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 289, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 289, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":290
 *             self._cuda_context.push()
 *             self.unmap()
 *             self._cuda_rgb_pbo.unregister()             # <<<<<<<<<<<<<<
 *             if self._depth:
 *                 self._cuda_depth_pbo.unregister()
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_rgb_pbo); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_unregister); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 290, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 290, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":291
 *             self.unmap()
 *             self._cuda_rgb_pbo.unregister()
 *             if self._depth:             # <<<<<<<<<<<<<<
 *                 self._cuda_depth_pbo.unregister()
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 291, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_2) {

      /* "mujoco_py/mjbatchrenderer.pyx":292
 *             self._cuda_rgb_pbo.unregister()
 *             if self._depth:
 *                 self._cuda_depth_pbo.unregister()             # <<<<<<<<<<<<<<
 * 
 *             # Clean up context
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_depth_pbo); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_unregister); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 292, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 292, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "mujoco_py/mjbatchrenderer.pyx":291
 *             self.unmap()
 *             self._cuda_rgb_pbo.unregister()
 *             if self._depth:             # <<<<<<<<<<<<<<
 *                 self._cuda_depth_pbo.unregister()
 * 
 */
    }

    /* "mujoco_py/mjbatchrenderer.pyx":295
 * 
 *             # Clean up context
 *             drv.Context.pop()             # <<<<<<<<<<<<<<
 *             self._cuda_context.detach()
 * 
 */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_drv); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Context); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Pop(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":296
 *             # Clean up context
 *             drv.Context.pop()
 *             self._cuda_context.detach()             # <<<<<<<<<<<<<<
 * 
 *         if self.pbo_depth:
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cuda_context); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_detach); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 296, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 296, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":287
 * 
 *     def __del__(self):
 *         if self._use_cuda:             # <<<<<<<<<<<<<<
 *             self._cuda_context.push()
 *             self.unmap()
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":298
 *             self._cuda_context.detach()
 * 
 *         if self.pbo_depth:             # <<<<<<<<<<<<<<
 *             freePBO(self.pbo_rgb)
 *         if self.pbo_depth:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "mujoco_py/mjbatchrenderer.pyx":299
 * 
 *         if self.pbo_depth:
 *             freePBO(self.pbo_rgb)             # <<<<<<<<<<<<<<
 *         if self.pbo_depth:
 *             freePBO(self.pbo_depth)
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_rgb); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyInt_As_unsigned_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(2, 299, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    freePBO(__pyx_t_5);

    /* "mujoco_py/mjbatchrenderer.pyx":298
 *             self._cuda_context.detach()
 * 
 *         if self.pbo_depth:             # <<<<<<<<<<<<<<
 *             freePBO(self.pbo_rgb)
 *         if self.pbo_depth:
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":300
 *         if self.pbo_depth:
 *             freePBO(self.pbo_rgb)
 *         if self.pbo_depth:             # <<<<<<<<<<<<<<
 *             freePBO(self.pbo_depth)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "mujoco_py/mjbatchrenderer.pyx":301
 *             freePBO(self.pbo_rgb)
 *         if self.pbo_depth:
 *             freePBO(self.pbo_depth)             # <<<<<<<<<<<<<<
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pbo_depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyInt_As_unsigned_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(2, 301, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    freePBO(__pyx_t_5);

    /* "mujoco_py/mjbatchrenderer.pyx":300
 *         if self.pbo_depth:
 *             freePBO(self.pbo_rgb)
 *         if self.pbo_depth:             # <<<<<<<<<<<<<<
 *             freePBO(self.pbo_depth)
 */
  }

  /* "mujoco_py/mjbatchrenderer.pyx":286
 *         return self._cuda_depth_ptr
 * 
 *     def __del__(self):             # <<<<<<<<<<<<<<
 *         if self._use_cuda:
 *             self._cuda_context.push()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mujoco_py.cymj.MjBatchRenderer.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/cymj.pyx":65
 * 
 * 
 * cdef void c_warning_callback(const char *msg) with gil:             # <<<<<<<<<<<<<<
 *     '''
 *     Wraps the warning callback so we can raise exceptions.
 */

static void __pyx_f_9mujoco_py_4cymj_c_warning_callback(char const *__pyx_v_msg) {
  PyObject *__pyx_v_e = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("c_warning_callback", 0);

  /* "mujoco_py/cymj.pyx":74
 *     '''
 *     global py_warning_callback
 *     try:             # <<<<<<<<<<<<<<
 *         (<object> py_warning_callback)(msg)
 *     except Exception as e:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "mujoco_py/cymj.pyx":75
 *     global py_warning_callback
 *     try:
 *         (<object> py_warning_callback)(msg)             # <<<<<<<<<<<<<<
 *     except Exception as e:
 *         global py_warning_exception
 */
      __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_msg); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 75, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(((PyObject *)__pyx_v_9mujoco_py_4cymj_py_warning_callback));
      __pyx_t_6 = __pyx_v_9mujoco_py_4cymj_py_warning_callback; __pyx_t_7 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (!__pyx_t_7) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 75, __pyx_L3_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_4);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5};
          __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 75, __pyx_L3_error)
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5};
          __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 75, __pyx_L3_error)
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        } else
        #endif
        {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 75, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
          __pyx_t_5 = 0;
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 75, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "mujoco_py/cymj.pyx":74
 *     '''
 *     global py_warning_callback
 *     try:             # <<<<<<<<<<<<<<
 *         (<object> py_warning_callback)(msg)
 *     except Exception as e:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "mujoco_py/cymj.pyx":76
 *     try:
 *         (<object> py_warning_callback)(msg)
 *     except Exception as e:             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         py_warning_exception = e
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
    if (__pyx_t_9) {
      __Pyx_AddTraceback("mujoco_py.cymj.c_warning_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(7, 76, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_e = __pyx_t_6;
      /*try:*/ {

        /* "mujoco_py/cymj.pyx":78
 *     except Exception as e:
 *         global py_warning_exception
 *         py_warning_exception = e             # <<<<<<<<<<<<<<
 * 
 * 
 */
        __Pyx_INCREF(__pyx_v_e);
        __Pyx_XGOTREF(__pyx_v_9mujoco_py_4cymj_py_warning_exception);
        __Pyx_DECREF_SET(__pyx_v_9mujoco_py_4cymj_py_warning_exception, __pyx_v_e);
        __Pyx_GIVEREF(__pyx_v_e);
      }

      /* "mujoco_py/cymj.pyx":76
 *     try:
 *         (<object> py_warning_callback)(msg)
 *     except Exception as e:             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         py_warning_exception = e
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_e);
          __pyx_v_e = NULL;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "mujoco_py/cymj.pyx":74
 *     '''
 *     global py_warning_callback
 *     try:             # <<<<<<<<<<<<<<
 *         (<object> py_warning_callback)(msg)
 *     except Exception as e:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "mujoco_py/cymj.pyx":65
 * 
 * 
 * cdef void c_warning_callback(const char *msg) with gil:             # <<<<<<<<<<<<<<
 *     '''
 *     Wraps the warning callback so we can raise exceptions.
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_WriteUnraisable("mujoco_py.cymj.c_warning_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "mujoco_py/cymj.pyx":81
 * 
 * 
 * def set_warning_callback(warn):             # <<<<<<<<<<<<<<
 *     '''
 *     Set a user-defined warning callback.  It should take in a string message
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_447set_warning_callback(PyObject *__pyx_self, PyObject *__pyx_v_warn); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_446set_warning_callback[] = "\n    Set a user-defined warning callback.  It should take in a string message\n        (the warning string) and raise an Exception.\n    See c_warning_callback, which is the C wrapper to the user defined function\n    ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_447set_warning_callback = {"set_warning_callback", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_447set_warning_callback, METH_O, __pyx_doc_9mujoco_py_4cymj_446set_warning_callback};
static PyObject *__pyx_pw_9mujoco_py_4cymj_447set_warning_callback(PyObject *__pyx_self, PyObject *__pyx_v_warn) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_warning_callback (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_446set_warning_callback(__pyx_self, ((PyObject *)__pyx_v_warn));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_446set_warning_callback(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_warn) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_warning_callback", 0);

  /* "mujoco_py/cymj.pyx":89
 *     global py_warning_callback
 *     global mju_user_warning
 *     py_warning_callback = warn             # <<<<<<<<<<<<<<
 *     mju_user_warning = c_warning_callback
 * 
 */
  __Pyx_INCREF(__pyx_v_warn);
  __Pyx_XGOTREF(__pyx_v_9mujoco_py_4cymj_py_warning_callback);
  __Pyx_DECREF_SET(__pyx_v_9mujoco_py_4cymj_py_warning_callback, __pyx_v_warn);
  __Pyx_GIVEREF(__pyx_v_warn);

  /* "mujoco_py/cymj.pyx":90
 *     global mju_user_warning
 *     py_warning_callback = warn
 *     mju_user_warning = c_warning_callback             # <<<<<<<<<<<<<<
 * 
 * 
 */
  mju_user_warning = __pyx_f_9mujoco_py_4cymj_c_warning_callback;

  /* "mujoco_py/cymj.pyx":81
 * 
 * 
 * def set_warning_callback(warn):             # <<<<<<<<<<<<<<
 *     '''
 *     Set a user-defined warning callback.  It should take in a string message
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/cymj.pyx":93
 * 
 * 
 * def get_warning_callback():             # <<<<<<<<<<<<<<
 *     '''
 *     Returns the user-defined warning callback, for use in e.g. a context
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_449get_warning_callback(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_448get_warning_callback[] = "\n    Returns the user-defined warning callback, for use in e.g. a context\n    manager.\n    ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_449get_warning_callback = {"get_warning_callback", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_449get_warning_callback, METH_NOARGS, __pyx_doc_9mujoco_py_4cymj_448get_warning_callback};
static PyObject *__pyx_pw_9mujoco_py_4cymj_449get_warning_callback(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_warning_callback (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_448get_warning_callback(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_448get_warning_callback(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_warning_callback", 0);

  /* "mujoco_py/cymj.pyx":99
 *     '''
 *     global py_warning_callback
 *     return py_warning_callback             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_9mujoco_py_4cymj_py_warning_callback);
  __pyx_r = __pyx_v_9mujoco_py_4cymj_py_warning_callback;
  goto __pyx_L0;

  /* "mujoco_py/cymj.pyx":93
 * 
 * 
 * def get_warning_callback():             # <<<<<<<<<<<<<<
 *     '''
 *     Returns the user-defined warning callback, for use in e.g. a context
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/cymj.pyx":109
 *             mj_somefunc()
 *     '''
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         py_warning_exception = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_19wrap_mujoco_warning_1__enter__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_19wrap_mujoco_warning_1__enter__ = {"__enter__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_19wrap_mujoco_warning_1__enter__, METH_O, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_19wrap_mujoco_warning_1__enter__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_19wrap_mujoco_warning___enter__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_19wrap_mujoco_warning___enter__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__enter__", 0);

  /* "mujoco_py/cymj.pyx":111
 *     def __enter__(self):
 *         global py_warning_exception
 *         py_warning_exception = None             # <<<<<<<<<<<<<<
 *     def __exit__(self, type, value, traceback):
 *         global py_warning_exception
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_9mujoco_py_4cymj_py_warning_exception);
  __Pyx_DECREF_SET(__pyx_v_9mujoco_py_4cymj_py_warning_exception, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "mujoco_py/cymj.pyx":109
 *             mj_somefunc()
 *     '''
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         py_warning_exception = None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/cymj.pyx":112
 *         global py_warning_exception
 *         py_warning_exception = None
 *     def __exit__(self, type, value, traceback):             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         if py_warning_exception is not None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_19wrap_mujoco_warning_3__exit__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_19wrap_mujoco_warning_3__exit__ = {"__exit__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_19wrap_mujoco_warning_3__exit__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9mujoco_py_4cymj_19wrap_mujoco_warning_3__exit__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_type = 0;
  CYTHON_UNUSED PyObject *__pyx_v_value = 0;
  CYTHON_UNUSED PyObject *__pyx_v_traceback = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_type,&__pyx_n_s_value,&__pyx_n_s_traceback,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_type)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 4, 4, 1); __PYX_ERR(7, 112, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 4, 4, 2); __PYX_ERR(7, 112, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 4, 4, 3); __PYX_ERR(7, 112, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(7, 112, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_self = values[0];
    __pyx_v_type = values[1];
    __pyx_v_value = values[2];
    __pyx_v_traceback = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(7, 112, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.wrap_mujoco_warning.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_19wrap_mujoco_warning_2__exit__(__pyx_self, __pyx_v_self, __pyx_v_type, __pyx_v_value, __pyx_v_traceback);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_19wrap_mujoco_warning_2__exit__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type, CYTHON_UNUSED PyObject *__pyx_v_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__exit__", 0);

  /* "mujoco_py/cymj.pyx":114
 *     def __exit__(self, type, value, traceback):
 *         global py_warning_exception
 *         if py_warning_exception is not None:             # <<<<<<<<<<<<<<
 *             raise py_warning_exception
 * 
 */
  __pyx_t_1 = (__pyx_v_9mujoco_py_4cymj_py_warning_exception != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "mujoco_py/cymj.pyx":115
 *         global py_warning_exception
 *         if py_warning_exception is not None:
 *             raise py_warning_exception             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_Raise(__pyx_v_9mujoco_py_4cymj_py_warning_exception, 0, 0, 0);
    __PYX_ERR(7, 115, __pyx_L1_error)

    /* "mujoco_py/cymj.pyx":114
 *     def __exit__(self, type, value, traceback):
 *         global py_warning_exception
 *         if py_warning_exception is not None:             # <<<<<<<<<<<<<<
 *             raise py_warning_exception
 * 
 */
  }

  /* "mujoco_py/cymj.pyx":112
 *         global py_warning_exception
 *         py_warning_exception = None
 *     def __exit__(self, type, value, traceback):             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         if py_warning_exception is not None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mujoco_py.cymj.wrap_mujoco_warning.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/cymj.pyx":118
 * 
 * 
 * def load_model_from_path(str path):             # <<<<<<<<<<<<<<
 *     """Loads model from path."""
 *     cdef char errstr[300]
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_451load_model_from_path(PyObject *__pyx_self, PyObject *__pyx_v_path); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_450load_model_from_path[] = "Loads model from path.";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_451load_model_from_path = {"load_model_from_path", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_451load_model_from_path, METH_O, __pyx_doc_9mujoco_py_4cymj_450load_model_from_path};
static PyObject *__pyx_pw_9mujoco_py_4cymj_451load_model_from_path(PyObject *__pyx_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("load_model_from_path (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyUnicode_Type), 1, "path", 1))) __PYX_ERR(7, 118, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_450load_model_from_path(__pyx_self, ((PyObject*)__pyx_v_path));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_450load_model_from_path(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path) {
  char __pyx_v_errstr[0x12C];
  mjModel *__pyx_v_model;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  char const *__pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  __Pyx_RefNannySetupContext("load_model_from_path", 0);

  /* "mujoco_py/cymj.pyx":122
 *     cdef char errstr[300]
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *         if (path.endswith(".mjb")):
 *             model = mj_loadModel(path.encode(), NULL)
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_wrap_mujoco_warning); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 122, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 122, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 122, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 122, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 122, __pyx_L3_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "mujoco_py/cymj.pyx":123
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():
 *         if (path.endswith(".mjb")):             # <<<<<<<<<<<<<<
 *             model = mj_loadModel(path.encode(), NULL)
 *         elif (path.endswith(".xml")):
 */
          if (unlikely(__pyx_v_path == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "endswith");
            __PYX_ERR(7, 123, __pyx_L7_error)
          }
          __pyx_t_9 = __Pyx_PyUnicode_Tailmatch(__pyx_v_path, __pyx_kp_u_mjb_2, 0, PY_SSIZE_T_MAX, 1); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(7, 123, __pyx_L7_error)
          if ((__pyx_t_9 != 0)) {

            /* "mujoco_py/cymj.pyx":124
 *     with wrap_mujoco_warning():
 *         if (path.endswith(".mjb")):
 *             model = mj_loadModel(path.encode(), NULL)             # <<<<<<<<<<<<<<
 *         elif (path.endswith(".xml")):
 *             model = mj_loadXML(path.encode(), NULL, errstr, 300)
 */
            if (unlikely(__pyx_v_path == Py_None)) {
              PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
              __PYX_ERR(7, 124, __pyx_L7_error)
            }
            __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_path, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 124, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(7, 124, __pyx_L7_error)
            __pyx_v_model = mj_loadModel(__pyx_t_10, NULL);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

            /* "mujoco_py/cymj.pyx":123
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():
 *         if (path.endswith(".mjb")):             # <<<<<<<<<<<<<<
 *             model = mj_loadModel(path.encode(), NULL)
 *         elif (path.endswith(".xml")):
 */
            goto __pyx_L13;
          }

          /* "mujoco_py/cymj.pyx":125
 *         if (path.endswith(".mjb")):
 *             model = mj_loadModel(path.encode(), NULL)
 *         elif (path.endswith(".xml")):             # <<<<<<<<<<<<<<
 *             model = mj_loadXML(path.encode(), NULL, errstr, 300)
 *         else:
 */
          if (unlikely(__pyx_v_path == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "endswith");
            __PYX_ERR(7, 125, __pyx_L7_error)
          }
          __pyx_t_9 = __Pyx_PyUnicode_Tailmatch(__pyx_v_path, __pyx_kp_u_xml_2, 0, PY_SSIZE_T_MAX, 1); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(7, 125, __pyx_L7_error)
          if ((__pyx_t_9 != 0)) {

            /* "mujoco_py/cymj.pyx":126
 *             model = mj_loadModel(path.encode(), NULL)
 *         elif (path.endswith(".xml")):
 *             model = mj_loadXML(path.encode(), NULL, errstr, 300)             # <<<<<<<<<<<<<<
 *         else:
 *             raise RuntimeError("Unrecognized extension for %s. Expected .xml or .mjb" % path)
 */
            if (unlikely(__pyx_v_path == Py_None)) {
              PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
              __PYX_ERR(7, 126, __pyx_L7_error)
            }
            __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_path, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 126, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(7, 126, __pyx_L7_error)
            __pyx_v_model = mj_loadXML(__pyx_t_11, NULL, __pyx_v_errstr, 0x12C);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

            /* "mujoco_py/cymj.pyx":125
 *         if (path.endswith(".mjb")):
 *             model = mj_loadModel(path.encode(), NULL)
 *         elif (path.endswith(".xml")):             # <<<<<<<<<<<<<<
 *             model = mj_loadXML(path.encode(), NULL, errstr, 300)
 *         else:
 */
            goto __pyx_L13;
          }

          /* "mujoco_py/cymj.pyx":128
 *             model = mj_loadXML(path.encode(), NULL, errstr, 300)
 *         else:
 *             raise RuntimeError("Unrecognized extension for %s. Expected .xml or .mjb" % path)             # <<<<<<<<<<<<<<
 * 
 *     if model == NULL:
 */
          /*else*/ {
            __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_Unrecognized_extension_for_s_Exp, __pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 128, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 128, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 128, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_Raise(__pyx_t_1, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __PYX_ERR(7, 128, __pyx_L7_error)
          }
          __pyx_L13:;

          /* "mujoco_py/cymj.pyx":122
 *     cdef char errstr[300]
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *         if (path.endswith(".mjb")):
 *             model = mj_loadModel(path.encode(), NULL)
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mujoco_py.cymj.load_model_from_path", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(7, 122, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_5 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 122, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 122, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_9 < 0) __PYX_ERR(7, 122, __pyx_L9_except_error)
          __pyx_t_13 = ((!(__pyx_t_9 != 0)) != 0);
          if (__pyx_t_13) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_3);
            __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; 
            __PYX_ERR(7, 122, __pyx_L9_except_error)
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__136, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 122, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L17;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "mujoco_py/cymj.pyx":130
 *             raise RuntimeError("Unrecognized extension for %s. Expected .xml or .mjb" % path)
 * 
 *     if model == NULL:             # <<<<<<<<<<<<<<
 *         raise Exception('Failed to load XML file: %s. mj_loadXML error: %s' % (path, errstr,))
 *     return WrapMjModel(model)
 */
  __pyx_t_13 = ((__pyx_v_model == NULL) != 0);
  if (__pyx_t_13) {

    /* "mujoco_py/cymj.pyx":131
 * 
 *     if model == NULL:
 *         raise Exception('Failed to load XML file: %s. mj_loadXML error: %s' % (path, errstr,))             # <<<<<<<<<<<<<<
 *     return WrapMjModel(model)
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_FromString(__pyx_v_errstr); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_path);
    __Pyx_GIVEREF(__pyx_v_path);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_path);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Failed_to_load_XML_file_s_mj_loa, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(7, 131, __pyx_L1_error)

    /* "mujoco_py/cymj.pyx":130
 *             raise RuntimeError("Unrecognized extension for %s. Expected .xml or .mjb" % path)
 * 
 *     if model == NULL:             # <<<<<<<<<<<<<<
 *         raise Exception('Failed to load XML file: %s. mj_loadXML error: %s' % (path, errstr,))
 *     return WrapMjModel(model)
 */
  }

  /* "mujoco_py/cymj.pyx":132
 *     if model == NULL:
 *         raise Exception('Failed to load XML file: %s. mj_loadXML error: %s' % (path, errstr,))
 *     return WrapMjModel(model)             # <<<<<<<<<<<<<<
 * 
 * def load_model_from_xml(str xml_str):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjModel(__pyx_v_model)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "mujoco_py/cymj.pyx":118
 * 
 * 
 * def load_model_from_path(str path):             # <<<<<<<<<<<<<<
 *     """Loads model from path."""
 *     cdef char errstr[300]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.load_model_from_path", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/cymj.pyx":134
 *     return WrapMjModel(model)
 * 
 * def load_model_from_xml(str xml_str):             # <<<<<<<<<<<<<<
 *     """
 *     Loads and returns a PyMjModel model from a string containing XML markup.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_453load_model_from_xml(PyObject *__pyx_self, PyObject *__pyx_v_xml_str); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_452load_model_from_xml[] = "\n    Loads and returns a PyMjModel model from a string containing XML markup.\n    Saves the XML string used to create the returned model in `model.xml`.\n    ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_453load_model_from_xml = {"load_model_from_xml", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_453load_model_from_xml, METH_O, __pyx_doc_9mujoco_py_4cymj_452load_model_from_xml};
static PyObject *__pyx_pw_9mujoco_py_4cymj_453load_model_from_xml(PyObject *__pyx_self, PyObject *__pyx_v_xml_str) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("load_model_from_xml (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xml_str), (&PyUnicode_Type), 1, "xml_str", 1))) __PYX_ERR(7, 134, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_452load_model_from_xml(__pyx_self, ((PyObject*)__pyx_v_xml_str));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_452load_model_from_xml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_xml_str) {
  char __pyx_v_errstr[0x12C];
  mjModel *__pyx_v_model;
  PyObject *__pyx_v_fp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  int __pyx_t_16;
  char const *__pyx_t_17;
  __Pyx_RefNannySetupContext("load_model_from_xml", 0);

  /* "mujoco_py/cymj.pyx":141
 *     cdef char errstr[300]
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *         with tempfile.NamedTemporaryFile(suffix=".xml", delete=False) as fp:
 *             fp.write(xml_str.encode())
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_wrap_mujoco_warning); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 141, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 141, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 141, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 141, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 141, __pyx_L3_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "mujoco_py/cymj.pyx":142
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():
 *         with tempfile.NamedTemporaryFile(suffix=".xml", delete=False) as fp:             # <<<<<<<<<<<<<<
 *             fp.write(xml_str.encode())
 *             fp.flush()
 */
          /*with:*/ {
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_tempfile); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 142, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_NamedTemporaryFile); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 142, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 142, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_suffix, __pyx_kp_u_xml_2) < 0) __PYX_ERR(7, 142, __pyx_L7_error)
            if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_delete, Py_False) < 0) __PYX_ERR(7, 142, __pyx_L7_error)
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 142, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 142, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_9);
            __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 142, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_5 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_2, function);
              }
            }
            if (__pyx_t_5) {
              __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 142, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            } else {
              __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 142, __pyx_L13_error)
            }
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __pyx_t_2 = __pyx_t_1;
            __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            /*try:*/ {
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
                __Pyx_XGOTREF(__pyx_t_10);
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_12);
                /*try:*/ {
                  __pyx_v_fp = __pyx_t_2;
                  __pyx_t_2 = 0;

                  /* "mujoco_py/cymj.pyx":143
 *     with wrap_mujoco_warning():
 *         with tempfile.NamedTemporaryFile(suffix=".xml", delete=False) as fp:
 *             fp.write(xml_str.encode())             # <<<<<<<<<<<<<<
 *             fp.flush()
 *         model = mj_loadXML(fp.name.encode(), NULL, errstr, 300)
 */
                  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 143, __pyx_L17_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  if (unlikely(__pyx_v_xml_str == Py_None)) {
                    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
                    __PYX_ERR(7, 143, __pyx_L17_error)
                  }
                  __pyx_t_1 = PyUnicode_AsEncodedString(__pyx_v_xml_str, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 143, __pyx_L17_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __pyx_t_5 = NULL;
                  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
                    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
                    if (likely(__pyx_t_5)) {
                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                      __Pyx_INCREF(__pyx_t_5);
                      __Pyx_INCREF(function);
                      __Pyx_DECREF_SET(__pyx_t_3, function);
                    }
                  }
                  if (!__pyx_t_5) {
                    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 143, __pyx_L17_error)
                    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                    __Pyx_GOTREF(__pyx_t_2);
                  } else {
                    #if CYTHON_FAST_PYCALL
                    if (PyFunction_Check(__pyx_t_3)) {
                      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
                      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 143, __pyx_L17_error)
                      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                      __Pyx_GOTREF(__pyx_t_2);
                      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                    } else
                    #endif
                    #if CYTHON_FAST_PYCCALL
                    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
                      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
                      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 143, __pyx_L17_error)
                      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                      __Pyx_GOTREF(__pyx_t_2);
                      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                    } else
                    #endif
                    {
                      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 143, __pyx_L17_error)
                      __Pyx_GOTREF(__pyx_t_13);
                      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_5); __pyx_t_5 = NULL;
                      __Pyx_GIVEREF(__pyx_t_1);
                      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_1);
                      __pyx_t_1 = 0;
                      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 143, __pyx_L17_error)
                      __Pyx_GOTREF(__pyx_t_2);
                      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
                    }
                  }
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

                  /* "mujoco_py/cymj.pyx":144
 *         with tempfile.NamedTemporaryFile(suffix=".xml", delete=False) as fp:
 *             fp.write(xml_str.encode())
 *             fp.flush()             # <<<<<<<<<<<<<<
 *         model = mj_loadXML(fp.name.encode(), NULL, errstr, 300)
 *     if model == NULL:
 */
                  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_flush); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 144, __pyx_L17_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  __pyx_t_13 = NULL;
                  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
                    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
                    if (likely(__pyx_t_13)) {
                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                      __Pyx_INCREF(__pyx_t_13);
                      __Pyx_INCREF(function);
                      __Pyx_DECREF_SET(__pyx_t_3, function);
                    }
                  }
                  if (__pyx_t_13) {
                    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 144, __pyx_L17_error)
                    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
                  } else {
                    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 144, __pyx_L17_error)
                  }
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

                  /* "mujoco_py/cymj.pyx":142
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():
 *         with tempfile.NamedTemporaryFile(suffix=".xml", delete=False) as fp:             # <<<<<<<<<<<<<<
 *             fp.write(xml_str.encode())
 *             fp.flush()
 */
                }
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                goto __pyx_L22_try_end;
                __pyx_L17_error:;
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                /*except:*/ {
                  __Pyx_AddTraceback("mujoco_py.cymj.load_model_from_xml", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_13) < 0) __PYX_ERR(7, 142, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_GOTREF(__pyx_t_3);
                  __Pyx_GOTREF(__pyx_t_13);
                  __pyx_t_1 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 142, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, NULL);
                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  if (unlikely(!__pyx_t_14)) __PYX_ERR(7, 142, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_14);
                  __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_14);
                  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
                  if (__pyx_t_15 < 0) __PYX_ERR(7, 142, __pyx_L19_except_error)
                  __pyx_t_16 = ((!(__pyx_t_15 != 0)) != 0);
                  if (__pyx_t_16) {
                    __Pyx_GIVEREF(__pyx_t_2);
                    __Pyx_GIVEREF(__pyx_t_3);
                    __Pyx_XGIVEREF(__pyx_t_13);
                    __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_13);
                    __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_13 = 0; 
                    __PYX_ERR(7, 142, __pyx_L19_except_error)
                  }
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
                  goto __pyx_L18_exception_handled;
                }
                __pyx_L19_except_error:;
                __Pyx_XGIVEREF(__pyx_t_10);
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_XGIVEREF(__pyx_t_12);
                __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
                goto __pyx_L7_error;
                __pyx_L18_exception_handled:;
                __Pyx_XGIVEREF(__pyx_t_10);
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_XGIVEREF(__pyx_t_12);
                __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
                __pyx_L22_try_end:;
              }
            }
            /*finally:*/ {
              /*normal exit:*/{
                if (__pyx_t_9) {
                  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__137, NULL);
                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
                  if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 142, __pyx_L7_error)
                  __Pyx_GOTREF(__pyx_t_12);
                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                }
                goto __pyx_L16;
              }
              __pyx_L16:;
            }
            goto __pyx_L26;
            __pyx_L13_error:;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            goto __pyx_L7_error;
            __pyx_L26:;
          }

          /* "mujoco_py/cymj.pyx":145
 *             fp.write(xml_str.encode())
 *             fp.flush()
 *         model = mj_loadXML(fp.name.encode(), NULL, errstr, 300)             # <<<<<<<<<<<<<<
 *     if model == NULL:
 *         raise Exception('%s\nFailed to load XML from file: %s. mj_loadXML error: %s' % (xml_str, fp.name, errstr,))
 */
          if (unlikely(!__pyx_v_fp)) { __Pyx_RaiseUnboundLocalError("fp"); __PYX_ERR(7, 145, __pyx_L7_error) }
          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 145, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 145, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_3 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
            if (likely(__pyx_t_3)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_2, function);
            }
          }
          if (__pyx_t_3) {
            __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 145, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          } else {
            __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 145, __pyx_L7_error)
          }
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __pyx_t_17 = __Pyx_PyObject_AsString(__pyx_t_13); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(7, 145, __pyx_L7_error)
          __pyx_v_model = mj_loadXML(__pyx_t_17, NULL, __pyx_v_errstr, 0x12C);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

          /* "mujoco_py/cymj.pyx":141
 *     cdef char errstr[300]
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *         with tempfile.NamedTemporaryFile(suffix=".xml", delete=False) as fp:
 *             fp.write(xml_str.encode())
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mujoco_py.cymj.load_model_from_xml", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(7, 141, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_1 = PyTuple_Pack(3, __pyx_t_13, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 141, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 141, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (__pyx_t_16 < 0) __PYX_ERR(7, 141, __pyx_L9_except_error)
          __pyx_t_15 = ((!(__pyx_t_16 != 0)) != 0);
          if (__pyx_t_15) {
            __Pyx_GIVEREF(__pyx_t_13);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_13, __pyx_t_2, __pyx_t_3);
            __pyx_t_13 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; 
            __PYX_ERR(7, 141, __pyx_L9_except_error)
          }
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__138, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 141, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L30;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L30:;
  }

  /* "mujoco_py/cymj.pyx":146
 *             fp.flush()
 *         model = mj_loadXML(fp.name.encode(), NULL, errstr, 300)
 *     if model == NULL:             # <<<<<<<<<<<<<<
 *         raise Exception('%s\nFailed to load XML from file: %s. mj_loadXML error: %s' % (xml_str, fp.name, errstr,))
 *     return WrapMjModel(model)
 */
  __pyx_t_15 = ((__pyx_v_model == NULL) != 0);
  if (__pyx_t_15) {

    /* "mujoco_py/cymj.pyx":147
 *         model = mj_loadXML(fp.name.encode(), NULL, errstr, 300)
 *     if model == NULL:
 *         raise Exception('%s\nFailed to load XML from file: %s. mj_loadXML error: %s' % (xml_str, fp.name, errstr,))             # <<<<<<<<<<<<<<
 *     return WrapMjModel(model)
 * 
 */
    if (unlikely(!__pyx_v_fp)) { __Pyx_RaiseUnboundLocalError("fp"); __PYX_ERR(7, 147, __pyx_L1_error) }
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_FromString(__pyx_v_errstr); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_INCREF(__pyx_v_xml_str);
    __Pyx_GIVEREF(__pyx_v_xml_str);
    PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v_xml_str);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_2 = 0;
    __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_s_Failed_to_load_XML_from_file, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(7, 147, __pyx_L1_error)

    /* "mujoco_py/cymj.pyx":146
 *             fp.flush()
 *         model = mj_loadXML(fp.name.encode(), NULL, errstr, 300)
 *     if model == NULL:             # <<<<<<<<<<<<<<
 *         raise Exception('%s\nFailed to load XML from file: %s. mj_loadXML error: %s' % (xml_str, fp.name, errstr,))
 *     return WrapMjModel(model)
 */
  }

  /* "mujoco_py/cymj.pyx":148
 *     if model == NULL:
 *         raise Exception('%s\nFailed to load XML from file: %s. mj_loadXML error: %s' % (xml_str, fp.name, errstr,))
 *     return WrapMjModel(model)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjModel(__pyx_v_model)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "mujoco_py/cymj.pyx":134
 *     return WrapMjModel(model)
 * 
 * def load_model_from_xml(str xml_str):             # <<<<<<<<<<<<<<
 *     """
 *     Loads and returns a PyMjModel model from a string containing XML markup.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("mujoco_py.cymj.load_model_from_xml", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "mujoco_py/cymj.pyx":151
 * 
 * 
 * def load_model_from_mjb(bytes mjb_bytes):             # <<<<<<<<<<<<<<
 *     """
 *     Loads and returns a PyMjModel model from bytes encoded MJB.
 */

/* Python wrapper */
static PyObject *__pyx_pw_9mujoco_py_4cymj_455load_model_from_mjb(PyObject *__pyx_self, PyObject *__pyx_v_mjb_bytes); /*proto*/
static char __pyx_doc_9mujoco_py_4cymj_454load_model_from_mjb[] = "\n    Loads and returns a PyMjModel model from bytes encoded MJB.\n    MJB is a MuJoCo-custom format that includes assets like meshes/textures.\n    ";
static PyMethodDef __pyx_mdef_9mujoco_py_4cymj_455load_model_from_mjb = {"load_model_from_mjb", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_455load_model_from_mjb, METH_O, __pyx_doc_9mujoco_py_4cymj_454load_model_from_mjb};
static PyObject *__pyx_pw_9mujoco_py_4cymj_455load_model_from_mjb(PyObject *__pyx_self, PyObject *__pyx_v_mjb_bytes) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("load_model_from_mjb (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mjb_bytes), (&PyBytes_Type), 1, "mjb_bytes", 1))) __PYX_ERR(7, 151, __pyx_L1_error)
  __pyx_r = __pyx_pf_9mujoco_py_4cymj_454load_model_from_mjb(__pyx_self, ((PyObject*)__pyx_v_mjb_bytes));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9mujoco_py_4cymj_454load_model_from_mjb(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_mjb_bytes) {
  mjModel *__pyx_v_model;
  PyObject *__pyx_v_td = NULL;
  PyObject *__pyx_v_filename = NULL;
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_t_19;
  int __pyx_t_20;
  char const *__pyx_t_21;
  __Pyx_RefNannySetupContext("load_model_from_mjb", 0);

  /* "mujoco_py/cymj.pyx":157
 *     """
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_wrap_mujoco_warning); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 157, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 157, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 157, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 157, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 157, __pyx_L3_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "mujoco_py/cymj.pyx":158
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():
 *         with TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *             filename = os.path.join(td, 'model.mjb')
 *             with open(filename, 'wb') as f:
 */
          /*with:*/ {
            __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_TemporaryDirectory); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 158, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_3 = NULL;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
              __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
              if (likely(__pyx_t_3)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
                __Pyx_INCREF(__pyx_t_3);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_2, function);
              }
            }
            if (__pyx_t_3) {
              __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 158, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            } else {
              __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 158, __pyx_L7_error)
            }
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 158, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_9);
            __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 158, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_5 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
              }
            }
            if (__pyx_t_5) {
              __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 158, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            } else {
              __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 158, __pyx_L13_error)
            }
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_3 = __pyx_t_2;
            __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            /*try:*/ {
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
                __Pyx_XGOTREF(__pyx_t_10);
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_12);
                /*try:*/ {
                  __pyx_v_td = __pyx_t_3;
                  __pyx_t_3 = 0;

                  /* "mujoco_py/cymj.pyx":159
 *     with wrap_mujoco_warning():
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')             # <<<<<<<<<<<<<<
 *             with open(filename, 'wb') as f:
 *                 f.write(mjb_bytes)
 */
                  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 159, __pyx_L17_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 159, __pyx_L17_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_join); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 159, __pyx_L17_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                  __pyx_t_2 = NULL;
                  __pyx_t_13 = 0;
                  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
                    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
                    if (likely(__pyx_t_2)) {
                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                      __Pyx_INCREF(__pyx_t_2);
                      __Pyx_INCREF(function);
                      __Pyx_DECREF_SET(__pyx_t_1, function);
                      __pyx_t_13 = 1;
                    }
                  }
                  #if CYTHON_FAST_PYCALL
                  if (PyFunction_Check(__pyx_t_1)) {
                    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_td, __pyx_kp_u_model_mjb};
                    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 159, __pyx_L17_error)
                    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                    __Pyx_GOTREF(__pyx_t_3);
                  } else
                  #endif
                  #if CYTHON_FAST_PYCCALL
                  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
                    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_td, __pyx_kp_u_model_mjb};
                    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 159, __pyx_L17_error)
                    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                    __Pyx_GOTREF(__pyx_t_3);
                  } else
                  #endif
                  {
                    __pyx_t_5 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 159, __pyx_L17_error)
                    __Pyx_GOTREF(__pyx_t_5);
                    if (__pyx_t_2) {
                      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
                    }
                    __Pyx_INCREF(__pyx_v_td);
                    __Pyx_GIVEREF(__pyx_v_td);
                    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_13, __pyx_v_td);
                    __Pyx_INCREF(__pyx_kp_u_model_mjb);
                    __Pyx_GIVEREF(__pyx_kp_u_model_mjb);
                    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_13, __pyx_kp_u_model_mjb);
                    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 159, __pyx_L17_error)
                    __Pyx_GOTREF(__pyx_t_3);
                    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  }
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __pyx_v_filename = __pyx_t_3;
                  __pyx_t_3 = 0;

                  /* "mujoco_py/cymj.pyx":160
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 *             with open(filename, 'wb') as f:             # <<<<<<<<<<<<<<
 *                 f.write(mjb_bytes)
 *             model = mj_loadModel(filename.encode(), NULL)
 */
                  /*with:*/ {
                    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 160, __pyx_L17_error)
                    __Pyx_GOTREF(__pyx_t_3);
                    __Pyx_INCREF(__pyx_v_filename);
                    __Pyx_GIVEREF(__pyx_v_filename);
                    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_filename);
                    __Pyx_INCREF(__pyx_n_u_wb);
                    __Pyx_GIVEREF(__pyx_n_u_wb);
                    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_u_wb);
                    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 160, __pyx_L17_error)
                    __Pyx_GOTREF(__pyx_t_1);
                    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                    __pyx_t_14 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_14)) __PYX_ERR(7, 160, __pyx_L17_error)
                    __Pyx_GOTREF(__pyx_t_14);
                    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 160, __pyx_L23_error)
                    __Pyx_GOTREF(__pyx_t_5);
                    __pyx_t_2 = NULL;
                    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
                      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
                      if (likely(__pyx_t_2)) {
                        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                        __Pyx_INCREF(__pyx_t_2);
                        __Pyx_INCREF(function);
                        __Pyx_DECREF_SET(__pyx_t_5, function);
                      }
                    }
                    if (__pyx_t_2) {
                      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 160, __pyx_L23_error)
                      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                    } else {
                      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 160, __pyx_L23_error)
                    }
                    __Pyx_GOTREF(__pyx_t_3);
                    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                    __pyx_t_5 = __pyx_t_3;
                    __pyx_t_3 = 0;
                    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                    /*try:*/ {
                      {
                        __Pyx_PyThreadState_declare
                        __Pyx_PyThreadState_assign
                        __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
                        __Pyx_XGOTREF(__pyx_t_15);
                        __Pyx_XGOTREF(__pyx_t_16);
                        __Pyx_XGOTREF(__pyx_t_17);
                        /*try:*/ {
                          __pyx_v_f = __pyx_t_5;
                          __pyx_t_5 = 0;

                          /* "mujoco_py/cymj.pyx":161
 *             filename = os.path.join(td, 'model.mjb')
 *             with open(filename, 'wb') as f:
 *                 f.write(mjb_bytes)             # <<<<<<<<<<<<<<
 *             model = mj_loadModel(filename.encode(), NULL)
 *     if model == NULL:
 */
                          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 161, __pyx_L27_error)
                          __Pyx_GOTREF(__pyx_t_1);
                          __pyx_t_3 = NULL;
                          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
                            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
                            if (likely(__pyx_t_3)) {
                              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                              __Pyx_INCREF(__pyx_t_3);
                              __Pyx_INCREF(function);
                              __Pyx_DECREF_SET(__pyx_t_1, function);
                            }
                          }
                          if (!__pyx_t_3) {
                            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_mjb_bytes); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 161, __pyx_L27_error)
                            __Pyx_GOTREF(__pyx_t_5);
                          } else {
                            #if CYTHON_FAST_PYCALL
                            if (PyFunction_Check(__pyx_t_1)) {
                              PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_mjb_bytes};
                              __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 161, __pyx_L27_error)
                              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                              __Pyx_GOTREF(__pyx_t_5);
                            } else
                            #endif
                            #if CYTHON_FAST_PYCCALL
                            if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
                              PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_mjb_bytes};
                              __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 161, __pyx_L27_error)
                              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                              __Pyx_GOTREF(__pyx_t_5);
                            } else
                            #endif
                            {
                              __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 161, __pyx_L27_error)
                              __Pyx_GOTREF(__pyx_t_2);
                              __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
                              __Pyx_INCREF(__pyx_v_mjb_bytes);
                              __Pyx_GIVEREF(__pyx_v_mjb_bytes);
                              PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_mjb_bytes);
                              __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 161, __pyx_L27_error)
                              __Pyx_GOTREF(__pyx_t_5);
                              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                            }
                          }
                          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

                          /* "mujoco_py/cymj.pyx":160
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 *             with open(filename, 'wb') as f:             # <<<<<<<<<<<<<<
 *                 f.write(mjb_bytes)
 *             model = mj_loadModel(filename.encode(), NULL)
 */
                        }
                        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                        goto __pyx_L32_try_end;
                        __pyx_L27_error:;
                        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                        /*except:*/ {
                          __Pyx_AddTraceback("mujoco_py.cymj.load_model_from_mjb", __pyx_clineno, __pyx_lineno, __pyx_filename);
                          if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(7, 160, __pyx_L29_except_error)
                          __Pyx_GOTREF(__pyx_t_5);
                          __Pyx_GOTREF(__pyx_t_1);
                          __Pyx_GOTREF(__pyx_t_2);
                          __pyx_t_3 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 160, __pyx_L29_except_error)
                          __Pyx_GOTREF(__pyx_t_3);
                          __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_3, NULL);
                          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
                          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                          if (unlikely(!__pyx_t_18)) __PYX_ERR(7, 160, __pyx_L29_except_error)
                          __Pyx_GOTREF(__pyx_t_18);
                          __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_18);
                          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
                          if (__pyx_t_19 < 0) __PYX_ERR(7, 160, __pyx_L29_except_error)
                          __pyx_t_20 = ((!(__pyx_t_19 != 0)) != 0);
                          if (__pyx_t_20) {
                            __Pyx_GIVEREF(__pyx_t_5);
                            __Pyx_GIVEREF(__pyx_t_1);
                            __Pyx_XGIVEREF(__pyx_t_2);
                            __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_1, __pyx_t_2);
                            __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
                            __PYX_ERR(7, 160, __pyx_L29_except_error)
                          }
                          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                          goto __pyx_L28_exception_handled;
                        }
                        __pyx_L29_except_error:;
                        __Pyx_XGIVEREF(__pyx_t_15);
                        __Pyx_XGIVEREF(__pyx_t_16);
                        __Pyx_XGIVEREF(__pyx_t_17);
                        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
                        goto __pyx_L17_error;
                        __pyx_L28_exception_handled:;
                        __Pyx_XGIVEREF(__pyx_t_15);
                        __Pyx_XGIVEREF(__pyx_t_16);
                        __Pyx_XGIVEREF(__pyx_t_17);
                        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
                        __pyx_L32_try_end:;
                      }
                    }
                    /*finally:*/ {
                      /*normal exit:*/{
                        if (__pyx_t_14) {
                          __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_tuple__139, NULL);
                          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
                          if (unlikely(!__pyx_t_17)) __PYX_ERR(7, 160, __pyx_L17_error)
                          __Pyx_GOTREF(__pyx_t_17);
                          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
                        }
                        goto __pyx_L26;
                      }
                      __pyx_L26:;
                    }
                    goto __pyx_L36;
                    __pyx_L23_error:;
                    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
                    goto __pyx_L17_error;
                    __pyx_L36:;
                  }

                  /* "mujoco_py/cymj.pyx":162
 *             with open(filename, 'wb') as f:
 *                 f.write(mjb_bytes)
 *             model = mj_loadModel(filename.encode(), NULL)             # <<<<<<<<<<<<<<
 *     if model == NULL:
 *         raise Exception('%s\nFailed to load MJB')
 */
                  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 162, __pyx_L17_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __pyx_t_5 = NULL;
                  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
                    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
                    if (likely(__pyx_t_5)) {
                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                      __Pyx_INCREF(__pyx_t_5);
                      __Pyx_INCREF(function);
                      __Pyx_DECREF_SET(__pyx_t_1, function);
                    }
                  }
                  if (__pyx_t_5) {
                    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 162, __pyx_L17_error)
                    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  } else {
                    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 162, __pyx_L17_error)
                  }
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __pyx_t_21 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_21) && PyErr_Occurred())) __PYX_ERR(7, 162, __pyx_L17_error)
                  __pyx_v_model = mj_loadModel(__pyx_t_21, NULL);
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

                  /* "mujoco_py/cymj.pyx":158
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():
 *         with TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *             filename = os.path.join(td, 'model.mjb')
 *             with open(filename, 'wb') as f:
 */
                }
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                goto __pyx_L22_try_end;
                __pyx_L17_error:;
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                /*except:*/ {
                  __Pyx_AddTraceback("mujoco_py.cymj.load_model_from_mjb", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_5) < 0) __PYX_ERR(7, 158, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_GOTREF(__pyx_t_5);
                  __pyx_t_3 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 158, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_3, NULL);
                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  if (unlikely(!__pyx_t_14)) __PYX_ERR(7, 158, __pyx_L19_except_error)
                  __Pyx_GOTREF(__pyx_t_14);
                  __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_14);
                  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
                  if (__pyx_t_20 < 0) __PYX_ERR(7, 158, __pyx_L19_except_error)
                  __pyx_t_19 = ((!(__pyx_t_20 != 0)) != 0);
                  if (__pyx_t_19) {
                    __Pyx_GIVEREF(__pyx_t_2);
                    __Pyx_GIVEREF(__pyx_t_1);
                    __Pyx_XGIVEREF(__pyx_t_5);
                    __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_5);
                    __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_5 = 0; 
                    __PYX_ERR(7, 158, __pyx_L19_except_error)
                  }
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  goto __pyx_L18_exception_handled;
                }
                __pyx_L19_except_error:;
                __Pyx_XGIVEREF(__pyx_t_10);
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_XGIVEREF(__pyx_t_12);
                __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
                goto __pyx_L7_error;
                __pyx_L18_exception_handled:;
                __Pyx_XGIVEREF(__pyx_t_10);
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_XGIVEREF(__pyx_t_12);
                __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
                __pyx_L22_try_end:;
              }
            }
            /*finally:*/ {
              /*normal exit:*/{
                if (__pyx_t_9) {
                  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__140, NULL);
                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
                  if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 158, __pyx_L7_error)
                  __Pyx_GOTREF(__pyx_t_12);
                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                }
                goto __pyx_L16;
              }
              __pyx_L16:;
            }
            goto __pyx_L40;
            __pyx_L13_error:;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            goto __pyx_L7_error;
            __pyx_L40:;
          }

          /* "mujoco_py/cymj.pyx":157
 *     """
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mujoco_py.cymj.load_model_from_mjb", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(7, 157, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_3 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 157, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 157, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (__pyx_t_19 < 0) __PYX_ERR(7, 157, __pyx_L9_except_error)
          __pyx_t_20 = ((!(__pyx_t_19 != 0)) != 0);
          if (__pyx_t_20) {
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_2);
            __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_1, __pyx_t_2);
            __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
            __PYX_ERR(7, 157, __pyx_L9_except_error)
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__141, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 157, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L44;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L44:;
  }

  /* "mujoco_py/cymj.pyx":163
 *                 f.write(mjb_bytes)
 *             model = mj_loadModel(filename.encode(), NULL)
 *     if model == NULL:             # <<<<<<<<<<<<<<
 *         raise Exception('%s\nFailed to load MJB')
 *     return WrapMjModel(model)
 */
  __pyx_t_20 = ((__pyx_v_model == NULL) != 0);
  if (__pyx_t_20) {

    /* "mujoco_py/cymj.pyx":164
 *             model = mj_loadModel(filename.encode(), NULL)
 *     if model == NULL:
 *         raise Exception('%s\nFailed to load MJB')             # <<<<<<<<<<<<<<
 *     return WrapMjModel(model)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__142, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(7, 164, __pyx_L1_error)

    /* "mujoco_py/cymj.pyx":163
 *                 f.write(mjb_bytes)
 *             model = mj_loadModel(filename.encode(), NULL)
 *     if model == NULL:             # <<<<<<<<<<<<<<
 *         raise Exception('%s\nFailed to load MJB')
 *     return WrapMjModel(model)
 */
  }

  /* "mujoco_py/cymj.pyx":165
 *     if model == NULL:
 *         raise Exception('%s\nFailed to load MJB')
 *     return WrapMjModel(model)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_9mujoco_py_4cymj_WrapMjModel(__pyx_v_model)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "mujoco_py/cymj.pyx":151
 * 
 * 
 * def load_model_from_mjb(bytes mjb_bytes):             # <<<<<<<<<<<<<<
 *     """
 *     Loads and returns a PyMjModel model from bytes encoded MJB.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mujoco_py.cymj.load_model_from_mjb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_td);
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":214
 *         # experimental exception made for __getbuffer__ and __releasebuffer__
 *         # -- the details of this may change.
 *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
 *             # This implementation of getbuffer is geared towards Cython
 *             # requirements, and does not yet fullfill the PEP.
 */

/* Python wrapper */
static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
  __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
  int __pyx_v_copy_shape;
  int __pyx_v_i;
  int __pyx_v_ndim;
  int __pyx_v_endian_detector;
  int __pyx_v_little_endian;
  int __pyx_v_t;
  char *__pyx_v_f;
  PyArray_Descr *__pyx_v_descr = 0;
  int __pyx_v_offset;
  int __pyx_v_hasfields;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  char *__pyx_t_7;
  __Pyx_RefNannySetupContext("__getbuffer__", 0);
  if (__pyx_v_info != NULL) {
    __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(__pyx_v_info->obj);
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220
 *             # of flags
 * 
 *             if info == NULL: return             # <<<<<<<<<<<<<<
 * 
 *             cdef int copy_shape, i, ndim
 */
  __pyx_t_1 = ((__pyx_v_info == NULL) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":223
 * 
 *             cdef int copy_shape, i, ndim
 *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
 *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
 * 
 */
  __pyx_v_endian_detector = 1;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":224
 *             cdef int copy_shape, i, ndim
 *             cdef int endian_detector = 1
 *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
 * 
 *             ndim = PyArray_NDIM(self)
 */
  __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":226
 *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
 * 
 *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
 * 
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 */
  __pyx_v_ndim = PyArray_NDIM(__pyx_v_self);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":228
 *             ndim = PyArray_NDIM(self)
 * 
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
 *                 copy_shape = 1
 *             else:
 */
  __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":229
 * 
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 *                 copy_shape = 1             # <<<<<<<<<<<<<<
 *             else:
 *                 copy_shape = 0
 */
    __pyx_v_copy_shape = 1;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":228
 *             ndim = PyArray_NDIM(self)
 * 
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
 *                 copy_shape = 1
 *             else:
 */
    goto __pyx_L4;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":231
 *                 copy_shape = 1
 *             else:
 *                 copy_shape = 0             # <<<<<<<<<<<<<<
 * 
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
 */
  /*else*/ {
    __pyx_v_copy_shape = 0;
  }
  __pyx_L4:;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":233
 *                 copy_shape = 0
 * 
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not C contiguous")
 */
  __pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L6_bool_binop_done;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":234
 * 
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
 *                 raise ValueError(u"ndarray is not C contiguous")
 * 
 */
  __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L6_bool_binop_done:;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":233
 *                 copy_shape = 0
 * 
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not C contiguous")
 */
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":235
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__143, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(8, 235, __pyx_L1_error)

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":233
 *                 copy_shape = 0
 * 
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not C contiguous")
 */
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":237
 *                 raise ValueError(u"ndarray is not C contiguous")
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not Fortran contiguous")
 */
  __pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L9_bool_binop_done;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":238
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
 *                 raise ValueError(u"ndarray is not Fortran contiguous")
 * 
 */
  __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L9_bool_binop_done:;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":237
 *                 raise ValueError(u"ndarray is not C contiguous")
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not Fortran contiguous")
 */
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":239
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
 * 
 *             info.buf = PyArray_DATA(self)
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__144, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(8, 239, __pyx_L1_error)

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":237
 *                 raise ValueError(u"ndarray is not C contiguous")
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not Fortran contiguous")
 */
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":241
 *                 raise ValueError(u"ndarray is not Fortran contiguous")
 * 
 *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
 *             info.ndim = ndim
 *             if copy_shape:
 */
  __pyx_v_info->buf = PyArray_DATA(__pyx_v_self);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":242
 * 
 *             info.buf = PyArray_DATA(self)
 *             info.ndim = ndim             # <<<<<<<<<<<<<<
 *             if copy_shape:
 *                 # Allocate new buffer for strides and shape info.
 */
  __pyx_v_info->ndim = __pyx_v_ndim;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":243
 *             info.buf = PyArray_DATA(self)
 *             info.ndim = ndim
 *             if copy_shape:             # <<<<<<<<<<<<<<
 *                 # Allocate new buffer for strides and shape info.
 *                 # This is allocated as one block, strides first.
 */
  __pyx_t_1 = (__pyx_v_copy_shape != 0);
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":246
 *                 # Allocate new buffer for strides and shape info.
 *                 # This is allocated as one block, strides first.
 *                 info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)             # <<<<<<<<<<<<<<
 *                 info.shape = info.strides + ndim
 *                 for i in range(ndim):
 */
    __pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim))));

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":247
 *                 # This is allocated as one block, strides first.
 *                 info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
 *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
 *                 for i in range(ndim):
 *                     info.strides[i] = PyArray_STRIDES(self)[i]
 */
    __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":248
 *                 info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
 *                 info.shape = info.strides + ndim
 *                 for i in range(ndim):             # <<<<<<<<<<<<<<
 *                     info.strides[i] = PyArray_STRIDES(self)[i]
 *                     info.shape[i] = PyArray_DIMS(self)[i]
 */
    __pyx_t_4 = __pyx_v_ndim;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_v_i = __pyx_t_5;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":249
 *                 info.shape = info.strides + ndim
 *                 for i in range(ndim):
 *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
 *                     info.shape[i] = PyArray_DIMS(self)[i]
 *             else:
 */
      (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":250
 *                 for i in range(ndim):
 *                     info.strides[i] = PyArray_STRIDES(self)[i]
 *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
 *             else:
 *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
 */
      (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
    }

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":243
 *             info.buf = PyArray_DATA(self)
 *             info.ndim = ndim
 *             if copy_shape:             # <<<<<<<<<<<<<<
 *                 # Allocate new buffer for strides and shape info.
 *                 # This is allocated as one block, strides first.
 */
    goto __pyx_L11;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":252
 *                     info.shape[i] = PyArray_DIMS(self)[i]
 *             else:
 *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
 *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
 *             info.suboffsets = NULL
 */
  /*else*/ {
    __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":253
 *             else:
 *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
 *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
 *             info.suboffsets = NULL
 *             info.itemsize = PyArray_ITEMSIZE(self)
 */
    __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self));
  }
  __pyx_L11:;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":254
 *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
 *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
 *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
 *             info.itemsize = PyArray_ITEMSIZE(self)
 *             info.readonly = not PyArray_ISWRITEABLE(self)
 */
  __pyx_v_info->suboffsets = NULL;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":255
 *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
 *             info.suboffsets = NULL
 *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
 *             info.readonly = not PyArray_ISWRITEABLE(self)
 * 
 */
  __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":256
 *             info.suboffsets = NULL
 *             info.itemsize = PyArray_ITEMSIZE(self)
 *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
 * 
 *             cdef int t
 */
  __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":259
 * 
 *             cdef int t
 *             cdef char* f = NULL             # <<<<<<<<<<<<<<
 *             cdef dtype descr = self.descr
 *             cdef int offset
 */
  __pyx_v_f = NULL;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":260
 *             cdef int t
 *             cdef char* f = NULL
 *             cdef dtype descr = self.descr             # <<<<<<<<<<<<<<
 *             cdef int offset
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":263
 *             cdef int offset
 * 
 *             cdef bint hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
 * 
 *             if not hasfields and not copy_shape:
 */
  __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265
 *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
 * 
 *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
 *                 # do not call releasebuffer
 *                 info.obj = None
 */
  __pyx_t_2 = ((!(__pyx_v_hasfields != 0)) != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L15_bool_binop_done;
  }
  __pyx_t_2 = ((!(__pyx_v_copy_shape != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L15_bool_binop_done:;
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":267
 *             if not hasfields and not copy_shape:
 *                 # do not call releasebuffer
 *                 info.obj = None             # <<<<<<<<<<<<<<
 *             else:
 *                 # need to call releasebuffer
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_info->obj);
    __Pyx_DECREF(__pyx_v_info->obj);
    __pyx_v_info->obj = Py_None;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265
 *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
 * 
 *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
 *                 # do not call releasebuffer
 *                 info.obj = None
 */
    goto __pyx_L14;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270
 *             else:
 *                 # need to call releasebuffer
 *                 info.obj = self             # <<<<<<<<<<<<<<
 * 
 *             if not hasfields:
 */
  /*else*/ {
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    __Pyx_GOTREF(__pyx_v_info->obj);
    __Pyx_DECREF(__pyx_v_info->obj);
    __pyx_v_info->obj = ((PyObject *)__pyx_v_self);
  }
  __pyx_L14:;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272
 *                 info.obj = self
 * 
 *             if not hasfields:             # <<<<<<<<<<<<<<
 *                 t = descr.type_num
 *                 if ((descr.byteorder == c'>' and little_endian) or
 */
  __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0);
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":273
 * 
 *             if not hasfields:
 *                 t = descr.type_num             # <<<<<<<<<<<<<<
 *                 if ((descr.byteorder == c'>' and little_endian) or
 *                     (descr.byteorder == c'<' and not little_endian)):
 */
    __pyx_t_4 = __pyx_v_descr->type_num;
    __pyx_v_t = __pyx_t_4;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274
 *             if not hasfields:
 *                 t = descr.type_num
 *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
 *                     (descr.byteorder == c'<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")
 */
    __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0);
    if (!__pyx_t_2) {
      goto __pyx_L20_next_or;
    } else {
    }
    __pyx_t_2 = (__pyx_v_little_endian != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L19_bool_binop_done;
    }
    __pyx_L20_next_or:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":275
 *                 t = descr.type_num
 *                 if ((descr.byteorder == c'>' and little_endian) or
 *                     (descr.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
 *                     raise ValueError(u"Non-native byte order not supported")
 *                 if   t == NPY_BYTE:        f = "b"
 */
    __pyx_t_2 = ((__pyx_v_descr->byteorder == '<') != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L19_bool_binop_done;
    }
    __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L19_bool_binop_done:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274
 *             if not hasfields:
 *                 t = descr.type_num
 *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
 *                     (descr.byteorder == c'<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")
 */
    if (__pyx_t_1) {

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276
 *                 if ((descr.byteorder == c'>' and little_endian) or
 *                     (descr.byteorder == c'<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
 *                 if   t == NPY_BYTE:        f = "b"
 *                 elif t == NPY_UBYTE:       f = "B"
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__145, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 276, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(8, 276, __pyx_L1_error)

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274
 *             if not hasfields:
 *                 t = descr.type_num
 *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
 *                     (descr.byteorder == c'<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")
 */
    }

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":277
 *                     (descr.byteorder == c'<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")
 *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_UBYTE:       f = "B"
 *                 elif t == NPY_SHORT:       f = "h"
 */
    switch (__pyx_v_t) {
      case NPY_BYTE:
      __pyx_v_f = ((char *)"b");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":278
 *                     raise ValueError(u"Non-native byte order not supported")
 *                 if   t == NPY_BYTE:        f = "b"
 *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_SHORT:       f = "h"
 *                 elif t == NPY_USHORT:      f = "H"
 */
      case NPY_UBYTE:
      __pyx_v_f = ((char *)"B");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":279
 *                 if   t == NPY_BYTE:        f = "b"
 *                 elif t == NPY_UBYTE:       f = "B"
 *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_USHORT:      f = "H"
 *                 elif t == NPY_INT:         f = "i"
 */
      case NPY_SHORT:
      __pyx_v_f = ((char *)"h");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280
 *                 elif t == NPY_UBYTE:       f = "B"
 *                 elif t == NPY_SHORT:       f = "h"
 *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_INT:         f = "i"
 *                 elif t == NPY_UINT:        f = "I"
 */
      case NPY_USHORT:
      __pyx_v_f = ((char *)"H");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":281
 *                 elif t == NPY_SHORT:       f = "h"
 *                 elif t == NPY_USHORT:      f = "H"
 *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_UINT:        f = "I"
 *                 elif t == NPY_LONG:        f = "l"
 */
      case NPY_INT:
      __pyx_v_f = ((char *)"i");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":282
 *                 elif t == NPY_USHORT:      f = "H"
 *                 elif t == NPY_INT:         f = "i"
 *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_LONG:        f = "l"
 *                 elif t == NPY_ULONG:       f = "L"
 */
      case NPY_UINT:
      __pyx_v_f = ((char *)"I");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":283
 *                 elif t == NPY_INT:         f = "i"
 *                 elif t == NPY_UINT:        f = "I"
 *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_ULONG:       f = "L"
 *                 elif t == NPY_LONGLONG:    f = "q"
 */
      case NPY_LONG:
      __pyx_v_f = ((char *)"l");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":284
 *                 elif t == NPY_UINT:        f = "I"
 *                 elif t == NPY_LONG:        f = "l"
 *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_LONGLONG:    f = "q"
 *                 elif t == NPY_ULONGLONG:   f = "Q"
 */
      case NPY_ULONG:
      __pyx_v_f = ((char *)"L");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":285
 *                 elif t == NPY_LONG:        f = "l"
 *                 elif t == NPY_ULONG:       f = "L"
 *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_ULONGLONG:   f = "Q"
 *                 elif t == NPY_FLOAT:       f = "f"
 */
      case NPY_LONGLONG:
      __pyx_v_f = ((char *)"q");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":286
 *                 elif t == NPY_ULONG:       f = "L"
 *                 elif t == NPY_LONGLONG:    f = "q"
 *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_FLOAT:       f = "f"
 *                 elif t == NPY_DOUBLE:      f = "d"
 */
      case NPY_ULONGLONG:
      __pyx_v_f = ((char *)"Q");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":287
 *                 elif t == NPY_LONGLONG:    f = "q"
 *                 elif t == NPY_ULONGLONG:   f = "Q"
 *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_DOUBLE:      f = "d"
 *                 elif t == NPY_LONGDOUBLE:  f = "g"
 */
      case NPY_FLOAT:
      __pyx_v_f = ((char *)"f");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":288
 *                 elif t == NPY_ULONGLONG:   f = "Q"
 *                 elif t == NPY_FLOAT:       f = "f"
 *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_LONGDOUBLE:  f = "g"
 *                 elif t == NPY_CFLOAT:      f = "Zf"
 */
      case NPY_DOUBLE:
      __pyx_v_f = ((char *)"d");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":289
 *                 elif t == NPY_FLOAT:       f = "f"
 *                 elif t == NPY_DOUBLE:      f = "d"
 *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_CFLOAT:      f = "Zf"
 *                 elif t == NPY_CDOUBLE:     f = "Zd"
 */
      case NPY_LONGDOUBLE:
      __pyx_v_f = ((char *)"g");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290
 *                 elif t == NPY_DOUBLE:      f = "d"
 *                 elif t == NPY_LONGDOUBLE:  f = "g"
 *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_CDOUBLE:     f = "Zd"
 *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
 */
      case NPY_CFLOAT:
      __pyx_v_f = ((char *)"Zf");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291
 *                 elif t == NPY_LONGDOUBLE:  f = "g"
 *                 elif t == NPY_CFLOAT:      f = "Zf"
 *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
 *                 elif t == NPY_OBJECT:      f = "O"
 */
      case NPY_CDOUBLE:
      __pyx_v_f = ((char *)"Zd");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":292
 *                 elif t == NPY_CFLOAT:      f = "Zf"
 *                 elif t == NPY_CDOUBLE:     f = "Zd"
 *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_OBJECT:      f = "O"
 *                 else:
 */
      case NPY_CLONGDOUBLE:
      __pyx_v_f = ((char *)"Zg");
      break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293
 *                 elif t == NPY_CDOUBLE:     f = "Zd"
 *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
 *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
 *                 else:
 *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 */
      case NPY_OBJECT:
      __pyx_v_f = ((char *)"O");
      break;
      default:

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":295
 *                 elif t == NPY_OBJECT:      f = "O"
 *                 else:
 *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
 *                 info.format = f
 *                 return
 */
      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 295, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 295, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 295, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 295, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(8, 295, __pyx_L1_error)
      break;
    }

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":296
 *                 else:
 *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 *                 info.format = f             # <<<<<<<<<<<<<<
 *                 return
 *             else:
 */
    __pyx_v_info->format = __pyx_v_f;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":297
 *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 *                 info.format = f
 *                 return             # <<<<<<<<<<<<<<
 *             else:
 *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272
 *                 info.obj = self
 * 
 *             if not hasfields:             # <<<<<<<<<<<<<<
 *                 t = descr.type_num
 *                 if ((descr.byteorder == c'>' and little_endian) or
 */
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":299
 *                 return
 *             else:
 *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
 *                 info.format[0] = c'^' # Native data types, manual alignment
 *                 offset = 0
 */
  /*else*/ {
    __pyx_v_info->format = ((char *)PyObject_Malloc(0xFF));

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":300
 *             else:
 *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
 *                 info.format[0] = c'^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
 *                 offset = 0
 *                 f = _util_dtypestring(descr, info.format + 1,
 */
    (__pyx_v_info->format[0]) = '^';

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":301
 *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
 *                 info.format[0] = c'^' # Native data types, manual alignment
 *                 offset = 0             # <<<<<<<<<<<<<<
 *                 f = _util_dtypestring(descr, info.format + 1,
 *                                       info.format + _buffer_format_string_len,
 */
    __pyx_v_offset = 0;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302
 *                 info.format[0] = c'^' # Native data types, manual alignment
 *                 offset = 0
 *                 f = _util_dtypestring(descr, info.format + 1,             # <<<<<<<<<<<<<<
 *                                       info.format + _buffer_format_string_len,
 *                                       &offset)
 */
    __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(8, 302, __pyx_L1_error)
    __pyx_v_f = __pyx_t_7;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":305
 *                                       info.format + _buffer_format_string_len,
 *                                       &offset)
 *                 f[0] = c'\0' # Terminate format string             # <<<<<<<<<<<<<<
 * 
 *         def __releasebuffer__(ndarray self, Py_buffer* info):
 */
    (__pyx_v_f[0]) = '\x00';
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":214
 *         # experimental exception made for __getbuffer__ and __releasebuffer__
 *         # -- the details of this may change.
 *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
 *             # This implementation of getbuffer is geared towards Cython
 *             # requirements, and does not yet fullfill the PEP.
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) {
    __Pyx_GOTREF(__pyx_v_info->obj);
    __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = NULL;
  }
  goto __pyx_L2;
  __pyx_L0:;
  if (__pyx_v_info != NULL && __pyx_v_info->obj == Py_None) {
    __Pyx_GOTREF(Py_None);
    __Pyx_DECREF(Py_None); __pyx_v_info->obj = NULL;
  }
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_descr);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":307
 *                 f[0] = c'\0' # Terminate format string
 * 
 *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
 *             if PyArray_HASFIELDS(self):
 *                 PyObject_Free(info.format)
 */

/* Python wrapper */
static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0);
  __pyx_pf_5numpy_7ndarray_2__releasebuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__releasebuffer__", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":308
 * 
 *         def __releasebuffer__(ndarray self, Py_buffer* info):
 *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
 *                 PyObject_Free(info.format)
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 */
  __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":309
 *         def __releasebuffer__(ndarray self, Py_buffer* info):
 *             if PyArray_HASFIELDS(self):
 *                 PyObject_Free(info.format)             # <<<<<<<<<<<<<<
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 *                 PyObject_Free(info.strides)
 */
    PyObject_Free(__pyx_v_info->format);

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":308
 * 
 *         def __releasebuffer__(ndarray self, Py_buffer* info):
 *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
 *                 PyObject_Free(info.format)
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 */
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":310
 *             if PyArray_HASFIELDS(self):
 *                 PyObject_Free(info.format)
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
 *                 PyObject_Free(info.strides)
 *                 # info.shape was stored after info.strides in the same block
 */
  __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":311
 *                 PyObject_Free(info.format)
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 *                 PyObject_Free(info.strides)             # <<<<<<<<<<<<<<
 *                 # info.shape was stored after info.strides in the same block
 * 
 */
    PyObject_Free(__pyx_v_info->strides);

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":310
 *             if PyArray_HASFIELDS(self):
 *                 PyObject_Free(info.format)
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
 *                 PyObject_Free(info.strides)
 *                 # info.shape was stored after info.strides in the same block
 */
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":307
 *                 f[0] = c'\0' # Terminate format string
 * 
 *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
 *             if PyArray_HASFIELDS(self):
 *                 PyObject_Free(info.format)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":788
 * ctypedef npy_cdouble     complex_t
 * 
 * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":789
 * 
 * cdef inline object PyArray_MultiIterNew1(a):
 *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":788
 * ctypedef npy_cdouble     complex_t
 * 
 * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":792
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":794
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":795
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":794
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":797
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":798
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":797
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":800
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":800
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":803
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
 *     if PyDataType_HASSUBARRAY(d):
 *         return <tuple>d.subarray.shape
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":804
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):
 *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
 *         return <tuple>d.subarray.shape
 *     else:
 */
  __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":805
 * cdef inline tuple PyDataType_SHAPE(dtype d):
 *     if PyDataType_HASSUBARRAY(d):
 *         return <tuple>d.subarray.shape             # <<<<<<<<<<<<<<
 *     else:
 *         return ()
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape));
    __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
    goto __pyx_L0;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":804
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):
 *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
 *         return <tuple>d.subarray.shape
 *     else:
 */
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":807
 *         return <tuple>d.subarray.shape
 *     else:
 *         return ()             # <<<<<<<<<<<<<<
 * 
 * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_empty_tuple);
    __pyx_r = __pyx_empty_tuple;
    goto __pyx_L0;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":803
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
 *     if PyDataType_HASSUBARRAY(d):
 *         return <tuple>d.subarray.shape
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":809
 *         return ()
 * 
 * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
 *     # Recursive utility function used in __getbuffer__ to get format
 *     # string. The new location in the format string is returned.
 */

static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) {
  PyArray_Descr *__pyx_v_child = 0;
  int __pyx_v_endian_detector;
  int __pyx_v_little_endian;
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_childname = NULL;
  PyObject *__pyx_v_new_offset = NULL;
  PyObject *__pyx_v_t = NULL;
  char *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  long __pyx_t_8;
  char *__pyx_t_9;
  __Pyx_RefNannySetupContext("_util_dtypestring", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":814
 * 
 *     cdef dtype child
 *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
 *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
 *     cdef tuple fields
 */
  __pyx_v_endian_detector = 1;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":815
 *     cdef dtype child
 *     cdef int endian_detector = 1
 *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
 *     cdef tuple fields
 * 
 */
  __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":818
 *     cdef tuple fields
 * 
 *     for childname in descr.names:             # <<<<<<<<<<<<<<
 *         fields = descr.fields[childname]
 *         child, new_offset = fields
 */
  if (unlikely(__pyx_v_descr->names == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(8, 818, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(8, 818, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 818, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":819
 * 
 *     for childname in descr.names:
 *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
 *         child, new_offset = fields
 * 
 */
    if (unlikely(__pyx_v_descr->fields == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(8, 819, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 819, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(8, 819, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":820
 *     for childname in descr.names:
 *         fields = descr.fields[childname]
 *         child, new_offset = fields             # <<<<<<<<<<<<<<
 * 
 *         if (end - f) - <int>(new_offset - offset[0]) < 15:
 */
    if (likely(__pyx_v_fields != Py_None)) {
      PyObject* sequence = __pyx_v_fields;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(8, 820, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 820, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 820, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    } else {
      __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(8, 820, __pyx_L1_error)
    }
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(8, 820, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
    __pyx_t_3 = 0;
    __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822
 *         child, new_offset = fields
 * 
 *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
 * 
 */
    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 822, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 822, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(8, 822, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
    if (__pyx_t_6) {

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":823
 * 
 *         if (end - f) - <int>(new_offset - offset[0]) < 15:
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
 * 
 *         if ((child.byteorder == c'>' and little_endian) or
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__146, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 823, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(8, 823, __pyx_L1_error)

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822
 *         child, new_offset = fields
 * 
 *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
 * 
 */
    }

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":825
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
 * 
 *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
 *             (child.byteorder == c'<' and not little_endian)):
 *             raise ValueError(u"Non-native byte order not supported")
 */
    __pyx_t_7 = ((__pyx_v_child->byteorder == '>') != 0);
    if (!__pyx_t_7) {
      goto __pyx_L8_next_or;
    } else {
    }
    __pyx_t_7 = (__pyx_v_little_endian != 0);
    if (!__pyx_t_7) {
    } else {
      __pyx_t_6 = __pyx_t_7;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_L8_next_or:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":826
 * 
 *         if ((child.byteorder == c'>' and little_endian) or
 *             (child.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
 *             raise ValueError(u"Non-native byte order not supported")
 *             # One could encode it in the format string and have Cython
 */
    __pyx_t_7 = ((__pyx_v_child->byteorder == '<') != 0);
    if (__pyx_t_7) {
    } else {
      __pyx_t_6 = __pyx_t_7;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0);
    __pyx_t_6 = __pyx_t_7;
    __pyx_L7_bool_binop_done:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":825
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
 * 
 *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
 *             (child.byteorder == c'<' and not little_endian)):
 *             raise ValueError(u"Non-native byte order not supported")
 */
    if (__pyx_t_6) {

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827
 *         if ((child.byteorder == c'>' and little_endian) or
 *             (child.byteorder == c'<' and not little_endian)):
 *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
 *             # One could encode it in the format string and have Cython
 *             # complain instead, BUT: < and > in format strings also imply
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__147, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 827, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(8, 827, __pyx_L1_error)

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":825
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
 * 
 *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
 *             (child.byteorder == c'<' and not little_endian)):
 *             raise ValueError(u"Non-native byte order not supported")
 */
    }

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837
 * 
 *         # Output padding bytes
 *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
 *             f[0] = 120 # "x"; pad byte
 *             f += 1
 */
    while (1) {
      __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 837, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 837, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 837, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (!__pyx_t_6) break;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":838
 *         # Output padding bytes
 *         while offset[0] < new_offset:
 *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
 *             f += 1
 *             offset[0] += 1
 */
      (__pyx_v_f[0]) = 0x78;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":839
 *         while offset[0] < new_offset:
 *             f[0] = 120 # "x"; pad byte
 *             f += 1             # <<<<<<<<<<<<<<
 *             offset[0] += 1
 * 
 */
      __pyx_v_f = (__pyx_v_f + 1);

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":840
 *             f[0] = 120 # "x"; pad byte
 *             f += 1
 *             offset[0] += 1             # <<<<<<<<<<<<<<
 * 
 *         offset[0] += child.itemsize
 */
      __pyx_t_8 = 0;
      (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
    }

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842
 *             offset[0] += 1
 * 
 *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
 * 
 *         if not PyDataType_HASFIELDS(child):
 */
    __pyx_t_8 = 0;
    (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":844
 *         offset[0] += child.itemsize
 * 
 *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
 *             t = child.type_num
 *             if end - f < 5:
 */
    __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
    if (__pyx_t_6) {

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":845
 * 
 *         if not PyDataType_HASFIELDS(child):
 *             t = child.type_num             # <<<<<<<<<<<<<<
 *             if end - f < 5:
 *                 raise RuntimeError(u"Format string allocated too short.")
 */
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 845, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":846
 *         if not PyDataType_HASFIELDS(child):
 *             t = child.type_num
 *             if end - f < 5:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(u"Format string allocated too short.")
 * 
 */
      __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
      if (__pyx_t_6) {

        /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":847
 *             t = child.type_num
 *             if end - f < 5:
 *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
 * 
 *             # Until ticket #99 is fixed, use integers to avoid warnings
 */
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__148, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 847, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __PYX_ERR(8, 847, __pyx_L1_error)

        /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":846
 *         if not PyDataType_HASFIELDS(child):
 *             t = child.type_num
 *             if end - f < 5:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(u"Format string allocated too short.")
 * 
 */
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":850
 * 
 *             # Until ticket #99 is fixed, use integers to avoid warnings
 *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
 *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"
 */
      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 850, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 850, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 850, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 98;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851
 *             # Until ticket #99 is fixed, use integers to avoid warnings
 *             if   t == NPY_BYTE:        f[0] =  98 #"b"
 *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"
 */
      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 851, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 851, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 851, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 66;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":852
 *             if   t == NPY_BYTE:        f[0] =  98 #"b"
 *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"
 *             elif t == NPY_INT:         f[0] = 105 #"i"
 */
      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 852, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 852, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 852, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 0x68;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":853
 *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
 *             elif t == NPY_INT:         f[0] = 105 #"i"
 *             elif t == NPY_UINT:        f[0] =  73 #"I"
 */
      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 853, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 853, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 853, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 72;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":854
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"
 *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
 *             elif t == NPY_UINT:        f[0] =  73 #"I"
 *             elif t == NPY_LONG:        f[0] = 108 #"l"
 */
      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 854, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 854, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 854, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 0x69;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"
 *             elif t == NPY_INT:         f[0] = 105 #"i"
 *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
 *             elif t == NPY_LONG:        f[0] = 108 #"l"
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"
 */
      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 855, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 855, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 855, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 73;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856
 *             elif t == NPY_INT:         f[0] = 105 #"i"
 *             elif t == NPY_UINT:        f[0] =  73 #"I"
 *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
 */
      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 856, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 856, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 856, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 0x6C;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":857
 *             elif t == NPY_UINT:        f[0] =  73 #"I"
 *             elif t == NPY_LONG:        f[0] = 108 #"l"
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
 */
      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 857, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 857, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 857, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 76;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858
 *             elif t == NPY_LONG:        f[0] = 108 #"l"
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
 */
      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 858, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 858, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 858, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 0x71;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":859
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
 */
      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 859, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 859, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 859, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 81;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":860
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
 */
      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 860, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 860, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 0x66;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":861
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
 */
      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 861, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 861, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 861, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 0x64;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":862
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
 */
      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 862, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 862, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 862, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 0x67;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":863
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
 *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
 */
      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 863, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 863, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 863, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 90;
        (__pyx_v_f[1]) = 0x66;
        __pyx_v_f = (__pyx_v_f + 1);
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":864
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
 *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
 *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
 */
      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 864, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 864, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 864, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 90;
        (__pyx_v_f[1]) = 0x64;
        __pyx_v_f = (__pyx_v_f + 1);
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":865
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
 *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
 *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
 *             else:
 */
      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 865, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 865, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 865, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 90;
        (__pyx_v_f[1]) = 0x67;
        __pyx_v_f = (__pyx_v_f + 1);
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":866
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
 *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
 *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 */
      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 866, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 866, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(8, 866, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 79;
        goto __pyx_L15;
      }

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":868
 *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
 *             else:
 *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
 *             f += 1
 *         else:
 */
      /*else*/ {
        __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 868, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 868, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 868, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(8, 868, __pyx_L1_error)
      }
      __pyx_L15:;

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":869
 *             else:
 *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 *             f += 1             # <<<<<<<<<<<<<<
 *         else:
 *             # Cython ignores struct boundary information ("T{...}"),
 */
      __pyx_v_f = (__pyx_v_f + 1);

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":844
 *         offset[0] += child.itemsize
 * 
 *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
 *             t = child.type_num
 *             if end - f < 5:
 */
      goto __pyx_L13;
    }

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":873
 *             # Cython ignores struct boundary information ("T{...}"),
 *             # so don't output it
 *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
 *     return f
 * 
 */
    /*else*/ {
      __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(8, 873, __pyx_L1_error)
      __pyx_v_f = __pyx_t_9;
    }
    __pyx_L13:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":818
 *     cdef tuple fields
 * 
 *     for childname in descr.names:             # <<<<<<<<<<<<<<
 *         fields = descr.fields[childname]
 *         child, new_offset = fields
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":874
 *             # so don't output it
 *             f = _util_dtypestring(child, f, end, offset)
 *     return f             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_f;
  goto __pyx_L0;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":809
 *         return ()
 * 
 * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
 *     # Recursive utility function used in __getbuffer__ to get format
 *     # string. The new location in the format string is returned.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_child);
  __Pyx_XDECREF(__pyx_v_fields);
  __Pyx_XDECREF(__pyx_v_childname);
  __Pyx_XDECREF(__pyx_v_new_offset);
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":990
 * 
 * 
 * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
 *      cdef PyObject* baseptr
 *      if base is None:
 */

static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
  PyObject *__pyx_v_baseptr;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("set_array_base", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992
 * cdef inline void set_array_base(ndarray arr, object base):
 *      cdef PyObject* baseptr
 *      if base is None:             # <<<<<<<<<<<<<<
 *          baseptr = NULL
 *      else:
 */
  __pyx_t_1 = (__pyx_v_base == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":993
 *      cdef PyObject* baseptr
 *      if base is None:
 *          baseptr = NULL             # <<<<<<<<<<<<<<
 *      else:
 *          Py_INCREF(base) # important to do this before decref below!
 */
    __pyx_v_baseptr = NULL;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992
 * cdef inline void set_array_base(ndarray arr, object base):
 *      cdef PyObject* baseptr
 *      if base is None:             # <<<<<<<<<<<<<<
 *          baseptr = NULL
 *      else:
 */
    goto __pyx_L3;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":995
 *          baseptr = NULL
 *      else:
 *          Py_INCREF(base) # important to do this before decref below!             # <<<<<<<<<<<<<<
 *          baseptr = <PyObject*>base
 *      Py_XDECREF(arr.base)
 */
  /*else*/ {
    Py_INCREF(__pyx_v_base);

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":996
 *      else:
 *          Py_INCREF(base) # important to do this before decref below!
 *          baseptr = <PyObject*>base             # <<<<<<<<<<<<<<
 *      Py_XDECREF(arr.base)
 *      arr.base = baseptr
 */
    __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
  }
  __pyx_L3:;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":997
 *          Py_INCREF(base) # important to do this before decref below!
 *          baseptr = <PyObject*>base
 *      Py_XDECREF(arr.base)             # <<<<<<<<<<<<<<
 *      arr.base = baseptr
 * 
 */
  Py_XDECREF(__pyx_v_arr->base);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998
 *          baseptr = <PyObject*>base
 *      Py_XDECREF(arr.base)
 *      arr.base = baseptr             # <<<<<<<<<<<<<<
 * 
 * cdef inline object get_array_base(ndarray arr):
 */
  __pyx_v_arr->base = __pyx_v_baseptr;

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":990
 * 
 * 
 * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
 *      cdef PyObject* baseptr
 *      if base is None:
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1000
 *      arr.base = baseptr
 * 
 * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
 *     if arr.base is NULL:
 *         return None
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("get_array_base", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1001
 * 
 * cdef inline object get_array_base(ndarray arr):
 *     if arr.base is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     else:
 */
  __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
  if (__pyx_t_1) {

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1002
 * cdef inline object get_array_base(ndarray arr):
 *     if arr.base is NULL:
 *         return None             # <<<<<<<<<<<<<<
 *     else:
 *         return <object>arr.base
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1001
 * 
 * cdef inline object get_array_base(ndarray arr):
 *     if arr.base is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     else:
 */
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1004
 *         return None
 *     else:
 *         return <object>arr.base             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
    __pyx_r = ((PyObject *)__pyx_v_arr->base);
    goto __pyx_L0;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1000
 *      arr.base = baseptr
 * 
 * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
 *     if arr.base is NULL:
 *         return None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1009
 * # Versions of the import_* functions which are more suitable for
 * # Cython code.
 * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_array()
 */

static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("import_array", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1010
 * # Cython code.
 * cdef inline int import_array() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_array()
 *     except Exception:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1011
 * cdef inline int import_array() except -1:
 *     try:
 *         _import_array()             # <<<<<<<<<<<<<<
 *     except Exception:
 *         raise ImportError("numpy.core.multiarray failed to import")
 */
      __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(8, 1011, __pyx_L3_error)

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1010
 * # Cython code.
 * cdef inline int import_array() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_array()
 *     except Exception:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1012
 *     try:
 *         _import_array()
 *     except Exception:             # <<<<<<<<<<<<<<
 *         raise ImportError("numpy.core.multiarray failed to import")
 * 
 */
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
    if (__pyx_t_4) {
      __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(8, 1012, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1013
 *         _import_array()
 *     except Exception:
 *         raise ImportError("numpy.core.multiarray failed to import")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int import_umath() except -1:
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__149, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1013, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(8, 1013, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1010
 * # Cython code.
 * cdef inline int import_array() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_array()
 *     except Exception:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1009
 * # Versions of the import_* functions which are more suitable for
 * # Cython code.
 * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_array()
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1015
 *         raise ImportError("numpy.core.multiarray failed to import")
 * 
 * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_umath()
 */

static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("import_umath", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1016
 * 
 * cdef inline int import_umath() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1017
 * cdef inline int import_umath() except -1:
 *     try:
 *         _import_umath()             # <<<<<<<<<<<<<<
 *     except Exception:
 *         raise ImportError("numpy.core.umath failed to import")
 */
      __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(8, 1017, __pyx_L3_error)

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1016
 * 
 * cdef inline int import_umath() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1018
 *     try:
 *         _import_umath()
 *     except Exception:             # <<<<<<<<<<<<<<
 *         raise ImportError("numpy.core.umath failed to import")
 * 
 */
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
    if (__pyx_t_4) {
      __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(8, 1018, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1019
 *         _import_umath()
 *     except Exception:
 *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int import_ufunc() except -1:
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__150, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1019, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(8, 1019, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1016
 * 
 * cdef inline int import_umath() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1015
 *         raise ImportError("numpy.core.multiarray failed to import")
 * 
 * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_umath()
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1021
 *         raise ImportError("numpy.core.umath failed to import")
 * 
 * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_umath()
 */

static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("import_ufunc", 0);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022
 * 
 * cdef inline int import_ufunc() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1023
 * cdef inline int import_ufunc() except -1:
 *     try:
 *         _import_umath()             # <<<<<<<<<<<<<<
 *     except Exception:
 *         raise ImportError("numpy.core.umath failed to import")
 */
      __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(8, 1023, __pyx_L3_error)

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022
 * 
 * cdef inline int import_ufunc() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1024
 *     try:
 *         _import_umath()
 *     except Exception:             # <<<<<<<<<<<<<<
 *         raise ImportError("numpy.core.umath failed to import")
 */
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
    if (__pyx_t_4) {
      __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(8, 1024, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);

      /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1025
 *         _import_umath()
 *     except Exception:
 *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__151, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1025, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(8, 1025, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022
 * 
 * cdef inline int import_ufunc() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1021
 *         raise ImportError("numpy.core.umath failed to import")
 * 
 * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_umath()
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "carray.from_py":77
 * 
 * @cname("__Pyx_carray_from_py_float")
 * cdef int __Pyx_carray_from_py_float(object o, base_type *v, Py_ssize_t length) except -1:             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i = length
 *     try:
 */

static int __Pyx_carray_from_py_float(PyObject *__pyx_v_o, float *__pyx_v_v, Py_ssize_t __pyx_v_length) {
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  float __pyx_t_11;
  char const *__pyx_t_12;
  __Pyx_RefNannySetupContext("__Pyx_carray_from_py_float", 0);

  /* "carray.from_py":78
 * @cname("__Pyx_carray_from_py_float")
 * cdef int __Pyx_carray_from_py_float(object o, base_type *v, Py_ssize_t length) except -1:
 *     cdef Py_ssize_t i = length             # <<<<<<<<<<<<<<
 *     try:
 *         i = len(o)
 */
  __pyx_v_i = __pyx_v_length;

  /* "carray.from_py":79
 * cdef int __Pyx_carray_from_py_float(object o, base_type *v, Py_ssize_t length) except -1:
 *     cdef Py_ssize_t i = length
 *     try:             # <<<<<<<<<<<<<<
 *         i = len(o)
 *     except (TypeError, OverflowError):
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "carray.from_py":80
 *     cdef Py_ssize_t i = length
 *     try:
 *         i = len(o)             # <<<<<<<<<<<<<<
 *     except (TypeError, OverflowError):
 *         pass
 */
      __pyx_t_4 = PyObject_Length(__pyx_v_o); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 80, __pyx_L3_error)
      __pyx_v_i = __pyx_t_4;

      /* "carray.from_py":79
 * cdef int __Pyx_carray_from_py_float(object o, base_type *v, Py_ssize_t length) except -1:
 *     cdef Py_ssize_t i = length
 *     try:             # <<<<<<<<<<<<<<
 *         i = len(o)
 *     except (TypeError, OverflowError):
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;

    /* "carray.from_py":81
 *     try:
 *         i = len(o)
 *     except (TypeError, OverflowError):             # <<<<<<<<<<<<<<
 *         pass
 *     if i == length:
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError);
    if (__pyx_t_5) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "carray.from_py":79
 * cdef int __Pyx_carray_from_py_float(object o, base_type *v, Py_ssize_t length) except -1:
 *     cdef Py_ssize_t i = length
 *     try:             # <<<<<<<<<<<<<<
 *         i = len(o)
 *     except (TypeError, OverflowError):
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "carray.from_py":83
 *     except (TypeError, OverflowError):
 *         pass
 *     if i == length:             # <<<<<<<<<<<<<<
 *         for i, item in enumerate(o):
 *             if i >= length:
 */
  __pyx_t_6 = ((__pyx_v_i == __pyx_v_length) != 0);
  if (__pyx_t_6) {

    /* "carray.from_py":84
 *         pass
 *     if i == length:
 *         for i, item in enumerate(o):             # <<<<<<<<<<<<<<
 *             if i >= length:
 *                 break
 */
    __pyx_t_4 = 0;
    if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) {
      __pyx_t_7 = __pyx_v_o; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 84, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_9)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_10 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(4, 84, __pyx_L1_error)
          #else
          __pyx_t_10 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 84, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          #endif
        } else {
          if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(4, 84, __pyx_L1_error)
          #else
          __pyx_t_10 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 84, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          #endif
        }
      } else {
        __pyx_t_10 = __pyx_t_9(__pyx_t_7);
        if (unlikely(!__pyx_t_10)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(4, 84, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_10);
      }
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_10);
      __pyx_t_10 = 0;
      __pyx_v_i = __pyx_t_4;
      __pyx_t_4 = (__pyx_t_4 + 1);

      /* "carray.from_py":85
 *     if i == length:
 *         for i, item in enumerate(o):
 *             if i >= length:             # <<<<<<<<<<<<<<
 *                 break
 *             v[i] = item
 */
      __pyx_t_6 = ((__pyx_v_i >= __pyx_v_length) != 0);
      if (__pyx_t_6) {

        /* "carray.from_py":86
 *         for i, item in enumerate(o):
 *             if i >= length:
 *                 break             # <<<<<<<<<<<<<<
 *             v[i] = item
 *         else:
 */
        goto __pyx_L11_break;

        /* "carray.from_py":85
 *     if i == length:
 *         for i, item in enumerate(o):
 *             if i >= length:             # <<<<<<<<<<<<<<
 *                 break
 *             v[i] = item
 */
      }

      /* "carray.from_py":87
 *             if i >= length:
 *                 break
 *             v[i] = item             # <<<<<<<<<<<<<<
 *         else:
 *             i += 1  # convert index to length
 */
      __pyx_t_11 = __pyx_PyFloat_AsFloat(__pyx_v_item); if (unlikely((__pyx_t_11 == (float)-1) && PyErr_Occurred())) __PYX_ERR(4, 87, __pyx_L1_error)
      (__pyx_v_v[__pyx_v_i]) = __pyx_t_11;

      /* "carray.from_py":84
 *         pass
 *     if i == length:
 *         for i, item in enumerate(o):             # <<<<<<<<<<<<<<
 *             if i >= length:
 *                 break
 */
    }
    /*else*/ {

      /* "carray.from_py":89
 *             v[i] = item
 *         else:
 *             i += 1  # convert index to length             # <<<<<<<<<<<<<<
 *             if i == length:
 *                 return 0
 */
      __pyx_v_i = (__pyx_v_i + 1);

      /* "carray.from_py":90
 *         else:
 *             i += 1  # convert index to length
 *             if i == length:             # <<<<<<<<<<<<<<
 *                 return 0
 * 
 */
      __pyx_t_6 = ((__pyx_v_i == __pyx_v_length) != 0);
      if (__pyx_t_6) {

        /* "carray.from_py":91
 *             i += 1  # convert index to length
 *             if i == length:
 *                 return 0             # <<<<<<<<<<<<<<
 * 
 *     PyErr_Format(
 */
        __pyx_r = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L0;

        /* "carray.from_py":90
 *         else:
 *             i += 1  # convert index to length
 *             if i == length:             # <<<<<<<<<<<<<<
 *                 return 0
 * 
 */
      }
    }

    /* "carray.from_py":84
 *         pass
 *     if i == length:
 *         for i, item in enumerate(o):             # <<<<<<<<<<<<<<
 *             if i >= length:
 *                 break
 */
    __pyx_L11_break:;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "carray.from_py":83
 *     except (TypeError, OverflowError):
 *         pass
 *     if i == length:             # <<<<<<<<<<<<<<
 *         for i, item in enumerate(o):
 *             if i >= length:
 */
  }

  /* "carray.from_py":96
 *         IndexError,
 *         ("too many values found during array assignment, expected %zd"
 *          if i >= length else             # <<<<<<<<<<<<<<
 *          "not enough values found during array assignment, expected %zd, got %zd"),
 *         length, i)
 */
  if (((__pyx_v_i >= __pyx_v_length) != 0)) {
    __pyx_t_12 = ((char const *)"too many values found during array assignment, expected %zd");
  } else {
    __pyx_t_12 = ((char const *)"not enough values found during array assignment, expected %zd, got %zd");
  }

  /* "carray.from_py":93
 *                 return 0
 * 
 *     PyErr_Format(             # <<<<<<<<<<<<<<
 *         IndexError,
 *         ("too many values found during array assignment, expected %zd"
 */
  __pyx_t_7 = PyErr_Format(__pyx_builtin_IndexError, __pyx_t_12, __pyx_v_length, __pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "carray.from_py":77
 * 
 * @cname("__Pyx_carray_from_py_float")
 * cdef int __Pyx_carray_from_py_float(object o, base_type *v, Py_ssize_t length) except -1:             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i = length
 *     try:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("carray.from_py.__Pyx_carray_from_py_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":120
 *         cdef bint dtype_is_object
 * 
 *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,             # <<<<<<<<<<<<<<
 *                   mode="c", bint allocate_buffer=True):
 * 
 */

/* Python wrapper */
static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_shape = 0;
  Py_ssize_t __pyx_v_itemsize;
  PyObject *__pyx_v_format = 0;
  PyObject *__pyx_v_mode = 0;
  int __pyx_v_allocate_buffer;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shape,&__pyx_n_s_itemsize,&__pyx_n_s_format,&__pyx_n_s_mode,&__pyx_n_s_allocate_buffer,0};
    PyObject* values[5] = {0,0,0,0,0};
    values[3] = ((PyObject *)__pyx_n_s_c);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_itemsize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); __PYX_ERR(4, 120, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); __PYX_ERR(4, 120, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mode);
          if (value) { values[3] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_allocate_buffer);
          if (value) { values[4] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(4, 120, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_shape = ((PyObject*)values[0]);
    __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 120, __pyx_L3_error)
    __pyx_v_format = values[2];
    __pyx_v_mode = values[3];
    if (values[4]) {
      __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 121, __pyx_L3_error)
    } else {

      /* "View.MemoryView":121
 * 
 *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,
 *                   mode="c", bint allocate_buffer=True):             # <<<<<<<<<<<<<<
 * 
 *         cdef int idx
 */
      __pyx_v_allocate_buffer = ((int)1);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 120, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) __PYX_ERR(4, 120, __pyx_L1_error)
  if (unlikely(((PyObject *)__pyx_v_format) == Py_None)) {
    PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); __PYX_ERR(4, 120, __pyx_L1_error)
  }
  __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v_shape, __pyx_v_itemsize, __pyx_v_format, __pyx_v_mode, __pyx_v_allocate_buffer);

  /* "View.MemoryView":120
 *         cdef bint dtype_is_object
 * 
 *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,             # <<<<<<<<<<<<<<
 *                   mode="c", bint allocate_buffer=True):
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer) {
  int __pyx_v_idx;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_dim;
  PyObject **__pyx_v_p;
  char __pyx_v_order;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  char *__pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("__cinit__", 0);
  __Pyx_INCREF(__pyx_v_format);

  /* "View.MemoryView":127
 *         cdef PyObject **p
 * 
 *         self.ndim = <int> len(shape)             # <<<<<<<<<<<<<<
 *         self.itemsize = itemsize
 * 
 */
  if (unlikely(__pyx_v_shape == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(4, 127, __pyx_L1_error)
  }
  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(4, 127, __pyx_L1_error)
  __pyx_v_self->ndim = ((int)__pyx_t_1);

  /* "View.MemoryView":128
 * 
 *         self.ndim = <int> len(shape)
 *         self.itemsize = itemsize             # <<<<<<<<<<<<<<
 * 
 *         if not self.ndim:
 */
  __pyx_v_self->itemsize = __pyx_v_itemsize;

  /* "View.MemoryView":130
 *         self.itemsize = itemsize
 * 
 *         if not self.ndim:             # <<<<<<<<<<<<<<
 *             raise ValueError("Empty shape tuple for cython.array")
 * 
 */
  __pyx_t_2 = ((!(__pyx_v_self->ndim != 0)) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":131
 * 
 *         if not self.ndim:
 *             raise ValueError("Empty shape tuple for cython.array")             # <<<<<<<<<<<<<<
 * 
 *         if itemsize <= 0:
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__152, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(4, 131, __pyx_L1_error)

    /* "View.MemoryView":130
 *         self.itemsize = itemsize
 * 
 *         if not self.ndim:             # <<<<<<<<<<<<<<
 *             raise ValueError("Empty shape tuple for cython.array")
 * 
 */
  }

  /* "View.MemoryView":133
 *             raise ValueError("Empty shape tuple for cython.array")
 * 
 *         if itemsize <= 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("itemsize <= 0 for cython.array")
 * 
 */
  __pyx_t_2 = ((__pyx_v_itemsize <= 0) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":134
 * 
 *         if itemsize <= 0:
 *             raise ValueError("itemsize <= 0 for cython.array")             # <<<<<<<<<<<<<<
 * 
 *         if not isinstance(format, bytes):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__153, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(4, 134, __pyx_L1_error)

    /* "View.MemoryView":133
 *             raise ValueError("Empty shape tuple for cython.array")
 * 
 *         if itemsize <= 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("itemsize <= 0 for cython.array")
 * 
 */
  }

  /* "View.MemoryView":136
 *             raise ValueError("itemsize <= 0 for cython.array")
 * 
 *         if not isinstance(format, bytes):             # <<<<<<<<<<<<<<
 *             format = format.encode('ASCII')
 *         self._format = format  # keep a reference to the byte string
 */
  __pyx_t_2 = PyBytes_Check(__pyx_v_format); 
  __pyx_t_4 = ((!(__pyx_t_2 != 0)) != 0);
  if (__pyx_t_4) {

    /* "View.MemoryView":137
 * 
 *         if not isinstance(format, bytes):
 *             format = format.encode('ASCII')             # <<<<<<<<<<<<<<
 *         self._format = format  # keep a reference to the byte string
 *         self.format = self._format
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__154, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "View.MemoryView":136
 *             raise ValueError("itemsize <= 0 for cython.array")
 * 
 *         if not isinstance(format, bytes):             # <<<<<<<<<<<<<<
 *             format = format.encode('ASCII')
 *         self._format = format  # keep a reference to the byte string
 */
  }

  /* "View.MemoryView":138
 *         if not isinstance(format, bytes):
 *             format = format.encode('ASCII')
 *         self._format = format  # keep a reference to the byte string             # <<<<<<<<<<<<<<
 *         self.format = self._format
 * 
 */
  if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(4, 138, __pyx_L1_error)
  __pyx_t_5 = __pyx_v_format;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_format);
  __Pyx_DECREF(__pyx_v_self->_format);
  __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "View.MemoryView":139
 *             format = format.encode('ASCII')
 *         self._format = format  # keep a reference to the byte string
 *         self.format = self._format             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (unlikely(__pyx_v_self->_format == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(4, 139, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(4, 139, __pyx_L1_error)
  __pyx_v_self->format = __pyx_t_6;

  /* "View.MemoryView":142
 * 
 * 
 *         self._shape = <Py_ssize_t *> PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2)             # <<<<<<<<<<<<<<
 *         self._strides = self._shape + self.ndim
 * 
 */
  __pyx_v_self->_shape = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * __pyx_v_self->ndim) * 2)));

  /* "View.MemoryView":143
 * 
 *         self._shape = <Py_ssize_t *> PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2)
 *         self._strides = self._shape + self.ndim             # <<<<<<<<<<<<<<
 * 
 *         if not self._shape:
 */
  __pyx_v_self->_strides = (__pyx_v_self->_shape + __pyx_v_self->ndim);

  /* "View.MemoryView":145
 *         self._strides = self._shape + self.ndim
 * 
 *         if not self._shape:             # <<<<<<<<<<<<<<
 *             raise MemoryError("unable to allocate shape and strides.")
 * 
 */
  __pyx_t_4 = ((!(__pyx_v_self->_shape != 0)) != 0);
  if (__pyx_t_4) {

    /* "View.MemoryView":146
 * 
 *         if not self._shape:
 *             raise MemoryError("unable to allocate shape and strides.")             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__155, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(4, 146, __pyx_L1_error)

    /* "View.MemoryView":145
 *         self._strides = self._shape + self.ndim
 * 
 *         if not self._shape:             # <<<<<<<<<<<<<<
 *             raise MemoryError("unable to allocate shape and strides.")
 * 
 */
  }

  /* "View.MemoryView":149
 * 
 * 
 *         for idx, dim in enumerate(shape):             # <<<<<<<<<<<<<<
 *             if dim <= 0:
 *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
 */
  __pyx_t_7 = 0;
  __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
  for (;;) {
    if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(4, 149, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 149, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_dim = __pyx_t_8;
    __pyx_v_idx = __pyx_t_7;
    __pyx_t_7 = (__pyx_t_7 + 1);

    /* "View.MemoryView":150
 * 
 *         for idx, dim in enumerate(shape):
 *             if dim <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
 *             self._shape[idx] = dim
 */
    __pyx_t_4 = ((__pyx_v_dim <= 0) != 0);
    if (__pyx_t_4) {

      /* "View.MemoryView":151
 *         for idx, dim in enumerate(shape):
 *             if dim <= 0:
 *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))             # <<<<<<<<<<<<<<
 *             self._shape[idx] = dim
 * 
 */
      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
      __pyx_t_3 = 0;
      __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9);
      __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __PYX_ERR(4, 151, __pyx_L1_error)

      /* "View.MemoryView":150
 * 
 *         for idx, dim in enumerate(shape):
 *             if dim <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
 *             self._shape[idx] = dim
 */
    }

    /* "View.MemoryView":152
 *             if dim <= 0:
 *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
 *             self._shape[idx] = dim             # <<<<<<<<<<<<<<
 * 
 *         cdef char order
 */
    (__pyx_v_self->_shape[__pyx_v_idx]) = __pyx_v_dim;

    /* "View.MemoryView":149
 * 
 * 
 *         for idx, dim in enumerate(shape):             # <<<<<<<<<<<<<<
 *             if dim <= 0:
 *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "View.MemoryView":155
 * 
 *         cdef char order
 *         if mode == 'fortran':             # <<<<<<<<<<<<<<
 *             order = b'F'
 *             self.mode = u'fortran'
 */
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(4, 155, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "View.MemoryView":156
 *         cdef char order
 *         if mode == 'fortran':
 *             order = b'F'             # <<<<<<<<<<<<<<
 *             self.mode = u'fortran'
 *         elif mode == 'c':
 */
    __pyx_v_order = 'F';

    /* "View.MemoryView":157
 *         if mode == 'fortran':
 *             order = b'F'
 *             self.mode = u'fortran'             # <<<<<<<<<<<<<<
 *         elif mode == 'c':
 *             order = b'C'
 */
    __Pyx_INCREF(__pyx_n_u_fortran);
    __Pyx_GIVEREF(__pyx_n_u_fortran);
    __Pyx_GOTREF(__pyx_v_self->mode);
    __Pyx_DECREF(__pyx_v_self->mode);
    __pyx_v_self->mode = __pyx_n_u_fortran;

    /* "View.MemoryView":155
 * 
 *         cdef char order
 *         if mode == 'fortran':             # <<<<<<<<<<<<<<
 *             order = b'F'
 *             self.mode = u'fortran'
 */
    goto __pyx_L10;
  }

  /* "View.MemoryView":158
 *             order = b'F'
 *             self.mode = u'fortran'
 *         elif mode == 'c':             # <<<<<<<<<<<<<<
 *             order = b'C'
 *             self.mode = u'c'
 */
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(4, 158, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "View.MemoryView":159
 *             self.mode = u'fortran'
 *         elif mode == 'c':
 *             order = b'C'             # <<<<<<<<<<<<<<
 *             self.mode = u'c'
 *         else:
 */
    __pyx_v_order = 'C';

    /* "View.MemoryView":160
 *         elif mode == 'c':
 *             order = b'C'
 *             self.mode = u'c'             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode)
 */
    __Pyx_INCREF(__pyx_n_u_c);
    __Pyx_GIVEREF(__pyx_n_u_c);
    __Pyx_GOTREF(__pyx_v_self->mode);
    __Pyx_DECREF(__pyx_v_self->mode);
    __pyx_v_self->mode = __pyx_n_u_c;

    /* "View.MemoryView":158
 *             order = b'F'
 *             self.mode = u'fortran'
 *         elif mode == 'c':             # <<<<<<<<<<<<<<
 *             order = b'C'
 *             self.mode = u'c'
 */
    goto __pyx_L10;
  }

  /* "View.MemoryView":162
 *             self.mode = u'c'
 *         else:
 *             raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode)             # <<<<<<<<<<<<<<
 * 
 *         self.len = fill_contig_strides_array(self._shape, self._strides,
 */
  /*else*/ {
    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(4, 162, __pyx_L1_error)
  }
  __pyx_L10:;

  /* "View.MemoryView":164
 *             raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode)
 * 
 *         self.len = fill_contig_strides_array(self._shape, self._strides,             # <<<<<<<<<<<<<<
 *                                              itemsize, self.ndim, order)
 * 
 */
  __pyx_v_self->len = __pyx_fill_contig_strides_array(__pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_itemsize, __pyx_v_self->ndim, __pyx_v_order);

  /* "View.MemoryView":167
 *                                              itemsize, self.ndim, order)
 * 
 *         self.free_data = allocate_buffer             # <<<<<<<<<<<<<<
 *         self.dtype_is_object = format == b'O'
 *         if allocate_buffer:
 */
  __pyx_v_self->free_data = __pyx_v_allocate_buffer;

  /* "View.MemoryView":168
 * 
 *         self.free_data = allocate_buffer
 *         self.dtype_is_object = format == b'O'             # <<<<<<<<<<<<<<
 *         if allocate_buffer:
 * 
 */
  __pyx_t_5 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 168, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_self->dtype_is_object = __pyx_t_4;

  /* "View.MemoryView":169
 *         self.free_data = allocate_buffer
 *         self.dtype_is_object = format == b'O'
 *         if allocate_buffer:             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_4 = (__pyx_v_allocate_buffer != 0);
  if (__pyx_t_4) {

    /* "View.MemoryView":172
 * 
 * 
 *             self.data = <char *>malloc(self.len)             # <<<<<<<<<<<<<<
 *             if not self.data:
 *                 raise MemoryError("unable to allocate array data.")
 */
    __pyx_v_self->data = ((char *)malloc(__pyx_v_self->len));

    /* "View.MemoryView":173
 * 
 *             self.data = <char *>malloc(self.len)
 *             if not self.data:             # <<<<<<<<<<<<<<
 *                 raise MemoryError("unable to allocate array data.")
 * 
 */
    __pyx_t_4 = ((!(__pyx_v_self->data != 0)) != 0);
    if (__pyx_t_4) {

      /* "View.MemoryView":174
 *             self.data = <char *>malloc(self.len)
 *             if not self.data:
 *                 raise MemoryError("unable to allocate array data.")             # <<<<<<<<<<<<<<
 * 
 *             if self.dtype_is_object:
 */
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__156, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(4, 174, __pyx_L1_error)

      /* "View.MemoryView":173
 * 
 *             self.data = <char *>malloc(self.len)
 *             if not self.data:             # <<<<<<<<<<<<<<
 *                 raise MemoryError("unable to allocate array data.")
 * 
 */
    }

    /* "View.MemoryView":176
 *                 raise MemoryError("unable to allocate array data.")
 * 
 *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
 *                 p = <PyObject **> self.data
 *                 for i in range(self.len / itemsize):
 */
    __pyx_t_4 = (__pyx_v_self->dtype_is_object != 0);
    if (__pyx_t_4) {

      /* "View.MemoryView":177
 * 
 *             if self.dtype_is_object:
 *                 p = <PyObject **> self.data             # <<<<<<<<<<<<<<
 *                 for i in range(self.len / itemsize):
 *                     p[i] = Py_None
 */
      __pyx_v_p = ((PyObject **)__pyx_v_self->data);

      /* "View.MemoryView":178
 *             if self.dtype_is_object:
 *                 p = <PyObject **> self.data
 *                 for i in range(self.len / itemsize):             # <<<<<<<<<<<<<<
 *                     p[i] = Py_None
 *                     Py_INCREF(Py_None)
 */
      if (unlikely(__pyx_v_itemsize == 0)) {
        PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
        __PYX_ERR(4, 178, __pyx_L1_error)
      }
      else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1)  && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_self->len))) {
        PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
        __PYX_ERR(4, 178, __pyx_L1_error)
      }
      __pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
      for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_1; __pyx_t_8+=1) {
        __pyx_v_i = __pyx_t_8;

        /* "View.MemoryView":179
 *                 p = <PyObject **> self.data
 *                 for i in range(self.len / itemsize):
 *                     p[i] = Py_None             # <<<<<<<<<<<<<<
 *                     Py_INCREF(Py_None)
 * 
 */
        (__pyx_v_p[__pyx_v_i]) = Py_None;

        /* "View.MemoryView":180
 *                 for i in range(self.len / itemsize):
 *                     p[i] = Py_None
 *                     Py_INCREF(Py_None)             # <<<<<<<<<<<<<<
 * 
 *     @cname('getbuffer')
 */
        Py_INCREF(Py_None);
      }

      /* "View.MemoryView":176
 *                 raise MemoryError("unable to allocate array data.")
 * 
 *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
 *                 p = <PyObject **> self.data
 *                 for i in range(self.len / itemsize):
 */
    }

    /* "View.MemoryView":169
 *         self.free_data = allocate_buffer
 *         self.dtype_is_object = format == b'O'
 *         if allocate_buffer:             # <<<<<<<<<<<<<<
 * 
 * 
 */
  }

  /* "View.MemoryView":120
 *         cdef bint dtype_is_object
 * 
 *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,             # <<<<<<<<<<<<<<
 *                   mode="c", bint allocate_buffer=True):
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_format);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":183
 * 
 *     @cname('getbuffer')
 *     def __getbuffer__(self, Py_buffer *info, int flags):             # <<<<<<<<<<<<<<
 *         cdef int bufmode = -1
 *         if self.mode == u"c":
 */

/* Python wrapper */
static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
  __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(((struct __pyx_array_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
  int __pyx_v_bufmode;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t *__pyx_t_7;
  __Pyx_RefNannySetupContext("__getbuffer__", 0);
  if (__pyx_v_info != NULL) {
    __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(__pyx_v_info->obj);
  }

  /* "View.MemoryView":184
 *     @cname('getbuffer')
 *     def __getbuffer__(self, Py_buffer *info, int flags):
 *         cdef int bufmode = -1             # <<<<<<<<<<<<<<
 *         if self.mode == u"c":
 *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 */
  __pyx_v_bufmode = -1;

  /* "View.MemoryView":185
 *     def __getbuffer__(self, Py_buffer *info, int flags):
 *         cdef int bufmode = -1
 *         if self.mode == u"c":             # <<<<<<<<<<<<<<
 *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         elif self.mode == u"fortran":
 */
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(4, 185, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":186
 *         cdef int bufmode = -1
 *         if self.mode == u"c":
 *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS             # <<<<<<<<<<<<<<
 *         elif self.mode == u"fortran":
 *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 */
    __pyx_v_bufmode = (PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS);

    /* "View.MemoryView":185
 *     def __getbuffer__(self, Py_buffer *info, int flags):
 *         cdef int bufmode = -1
 *         if self.mode == u"c":             # <<<<<<<<<<<<<<
 *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         elif self.mode == u"fortran":
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":187
 *         if self.mode == u"c":
 *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         elif self.mode == u"fortran":             # <<<<<<<<<<<<<<
 *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         if not (flags & bufmode):
 */
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(4, 187, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":188
 *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         elif self.mode == u"fortran":
 *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS             # <<<<<<<<<<<<<<
 *         if not (flags & bufmode):
 *             raise ValueError("Can only create a buffer that is contiguous in memory.")
 */
    __pyx_v_bufmode = (PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS);

    /* "View.MemoryView":187
 *         if self.mode == u"c":
 *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         elif self.mode == u"fortran":             # <<<<<<<<<<<<<<
 *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         if not (flags & bufmode):
 */
  }
  __pyx_L3:;

  /* "View.MemoryView":189
 *         elif self.mode == u"fortran":
 *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         if not (flags & bufmode):             # <<<<<<<<<<<<<<
 *             raise ValueError("Can only create a buffer that is contiguous in memory.")
 *         info.buf = self.data
 */
  __pyx_t_1 = ((!((__pyx_v_flags & __pyx_v_bufmode) != 0)) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":190
 *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         if not (flags & bufmode):
 *             raise ValueError("Can only create a buffer that is contiguous in memory.")             # <<<<<<<<<<<<<<
 *         info.buf = self.data
 *         info.len = self.len
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__157, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(4, 190, __pyx_L1_error)

    /* "View.MemoryView":189
 *         elif self.mode == u"fortran":
 *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         if not (flags & bufmode):             # <<<<<<<<<<<<<<
 *             raise ValueError("Can only create a buffer that is contiguous in memory.")
 *         info.buf = self.data
 */
  }

  /* "View.MemoryView":191
 *         if not (flags & bufmode):
 *             raise ValueError("Can only create a buffer that is contiguous in memory.")
 *         info.buf = self.data             # <<<<<<<<<<<<<<
 *         info.len = self.len
 *         info.ndim = self.ndim
 */
  __pyx_t_4 = __pyx_v_self->data;
  __pyx_v_info->buf = __pyx_t_4;

  /* "View.MemoryView":192
 *             raise ValueError("Can only create a buffer that is contiguous in memory.")
 *         info.buf = self.data
 *         info.len = self.len             # <<<<<<<<<<<<<<
 *         info.ndim = self.ndim
 *         info.shape = self._shape
 */
  __pyx_t_5 = __pyx_v_self->len;
  __pyx_v_info->len = __pyx_t_5;

  /* "View.MemoryView":193
 *         info.buf = self.data
 *         info.len = self.len
 *         info.ndim = self.ndim             # <<<<<<<<<<<<<<
 *         info.shape = self._shape
 *         info.strides = self._strides
 */
  __pyx_t_6 = __pyx_v_self->ndim;
  __pyx_v_info->ndim = __pyx_t_6;

  /* "View.MemoryView":194
 *         info.len = self.len
 *         info.ndim = self.ndim
 *         info.shape = self._shape             # <<<<<<<<<<<<<<
 *         info.strides = self._strides
 *         info.suboffsets = NULL
 */
  __pyx_t_7 = __pyx_v_self->_shape;
  __pyx_v_info->shape = __pyx_t_7;

  /* "View.MemoryView":195
 *         info.ndim = self.ndim
 *         info.shape = self._shape
 *         info.strides = self._strides             # <<<<<<<<<<<<<<
 *         info.suboffsets = NULL
 *         info.itemsize = self.itemsize
 */
  __pyx_t_7 = __pyx_v_self->_strides;
  __pyx_v_info->strides = __pyx_t_7;

  /* "View.MemoryView":196
 *         info.shape = self._shape
 *         info.strides = self._strides
 *         info.suboffsets = NULL             # <<<<<<<<<<<<<<
 *         info.itemsize = self.itemsize
 *         info.readonly = 0
 */
  __pyx_v_info->suboffsets = NULL;

  /* "View.MemoryView":197
 *         info.strides = self._strides
 *         info.suboffsets = NULL
 *         info.itemsize = self.itemsize             # <<<<<<<<<<<<<<
 *         info.readonly = 0
 * 
 */
  __pyx_t_5 = __pyx_v_self->itemsize;
  __pyx_v_info->itemsize = __pyx_t_5;

  /* "View.MemoryView":198
 *         info.suboffsets = NULL
 *         info.itemsize = self.itemsize
 *         info.readonly = 0             # <<<<<<<<<<<<<<
 * 
 *         if flags & PyBUF_FORMAT:
 */
  __pyx_v_info->readonly = 0;

  /* "View.MemoryView":200
 *         info.readonly = 0
 * 
 *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *             info.format = self.format
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":201
 * 
 *         if flags & PyBUF_FORMAT:
 *             info.format = self.format             # <<<<<<<<<<<<<<
 *         else:
 *             info.format = NULL
 */
    __pyx_t_4 = __pyx_v_self->format;
    __pyx_v_info->format = __pyx_t_4;

    /* "View.MemoryView":200
 *         info.readonly = 0
 * 
 *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *             info.format = self.format
 *         else:
 */
    goto __pyx_L5;
  }

  /* "View.MemoryView":203
 *             info.format = self.format
 *         else:
 *             info.format = NULL             # <<<<<<<<<<<<<<
 * 
 *         info.obj = self
 */
  /*else*/ {
    __pyx_v_info->format = NULL;
  }
  __pyx_L5:;

  /* "View.MemoryView":205
 *             info.format = NULL
 * 
 *         info.obj = self             # <<<<<<<<<<<<<<
 * 
 *     __pyx_getbuffer = capsule(<void *> &__pyx_array_getbuffer, "getbuffer(obj, view, flags)")
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  __Pyx_GOTREF(__pyx_v_info->obj);
  __Pyx_DECREF(__pyx_v_info->obj);
  __pyx_v_info->obj = ((PyObject *)__pyx_v_self);

  /* "View.MemoryView":183
 * 
 *     @cname('getbuffer')
 *     def __getbuffer__(self, Py_buffer *info, int flags):             # <<<<<<<<<<<<<<
 *         cdef int bufmode = -1
 *         if self.mode == u"c":
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("View.MemoryView.array.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) {
    __Pyx_GOTREF(__pyx_v_info->obj);
    __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = NULL;
  }
  goto __pyx_L2;
  __pyx_L0:;
  if (__pyx_v_info != NULL && __pyx_v_info->obj == Py_None) {
    __Pyx_GOTREF(Py_None);
    __Pyx_DECREF(Py_None); __pyx_v_info->obj = NULL;
  }
  __pyx_L2:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":209
 *     __pyx_getbuffer = capsule(<void *> &__pyx_array_getbuffer, "getbuffer(obj, view, flags)")
 * 
 *     def __dealloc__(array self):             # <<<<<<<<<<<<<<
 *         if self.callback_free_data != NULL:
 *             self.callback_free_data(self.data)
 */

/* Python wrapper */
static void __pyx_array___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_array___dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(((struct __pyx_array_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "View.MemoryView":210
 * 
 *     def __dealloc__(array self):
 *         if self.callback_free_data != NULL:             # <<<<<<<<<<<<<<
 *             self.callback_free_data(self.data)
 *         elif self.free_data:
 */
  __pyx_t_1 = ((__pyx_v_self->callback_free_data != NULL) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":211
 *     def __dealloc__(array self):
 *         if self.callback_free_data != NULL:
 *             self.callback_free_data(self.data)             # <<<<<<<<<<<<<<
 *         elif self.free_data:
 *             if self.dtype_is_object:
 */
    __pyx_v_self->callback_free_data(__pyx_v_self->data);

    /* "View.MemoryView":210
 * 
 *     def __dealloc__(array self):
 *         if self.callback_free_data != NULL:             # <<<<<<<<<<<<<<
 *             self.callback_free_data(self.data)
 *         elif self.free_data:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":212
 *         if self.callback_free_data != NULL:
 *             self.callback_free_data(self.data)
 *         elif self.free_data:             # <<<<<<<<<<<<<<
 *             if self.dtype_is_object:
 *                 refcount_objects_in_slice(self.data, self._shape,
 */
  __pyx_t_1 = (__pyx_v_self->free_data != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":213
 *             self.callback_free_data(self.data)
 *         elif self.free_data:
 *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
 *                 refcount_objects_in_slice(self.data, self._shape,
 *                                           self._strides, self.ndim, False)
 */
    __pyx_t_1 = (__pyx_v_self->dtype_is_object != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":214
 *         elif self.free_data:
 *             if self.dtype_is_object:
 *                 refcount_objects_in_slice(self.data, self._shape,             # <<<<<<<<<<<<<<
 *                                           self._strides, self.ndim, False)
 *             free(self.data)
 */
      __pyx_memoryview_refcount_objects_in_slice(__pyx_v_self->data, __pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_self->ndim, 0);

      /* "View.MemoryView":213
 *             self.callback_free_data(self.data)
 *         elif self.free_data:
 *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
 *                 refcount_objects_in_slice(self.data, self._shape,
 *                                           self._strides, self.ndim, False)
 */
    }

    /* "View.MemoryView":216
 *                 refcount_objects_in_slice(self.data, self._shape,
 *                                           self._strides, self.ndim, False)
 *             free(self.data)             # <<<<<<<<<<<<<<
 *         PyObject_Free(self._shape)
 * 
 */
    free(__pyx_v_self->data);

    /* "View.MemoryView":212
 *         if self.callback_free_data != NULL:
 *             self.callback_free_data(self.data)
 *         elif self.free_data:             # <<<<<<<<<<<<<<
 *             if self.dtype_is_object:
 *                 refcount_objects_in_slice(self.data, self._shape,
 */
  }
  __pyx_L3:;

  /* "View.MemoryView":217
 *                                           self._strides, self.ndim, False)
 *             free(self.data)
 *         PyObject_Free(self._shape)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  PyObject_Free(__pyx_v_self->_shape);

  /* "View.MemoryView":209
 *     __pyx_getbuffer = capsule(<void *> &__pyx_array_getbuffer, "getbuffer(obj, view, flags)")
 * 
 *     def __dealloc__(array self):             # <<<<<<<<<<<<<<
 *         if self.callback_free_data != NULL:
 *             self.callback_free_data(self.data)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "View.MemoryView":220
 * 
 *     @property
 *     def memview(self):             # <<<<<<<<<<<<<<
 *         return self.get_memview()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_5array_7memview___get__(((struct __pyx_array_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":221
 *     @property
 *     def memview(self):
 *         return self.get_memview()             # <<<<<<<<<<<<<<
 * 
 *     @cname('get_memview')
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_array *)__pyx_v_self->__pyx_vtab)->get_memview(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":220
 * 
 *     @property
 *     def memview(self):             # <<<<<<<<<<<<<<
 *         return self.get_memview()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.array.memview.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":224
 * 
 *     @cname('get_memview')
 *     cdef get_memview(self):             # <<<<<<<<<<<<<<
 *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE
 *         return  memoryview(self, flags, self.dtype_is_object)
 */

static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) {
  int __pyx_v_flags;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("get_memview", 0);

  /* "View.MemoryView":225
 *     @cname('get_memview')
 *     cdef get_memview(self):
 *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE             # <<<<<<<<<<<<<<
 *         return  memoryview(self, flags, self.dtype_is_object)
 * 
 */
  __pyx_v_flags = ((PyBUF_ANY_CONTIGUOUS | PyBUF_FORMAT) | PyBUF_WRITABLE);

  /* "View.MemoryView":226
 *     cdef get_memview(self):
 *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE
 *         return  memoryview(self, flags, self.dtype_is_object)             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":224
 * 
 *     @cname('get_memview')
 *     cdef get_memview(self):             # <<<<<<<<<<<<<<
 *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE
 *         return  memoryview(self, flags, self.dtype_is_object)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("View.MemoryView.array.get_memview", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":228
 *         return  memoryview(self, flags, self.dtype_is_object)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self._shape[0]
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(((struct __pyx_array_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "View.MemoryView":229
 * 
 *     def __len__(self):
 *         return self._shape[0]             # <<<<<<<<<<<<<<
 * 
 *     def __getattr__(self, attr):
 */
  __pyx_r = (__pyx_v_self->_shape[0]);
  goto __pyx_L0;

  /* "View.MemoryView":228
 *         return  memoryview(self, flags, self.dtype_is_object)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self._shape[0]
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":231
 *         return self._shape[0]
 * 
 *     def __getattr__(self, attr):             # <<<<<<<<<<<<<<
 *         return getattr(self.memview, attr)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr); /*proto*/
static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
  __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_attr));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__getattr__", 0);

  /* "View.MemoryView":232
 * 
 *     def __getattr__(self, attr):
 *         return getattr(self.memview, attr)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, item):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":231
 *         return self._shape[0]
 * 
 *     def __getattr__(self, attr):             # <<<<<<<<<<<<<<
 *         return getattr(self.memview, attr)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("View.MemoryView.array.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":234
 *         return getattr(self.memview, attr)
 * 
 *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
 *         return self.memview[item]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "View.MemoryView":235
 * 
 *     def __getitem__(self, item):
 *         return self.memview[item]             # <<<<<<<<<<<<<<
 * 
 *     def __setitem__(self, item, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":234
 *         return getattr(self.memview, attr)
 * 
 *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
 *         return self.memview[item]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("View.MemoryView.array.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":237
 *         return self.memview[item]
 * 
 *     def __setitem__(self, item, value):             # <<<<<<<<<<<<<<
 *         self.memview[item] = value
 * 
 */

/* Python wrapper */
static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /*proto*/
static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
  __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setitem__", 0);

  /* "View.MemoryView":238
 * 
 *     def __setitem__(self, item, value):
 *         self.memview[item] = value             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0)) __PYX_ERR(4, 238, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "View.MemoryView":237
 *         return self.memview[item]
 * 
 *     def __setitem__(self, item, value):             # <<<<<<<<<<<<<<
 *         self.memview[item] = value
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.array.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf___pyx_array___reduce_cython__(((struct __pyx_array_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__158, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.array.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf___pyx_array_2__setstate_cython__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__159, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.array.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":242
 * 
 * @cname("__pyx_array_new")
 * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format,             # <<<<<<<<<<<<<<
 *                           char *mode, char *buf):
 *     cdef array result
 */

static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, char *__pyx_v_format, char *__pyx_v_mode, char *__pyx_v_buf) {
  struct __pyx_array_obj *__pyx_v_result = 0;
  struct __pyx_array_obj *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("array_cwrapper", 0);

  /* "View.MemoryView":246
 *     cdef array result
 * 
 *     if buf == NULL:             # <<<<<<<<<<<<<<
 *         result = array(shape, itemsize, format, mode.decode('ASCII'))
 *     else:
 */
  __pyx_t_1 = ((__pyx_v_buf == NULL) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":247
 * 
 *     if buf == NULL:
 *         result = array(shape, itemsize, format, mode.decode('ASCII'))             # <<<<<<<<<<<<<<
 *     else:
 *         result = array(shape, itemsize, format, mode.decode('ASCII'),
 */
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_shape);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "View.MemoryView":246
 *     cdef array result
 * 
 *     if buf == NULL:             # <<<<<<<<<<<<<<
 *         result = array(shape, itemsize, format, mode.decode('ASCII'))
 *     else:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":249
 *         result = array(shape, itemsize, format, mode.decode('ASCII'))
 *     else:
 *         result = array(shape, itemsize, format, mode.decode('ASCII'),             # <<<<<<<<<<<<<<
 *                        allocate_buffer=False)
 *         result.data = buf
 */
  /*else*/ {
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_shape);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_3);
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_t_3 = 0;

    /* "View.MemoryView":250
 *     else:
 *         result = array(shape, itemsize, format, mode.decode('ASCII'),
 *                        allocate_buffer=False)             # <<<<<<<<<<<<<<
 *         result.data = buf
 * 
 */
    __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_allocate_buffer, Py_False) < 0) __PYX_ERR(4, 250, __pyx_L1_error)

    /* "View.MemoryView":249
 *         result = array(shape, itemsize, format, mode.decode('ASCII'))
 *     else:
 *         result = array(shape, itemsize, format, mode.decode('ASCII'),             # <<<<<<<<<<<<<<
 *                        allocate_buffer=False)
 *         result.data = buf
 */
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_5);
    __pyx_t_5 = 0;

    /* "View.MemoryView":251
 *         result = array(shape, itemsize, format, mode.decode('ASCII'),
 *                        allocate_buffer=False)
 *         result.data = buf             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
    __pyx_v_result->data = __pyx_v_buf;
  }
  __pyx_L3:;

  /* "View.MemoryView":253
 *         result.data = buf
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "View.MemoryView":242
 * 
 * @cname("__pyx_array_new")
 * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format,             # <<<<<<<<<<<<<<
 *                           char *mode, char *buf):
 *     cdef array result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("View.MemoryView.array_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":279
 * cdef class Enum(object):
 *     cdef object name
 *     def __init__(self, name):             # <<<<<<<<<<<<<<
 *         self.name = name
 *     def __repr__(self):
 */

/* Python wrapper */
static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(4, 279, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 279, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("View.MemoryView.Enum.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v_name);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "View.MemoryView":280
 *     cdef object name
 *     def __init__(self, name):
 *         self.name = name             # <<<<<<<<<<<<<<
 *     def __repr__(self):
 *         return self.name
 */
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = __pyx_v_name;

  /* "View.MemoryView":279
 * cdef class Enum(object):
 *     cdef object name
 *     def __init__(self, name):             # <<<<<<<<<<<<<<
 *         self.name = name
 *     def __repr__(self):
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":281
 *     def __init__(self, name):
 *         self.name = name
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.name
 * 
 */

/* Python wrapper */
static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "View.MemoryView":282
 *         self.name = name
 *     def __repr__(self):
 *         return self.name             # <<<<<<<<<<<<<<
 * 
 * cdef generic = Enum("<strided and direct or indirect>")
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

  /* "View.MemoryView":281
 *     def __init__(self, name):
 *         self.name = name
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.name
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef bint use_setstate
 *     state = (self.name,)
 */

/* Python wrapper */
static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf___pyx_MemviewEnum___reduce_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self) {
  int __pyx_v_use_setstate;
  PyObject *__pyx_v_state = NULL;
  PyObject *__pyx_v__dict = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     cdef bint use_setstate
 *     state = (self.name,)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_v_self->name);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
  __pyx_v_state = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":4
 *     cdef bint use_setstate
 *     state = (self.name,)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":5
 *     state = (self.name,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_2 = (__pyx_v__dict != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":6
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "(tree fragment)":7
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.name is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":5
 *     state = (self.name,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":9
 *         use_setstate = True
 *     else:
 *         use_setstate = self.name is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->name != Py_None);
    __pyx_v_use_setstate = __pyx_t_3;
  }
  __pyx_L3:;

  /* "(tree fragment)":10
 *     else:
 *         use_setstate = self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state
 *     else:
 */
  __pyx_t_3 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":11
 *         use_setstate = self.name is not None
 *     if use_setstate:
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_184977713);
    __Pyx_GIVEREF(__pyx_int_184977713);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":10
 *     else:
 *         use_setstate = self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state
 *     else:
 */
  }

  /* "(tree fragment)":13
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state
 *     else:
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Enum__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_184977713);
    __Pyx_GIVEREF(__pyx_int_184977713);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef bint use_setstate
 *     state = (self.name,)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("View.MemoryView.Enum.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":14
 *     else:
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Enum__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf___pyx_MemviewEnum_2__setstate_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":15
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Enum__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(4, 15, __pyx_L1_error)
  __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":14
 *     else:
 *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Enum__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":296
 * 
 * @cname('__pyx_align_pointer')
 * cdef void *align_pointer(void *memory, size_t alignment) nogil:             # <<<<<<<<<<<<<<
 *     "Align pointer memory on a given boundary"
 *     cdef Py_intptr_t aligned_p = <Py_intptr_t> memory
 */

static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) {
  Py_intptr_t __pyx_v_aligned_p;
  size_t __pyx_v_offset;
  void *__pyx_r;
  int __pyx_t_1;

  /* "View.MemoryView":298
 * cdef void *align_pointer(void *memory, size_t alignment) nogil:
 *     "Align pointer memory on a given boundary"
 *     cdef Py_intptr_t aligned_p = <Py_intptr_t> memory             # <<<<<<<<<<<<<<
 *     cdef size_t offset
 * 
 */
  __pyx_v_aligned_p = ((Py_intptr_t)__pyx_v_memory);

  /* "View.MemoryView":302
 * 
 *     with cython.cdivision(True):
 *         offset = aligned_p % alignment             # <<<<<<<<<<<<<<
 * 
 *     if offset > 0:
 */
  __pyx_v_offset = (__pyx_v_aligned_p % __pyx_v_alignment);

  /* "View.MemoryView":304
 *         offset = aligned_p % alignment
 * 
 *     if offset > 0:             # <<<<<<<<<<<<<<
 *         aligned_p += alignment - offset
 * 
 */
  __pyx_t_1 = ((__pyx_v_offset > 0) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":305
 * 
 *     if offset > 0:
 *         aligned_p += alignment - offset             # <<<<<<<<<<<<<<
 * 
 *     return <void *> aligned_p
 */
    __pyx_v_aligned_p = (__pyx_v_aligned_p + (__pyx_v_alignment - __pyx_v_offset));

    /* "View.MemoryView":304
 *         offset = aligned_p % alignment
 * 
 *     if offset > 0:             # <<<<<<<<<<<<<<
 *         aligned_p += alignment - offset
 * 
 */
  }

  /* "View.MemoryView":307
 *         aligned_p += alignment - offset
 * 
 *     return <void *> aligned_p             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = ((void *)__pyx_v_aligned_p);
  goto __pyx_L0;

  /* "View.MemoryView":296
 * 
 * @cname('__pyx_align_pointer')
 * cdef void *align_pointer(void *memory, size_t alignment) nogil:             # <<<<<<<<<<<<<<
 *     "Align pointer memory on a given boundary"
 *     cdef Py_intptr_t aligned_p = <Py_intptr_t> memory
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "View.MemoryView":343
 *     cdef __Pyx_TypeInfo *typeinfo
 * 
 *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):             # <<<<<<<<<<<<<<
 *         self.obj = obj
 *         self.flags = flags
 */

/* Python wrapper */
static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_flags;
  int __pyx_v_dtype_is_object;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_flags,&__pyx_n_s_dtype_is_object,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); __PYX_ERR(4, 343, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype_is_object);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(4, 343, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 343, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 343, __pyx_L3_error)
    } else {
      __pyx_v_dtype_is_object = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 343, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_obj, __pyx_v_flags, __pyx_v_dtype_is_object);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "View.MemoryView":344
 * 
 *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):
 *         self.obj = obj             # <<<<<<<<<<<<<<
 *         self.flags = flags
 *         if type(self) is memoryview or obj is not None:
 */
  __Pyx_INCREF(__pyx_v_obj);
  __Pyx_GIVEREF(__pyx_v_obj);
  __Pyx_GOTREF(__pyx_v_self->obj);
  __Pyx_DECREF(__pyx_v_self->obj);
  __pyx_v_self->obj = __pyx_v_obj;

  /* "View.MemoryView":345
 *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):
 *         self.obj = obj
 *         self.flags = flags             # <<<<<<<<<<<<<<
 *         if type(self) is memoryview or obj is not None:
 *             __Pyx_GetBuffer(obj, &self.view, flags)
 */
  __pyx_v_self->flags = __pyx_v_flags;

  /* "View.MemoryView":346
 *         self.obj = obj
 *         self.flags = flags
 *         if type(self) is memoryview or obj is not None:             # <<<<<<<<<<<<<<
 *             __Pyx_GetBuffer(obj, &self.view, flags)
 *             if <PyObject *> self.view.obj == NULL:
 */
  __pyx_t_2 = (((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))) == ((PyObject *)__pyx_memoryview_type));
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_obj != Py_None);
  __pyx_t_2 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "View.MemoryView":347
 *         self.flags = flags
 *         if type(self) is memoryview or obj is not None:
 *             __Pyx_GetBuffer(obj, &self.view, flags)             # <<<<<<<<<<<<<<
 *             if <PyObject *> self.view.obj == NULL:
 *                 (<__pyx_buffer *> &self.view).obj = Py_None
 */
    __pyx_t_4 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(4, 347, __pyx_L1_error)

    /* "View.MemoryView":348
 *         if type(self) is memoryview or obj is not None:
 *             __Pyx_GetBuffer(obj, &self.view, flags)
 *             if <PyObject *> self.view.obj == NULL:             # <<<<<<<<<<<<<<
 *                 (<__pyx_buffer *> &self.view).obj = Py_None
 *                 Py_INCREF(Py_None)
 */
    __pyx_t_1 = ((((PyObject *)__pyx_v_self->view.obj) == NULL) != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":349
 *             __Pyx_GetBuffer(obj, &self.view, flags)
 *             if <PyObject *> self.view.obj == NULL:
 *                 (<__pyx_buffer *> &self.view).obj = Py_None             # <<<<<<<<<<<<<<
 *                 Py_INCREF(Py_None)
 * 
 */
      ((Py_buffer *)(&__pyx_v_self->view))->obj = Py_None;

      /* "View.MemoryView":350
 *             if <PyObject *> self.view.obj == NULL:
 *                 (<__pyx_buffer *> &self.view).obj = Py_None
 *                 Py_INCREF(Py_None)             # <<<<<<<<<<<<<<
 * 
 *         global __pyx_memoryview_thread_locks_used
 */
      Py_INCREF(Py_None);

      /* "View.MemoryView":348
 *         if type(self) is memoryview or obj is not None:
 *             __Pyx_GetBuffer(obj, &self.view, flags)
 *             if <PyObject *> self.view.obj == NULL:             # <<<<<<<<<<<<<<
 *                 (<__pyx_buffer *> &self.view).obj = Py_None
 *                 Py_INCREF(Py_None)
 */
    }

    /* "View.MemoryView":346
 *         self.obj = obj
 *         self.flags = flags
 *         if type(self) is memoryview or obj is not None:             # <<<<<<<<<<<<<<
 *             __Pyx_GetBuffer(obj, &self.view, flags)
 *             if <PyObject *> self.view.obj == NULL:
 */
  }

  /* "View.MemoryView":353
 * 
 *         global __pyx_memoryview_thread_locks_used
 *         if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED:             # <<<<<<<<<<<<<<
 *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
 *             __pyx_memoryview_thread_locks_used += 1
 */
  __pyx_t_1 = ((__pyx_memoryview_thread_locks_used < 8) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":354
 *         global __pyx_memoryview_thread_locks_used
 *         if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED:
 *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]             # <<<<<<<<<<<<<<
 *             __pyx_memoryview_thread_locks_used += 1
 *         if self.lock is NULL:
 */
    __pyx_v_self->lock = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]);

    /* "View.MemoryView":355
 *         if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED:
 *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
 *             __pyx_memoryview_thread_locks_used += 1             # <<<<<<<<<<<<<<
 *         if self.lock is NULL:
 *             self.lock = PyThread_allocate_lock()
 */
    __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used + 1);

    /* "View.MemoryView":353
 * 
 *         global __pyx_memoryview_thread_locks_used
 *         if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED:             # <<<<<<<<<<<<<<
 *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
 *             __pyx_memoryview_thread_locks_used += 1
 */
  }

  /* "View.MemoryView":356
 *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
 *             __pyx_memoryview_thread_locks_used += 1
 *         if self.lock is NULL:             # <<<<<<<<<<<<<<
 *             self.lock = PyThread_allocate_lock()
 *             if self.lock is NULL:
 */
  __pyx_t_1 = ((__pyx_v_self->lock == NULL) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":357
 *             __pyx_memoryview_thread_locks_used += 1
 *         if self.lock is NULL:
 *             self.lock = PyThread_allocate_lock()             # <<<<<<<<<<<<<<
 *             if self.lock is NULL:
 *                 raise MemoryError
 */
    __pyx_v_self->lock = PyThread_allocate_lock();

    /* "View.MemoryView":358
 *         if self.lock is NULL:
 *             self.lock = PyThread_allocate_lock()
 *             if self.lock is NULL:             # <<<<<<<<<<<<<<
 *                 raise MemoryError
 * 
 */
    __pyx_t_1 = ((__pyx_v_self->lock == NULL) != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":359
 *             self.lock = PyThread_allocate_lock()
 *             if self.lock is NULL:
 *                 raise MemoryError             # <<<<<<<<<<<<<<
 * 
 *         if flags & PyBUF_FORMAT:
 */
      PyErr_NoMemory(); __PYX_ERR(4, 359, __pyx_L1_error)

      /* "View.MemoryView":358
 *         if self.lock is NULL:
 *             self.lock = PyThread_allocate_lock()
 *             if self.lock is NULL:             # <<<<<<<<<<<<<<
 *                 raise MemoryError
 * 
 */
    }

    /* "View.MemoryView":356
 *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
 *             __pyx_memoryview_thread_locks_used += 1
 *         if self.lock is NULL:             # <<<<<<<<<<<<<<
 *             self.lock = PyThread_allocate_lock()
 *             if self.lock is NULL:
 */
  }

  /* "View.MemoryView":361
 *                 raise MemoryError
 * 
 *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":362
 * 
 *         if flags & PyBUF_FORMAT:
 *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')             # <<<<<<<<<<<<<<
 *         else:
 *             self.dtype_is_object = dtype_is_object
 */
    __pyx_t_2 = (((__pyx_v_self->view.format[0]) == 'O') != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_2 = (((__pyx_v_self->view.format[1]) == '\x00') != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L11_bool_binop_done:;
    __pyx_v_self->dtype_is_object = __pyx_t_1;

    /* "View.MemoryView":361
 *                 raise MemoryError
 * 
 *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')
 *         else:
 */
    goto __pyx_L10;
  }

  /* "View.MemoryView":364
 *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')
 *         else:
 *             self.dtype_is_object = dtype_is_object             # <<<<<<<<<<<<<<
 * 
 *         self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer(
 */
  /*else*/ {
    __pyx_v_self->dtype_is_object = __pyx_v_dtype_is_object;
  }
  __pyx_L10:;

  /* "View.MemoryView":366
 *             self.dtype_is_object = dtype_is_object
 * 
 *         self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer(             # <<<<<<<<<<<<<<
 *                   <void *> &self.acquisition_count[0], sizeof(__pyx_atomic_int))
 *         self.typeinfo = NULL
 */
  __pyx_v_self->acquisition_count_aligned_p = ((__pyx_atomic_int *)__pyx_align_pointer(((void *)(&(__pyx_v_self->acquisition_count[0]))), (sizeof(__pyx_atomic_int))));

  /* "View.MemoryView":368
 *         self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer(
 *                   <void *> &self.acquisition_count[0], sizeof(__pyx_atomic_int))
 *         self.typeinfo = NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(memoryview self):
 */
  __pyx_v_self->typeinfo = NULL;

  /* "View.MemoryView":343
 *     cdef __Pyx_TypeInfo *typeinfo
 * 
 *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):             # <<<<<<<<<<<<<<
 *         self.obj = obj
 *         self.flags = flags
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":370
 *         self.typeinfo = NULL
 * 
 *     def __dealloc__(memoryview self):             # <<<<<<<<<<<<<<
 *         if self.obj is not None:
 *             __Pyx_ReleaseBuffer(&self.view)
 */

/* Python wrapper */
static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self) {
  int __pyx_v_i;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyThread_type_lock __pyx_t_5;
  PyThread_type_lock __pyx_t_6;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "View.MemoryView":371
 * 
 *     def __dealloc__(memoryview self):
 *         if self.obj is not None:             # <<<<<<<<<<<<<<
 *             __Pyx_ReleaseBuffer(&self.view)
 * 
 */
  __pyx_t_1 = (__pyx_v_self->obj != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":372
 *     def __dealloc__(memoryview self):
 *         if self.obj is not None:
 *             __Pyx_ReleaseBuffer(&self.view)             # <<<<<<<<<<<<<<
 * 
 *         cdef int i
 */
    __Pyx_ReleaseBuffer((&__pyx_v_self->view));

    /* "View.MemoryView":371
 * 
 *     def __dealloc__(memoryview self):
 *         if self.obj is not None:             # <<<<<<<<<<<<<<
 *             __Pyx_ReleaseBuffer(&self.view)
 * 
 */
  }

  /* "View.MemoryView":376
 *         cdef int i
 *         global __pyx_memoryview_thread_locks_used
 *         if self.lock != NULL:             # <<<<<<<<<<<<<<
 *             for i in range(__pyx_memoryview_thread_locks_used):
 *                 if __pyx_memoryview_thread_locks[i] is self.lock:
 */
  __pyx_t_2 = ((__pyx_v_self->lock != NULL) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":377
 *         global __pyx_memoryview_thread_locks_used
 *         if self.lock != NULL:
 *             for i in range(__pyx_memoryview_thread_locks_used):             # <<<<<<<<<<<<<<
 *                 if __pyx_memoryview_thread_locks[i] is self.lock:
 *                     __pyx_memoryview_thread_locks_used -= 1
 */
    __pyx_t_3 = __pyx_memoryview_thread_locks_used;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_v_i = __pyx_t_4;

      /* "View.MemoryView":378
 *         if self.lock != NULL:
 *             for i in range(__pyx_memoryview_thread_locks_used):
 *                 if __pyx_memoryview_thread_locks[i] is self.lock:             # <<<<<<<<<<<<<<
 *                     __pyx_memoryview_thread_locks_used -= 1
 *                     if i != __pyx_memoryview_thread_locks_used:
 */
      __pyx_t_2 = (((__pyx_memoryview_thread_locks[__pyx_v_i]) == __pyx_v_self->lock) != 0);
      if (__pyx_t_2) {

        /* "View.MemoryView":379
 *             for i in range(__pyx_memoryview_thread_locks_used):
 *                 if __pyx_memoryview_thread_locks[i] is self.lock:
 *                     __pyx_memoryview_thread_locks_used -= 1             # <<<<<<<<<<<<<<
 *                     if i != __pyx_memoryview_thread_locks_used:
 *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
 */
        __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used - 1);

        /* "View.MemoryView":380
 *                 if __pyx_memoryview_thread_locks[i] is self.lock:
 *                     __pyx_memoryview_thread_locks_used -= 1
 *                     if i != __pyx_memoryview_thread_locks_used:             # <<<<<<<<<<<<<<
 *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
 *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
 */
        __pyx_t_2 = ((__pyx_v_i != __pyx_memoryview_thread_locks_used) != 0);
        if (__pyx_t_2) {

          /* "View.MemoryView":382
 *                     if i != __pyx_memoryview_thread_locks_used:
 *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
 *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])             # <<<<<<<<<<<<<<
 *                     break
 *             else:
 */
          __pyx_t_5 = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]);
          __pyx_t_6 = (__pyx_memoryview_thread_locks[__pyx_v_i]);

          /* "View.MemoryView":381
 *                     __pyx_memoryview_thread_locks_used -= 1
 *                     if i != __pyx_memoryview_thread_locks_used:
 *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (             # <<<<<<<<<<<<<<
 *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
 *                     break
 */
          (__pyx_memoryview_thread_locks[__pyx_v_i]) = __pyx_t_5;
          (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]) = __pyx_t_6;

          /* "View.MemoryView":380
 *                 if __pyx_memoryview_thread_locks[i] is self.lock:
 *                     __pyx_memoryview_thread_locks_used -= 1
 *                     if i != __pyx_memoryview_thread_locks_used:             # <<<<<<<<<<<<<<
 *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
 *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
 */
        }

        /* "View.MemoryView":383
 *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
 *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
 *                     break             # <<<<<<<<<<<<<<
 *             else:
 *                 PyThread_free_lock(self.lock)
 */
        goto __pyx_L6_break;

        /* "View.MemoryView":378
 *         if self.lock != NULL:
 *             for i in range(__pyx_memoryview_thread_locks_used):
 *                 if __pyx_memoryview_thread_locks[i] is self.lock:             # <<<<<<<<<<<<<<
 *                     __pyx_memoryview_thread_locks_used -= 1
 *                     if i != __pyx_memoryview_thread_locks_used:
 */
      }
    }
    /*else*/ {

      /* "View.MemoryView":385
 *                     break
 *             else:
 *                 PyThread_free_lock(self.lock)             # <<<<<<<<<<<<<<
 * 
 *     cdef char *get_item_pointer(memoryview self, object index) except NULL:
 */
      PyThread_free_lock(__pyx_v_self->lock);
    }
    __pyx_L6_break:;

    /* "View.MemoryView":376
 *         cdef int i
 *         global __pyx_memoryview_thread_locks_used
 *         if self.lock != NULL:             # <<<<<<<<<<<<<<
 *             for i in range(__pyx_memoryview_thread_locks_used):
 *                 if __pyx_memoryview_thread_locks[i] is self.lock:
 */
  }

  /* "View.MemoryView":370
 *         self.typeinfo = NULL
 * 
 *     def __dealloc__(memoryview self):             # <<<<<<<<<<<<<<
 *         if self.obj is not None:
 *             __Pyx_ReleaseBuffer(&self.view)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "View.MemoryView":387
 *                 PyThread_free_lock(self.lock)
 * 
 *     cdef char *get_item_pointer(memoryview self, object index) except NULL:             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t dim
 *         cdef char *itemp = <char *> self.view.buf
 */

static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) {
  Py_ssize_t __pyx_v_dim;
  char *__pyx_v_itemp;
  PyObject *__pyx_v_idx = NULL;
  char *__pyx_r;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  char *__pyx_t_7;
  __Pyx_RefNannySetupContext("get_item_pointer", 0);

  /* "View.MemoryView":389
 *     cdef char *get_item_pointer(memoryview self, object index) except NULL:
 *         cdef Py_ssize_t dim
 *         cdef char *itemp = <char *> self.view.buf             # <<<<<<<<<<<<<<
 * 
 *         for dim, idx in enumerate(index):
 */
  __pyx_v_itemp = ((char *)__pyx_v_self->view.buf);

  /* "View.MemoryView":391
 *         cdef char *itemp = <char *> self.view.buf
 * 
 *         for dim, idx in enumerate(index):             # <<<<<<<<<<<<<<
 *             itemp = pybuffer_index(&self.view, itemp, idx, dim)
 * 
 */
  __pyx_t_1 = 0;
  if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) {
    __pyx_t_2 = __pyx_v_index; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 391, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(4, 391, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(4, 391, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 391, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_v_dim = __pyx_t_1;
    __pyx_t_1 = (__pyx_t_1 + 1);

    /* "View.MemoryView":392
 * 
 *         for dim, idx in enumerate(index):
 *             itemp = pybuffer_index(&self.view, itemp, idx, dim)             # <<<<<<<<<<<<<<
 * 
 *         return itemp
 */
    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 392, __pyx_L1_error)
    __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(4, 392, __pyx_L1_error)
    __pyx_v_itemp = __pyx_t_7;

    /* "View.MemoryView":391
 *         cdef char *itemp = <char *> self.view.buf
 * 
 *         for dim, idx in enumerate(index):             # <<<<<<<<<<<<<<
 *             itemp = pybuffer_index(&self.view, itemp, idx, dim)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "View.MemoryView":394
 *             itemp = pybuffer_index(&self.view, itemp, idx, dim)
 * 
 *         return itemp             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_itemp;
  goto __pyx_L0;

  /* "View.MemoryView":387
 *                 PyThread_free_lock(self.lock)
 * 
 *     cdef char *get_item_pointer(memoryview self, object index) except NULL:             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t dim
 *         cdef char *itemp = <char *> self.view.buf
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("View.MemoryView.memoryview.get_item_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":397
 * 
 * 
 *     def __getitem__(memoryview self, object index):             # <<<<<<<<<<<<<<
 *         if index is Ellipsis:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_v_have_slices = NULL;
  PyObject *__pyx_v_indices = NULL;
  char *__pyx_v_itemp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  char *__pyx_t_6;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "View.MemoryView":398
 * 
 *     def __getitem__(memoryview self, object index):
 *         if index is Ellipsis:             # <<<<<<<<<<<<<<
 *             return self
 * 
 */
  __pyx_t_1 = (__pyx_v_index == __pyx_builtin_Ellipsis);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":399
 *     def __getitem__(memoryview self, object index):
 *         if index is Ellipsis:
 *             return self             # <<<<<<<<<<<<<<
 * 
 *         have_slices, indices = _unellipsify(index, self.view.ndim)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "View.MemoryView":398
 * 
 *     def __getitem__(memoryview self, object index):
 *         if index is Ellipsis:             # <<<<<<<<<<<<<<
 *             return self
 * 
 */
  }

  /* "View.MemoryView":401
 *             return self
 * 
 *         have_slices, indices = _unellipsify(index, self.view.ndim)             # <<<<<<<<<<<<<<
 * 
 *         cdef char *itemp
 */
  __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (likely(__pyx_t_3 != Py_None)) {
    PyObject* sequence = __pyx_t_3;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(4, 401, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_5);
    #else
    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 401, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 401, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(4, 401, __pyx_L1_error)
  }
  __pyx_v_have_slices = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_v_indices = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "View.MemoryView":404
 * 
 *         cdef char *itemp
 *         if have_slices:             # <<<<<<<<<<<<<<
 *             return memview_slice(self, indices)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(4, 404, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "View.MemoryView":405
 *         cdef char *itemp
 *         if have_slices:
 *             return memview_slice(self, indices)             # <<<<<<<<<<<<<<
 *         else:
 *             itemp = self.get_item_pointer(indices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "View.MemoryView":404
 * 
 *         cdef char *itemp
 *         if have_slices:             # <<<<<<<<<<<<<<
 *             return memview_slice(self, indices)
 *         else:
 */
  }

  /* "View.MemoryView":407
 *             return memview_slice(self, indices)
 *         else:
 *             itemp = self.get_item_pointer(indices)             # <<<<<<<<<<<<<<
 *             return self.convert_item_to_object(itemp)
 * 
 */
  /*else*/ {
    __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == ((char *)NULL))) __PYX_ERR(4, 407, __pyx_L1_error)
    __pyx_v_itemp = __pyx_t_6;

    /* "View.MemoryView":408
 *         else:
 *             itemp = self.get_item_pointer(indices)
 *             return self.convert_item_to_object(itemp)             # <<<<<<<<<<<<<<
 * 
 *     def __setitem__(memoryview self, object index, object value):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "View.MemoryView":397
 * 
 * 
 *     def __getitem__(memoryview self, object index):             # <<<<<<<<<<<<<<
 *         if index is Ellipsis:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("View.MemoryView.memoryview.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_have_slices);
  __Pyx_XDECREF(__pyx_v_indices);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":410
 *             return self.convert_item_to_object(itemp)
 * 
 *     def __setitem__(memoryview self, object index, object value):             # <<<<<<<<<<<<<<
 *         have_slices, index = _unellipsify(index, self.view.ndim)
 * 
 */

/* Python wrapper */
static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/
static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_have_slices = NULL;
  PyObject *__pyx_v_obj = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("__setitem__", 0);
  __Pyx_INCREF(__pyx_v_index);

  /* "View.MemoryView":411
 * 
 *     def __setitem__(memoryview self, object index, object value):
 *         have_slices, index = _unellipsify(index, self.view.ndim)             # <<<<<<<<<<<<<<
 * 
 *         if have_slices:
 */
  __pyx_t_1 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(__pyx_t_1 != Py_None)) {
    PyObject* sequence = __pyx_t_1;
    #if !CYTHON_COMPILING_IN_PYPY
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(4, 411, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(4, 411, __pyx_L1_error)
  }
  __pyx_v_have_slices = __pyx_t_2;
  __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "View.MemoryView":413
 *         have_slices, index = _unellipsify(index, self.view.ndim)
 * 
 *         if have_slices:             # <<<<<<<<<<<<<<
 *             obj = self.is_slice(value)
 *             if obj:
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(4, 413, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "View.MemoryView":414
 * 
 *         if have_slices:
 *             obj = self.is_slice(value)             # <<<<<<<<<<<<<<
 *             if obj:
 *                 self.setitem_slice_assignment(self[index], obj)
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_obj = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "View.MemoryView":415
 *         if have_slices:
 *             obj = self.is_slice(value)
 *             if obj:             # <<<<<<<<<<<<<<
 *                 self.setitem_slice_assignment(self[index], obj)
 *             else:
 */
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(4, 415, __pyx_L1_error)
    if (__pyx_t_4) {

      /* "View.MemoryView":416
 *             obj = self.is_slice(value)
 *             if obj:
 *                 self.setitem_slice_assignment(self[index], obj)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.setitem_slice_assign_scalar(self[index], value)
 */
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 416, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_1, __pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 416, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "View.MemoryView":415
 *         if have_slices:
 *             obj = self.is_slice(value)
 *             if obj:             # <<<<<<<<<<<<<<
 *                 self.setitem_slice_assignment(self[index], obj)
 *             else:
 */
      goto __pyx_L4;
    }

    /* "View.MemoryView":418
 *                 self.setitem_slice_assignment(self[index], obj)
 *             else:
 *                 self.setitem_slice_assign_scalar(self[index], value)             # <<<<<<<<<<<<<<
 *         else:
 *             self.setitem_indexed(index, value)
 */
    /*else*/ {
      __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(4, 418, __pyx_L1_error)
      __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_3), __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __pyx_L4:;

    /* "View.MemoryView":413
 *         have_slices, index = _unellipsify(index, self.view.ndim)
 * 
 *         if have_slices:             # <<<<<<<<<<<<<<
 *             obj = self.is_slice(value)
 *             if obj:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":420
 *                 self.setitem_slice_assign_scalar(self[index], value)
 *         else:
 *             self.setitem_indexed(index, value)             # <<<<<<<<<<<<<<
 * 
 *     cdef is_slice(self, obj):
 */
  /*else*/ {
    __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "View.MemoryView":410
 *             return self.convert_item_to_object(itemp)
 * 
 *     def __setitem__(memoryview self, object index, object value):             # <<<<<<<<<<<<<<
 *         have_slices, index = _unellipsify(index, self.view.ndim)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("View.MemoryView.memoryview.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_have_slices);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":422
 *             self.setitem_indexed(index, value)
 * 
 *     cdef is_slice(self, obj):             # <<<<<<<<<<<<<<
 *         if not isinstance(obj, memoryview):
 *             try:
 */

static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  __Pyx_RefNannySetupContext("is_slice", 0);
  __Pyx_INCREF(__pyx_v_obj);

  /* "View.MemoryView":423
 * 
 *     cdef is_slice(self, obj):
 *         if not isinstance(obj, memoryview):             # <<<<<<<<<<<<<<
 *             try:
 *                 obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS,
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_memoryview_type); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":424
 *     cdef is_slice(self, obj):
 *         if not isinstance(obj, memoryview):
 *             try:             # <<<<<<<<<<<<<<
 *                 obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS,
 *                                  self.dtype_is_object)
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "View.MemoryView":425
 *         if not isinstance(obj, memoryview):
 *             try:
 *                 obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS,             # <<<<<<<<<<<<<<
 *                                  self.dtype_is_object)
 *             except TypeError:
 */
        __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_self->flags | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 425, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_6);

        /* "View.MemoryView":426
 *             try:
 *                 obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS,
 *                                  self.dtype_is_object)             # <<<<<<<<<<<<<<
 *             except TypeError:
 *                 return None
 */
        __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 426, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_7);

        /* "View.MemoryView":425
 *         if not isinstance(obj, memoryview):
 *             try:
 *                 obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS,             # <<<<<<<<<<<<<<
 *                                  self.dtype_is_object)
 *             except TypeError:
 */
        __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 425, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_v_obj);
        __Pyx_GIVEREF(__pyx_v_obj);
        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_obj);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7);
        __pyx_t_6 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 425, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_7);
        __pyx_t_7 = 0;

        /* "View.MemoryView":424
 *     cdef is_slice(self, obj):
 *         if not isinstance(obj, memoryview):
 *             try:             # <<<<<<<<<<<<<<
 *                 obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS,
 *                                  self.dtype_is_object)
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "View.MemoryView":427
 *                 obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS,
 *                                  self.dtype_is_object)
 *             except TypeError:             # <<<<<<<<<<<<<<
 *                 return None
 * 
 */
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
      if (__pyx_t_9) {
        __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(4, 427, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GOTREF(__pyx_t_6);

        /* "View.MemoryView":428
 *                                  self.dtype_is_object)
 *             except TypeError:
 *                 return None             # <<<<<<<<<<<<<<
 * 
 *         return obj
 */
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L7_except_return;
      }
      goto __pyx_L6_except_error;
      __pyx_L6_except_error:;

      /* "View.MemoryView":424
 *     cdef is_slice(self, obj):
 *         if not isinstance(obj, memoryview):
 *             try:             # <<<<<<<<<<<<<<
 *                 obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS,
 *                                  self.dtype_is_object)
 */
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L7_except_return:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L0;
      __pyx_L9_try_end:;
    }

    /* "View.MemoryView":423
 * 
 *     cdef is_slice(self, obj):
 *         if not isinstance(obj, memoryview):             # <<<<<<<<<<<<<<
 *             try:
 *                 obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS,
 */
  }

  /* "View.MemoryView":430
 *                 return None
 * 
 *         return obj             # <<<<<<<<<<<<<<
 * 
 *     cdef setitem_slice_assignment(self, dst, src):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "View.MemoryView":422
 *             self.setitem_indexed(index, value)
 * 
 *     cdef is_slice(self, obj):             # <<<<<<<<<<<<<<
 *         if not isinstance(obj, memoryview):
 *             try:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":432
 *         return obj
 * 
 *     cdef setitem_slice_assignment(self, dst, src):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice dst_slice
 *         cdef __Pyx_memviewslice src_slice
 */

static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src) {
  __Pyx_memviewslice __pyx_v_dst_slice;
  __Pyx_memviewslice __pyx_v_src_slice;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("setitem_slice_assignment", 0);

  /* "View.MemoryView":436
 *         cdef __Pyx_memviewslice src_slice
 * 
 *         memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0],             # <<<<<<<<<<<<<<
 *                                  get_slice_from_memview(dst, &dst_slice)[0],
 *                                  src.ndim, dst.ndim, self.dtype_is_object)
 */
  if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(4, 436, __pyx_L1_error)

  /* "View.MemoryView":437
 * 
 *         memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0],
 *                                  get_slice_from_memview(dst, &dst_slice)[0],             # <<<<<<<<<<<<<<
 *                                  src.ndim, dst.ndim, self.dtype_is_object)
 * 
 */
  if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(4, 437, __pyx_L1_error)

  /* "View.MemoryView":438
 *         memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0],
 *                                  get_slice_from_memview(dst, &dst_slice)[0],
 *                                  src.ndim, dst.ndim, self.dtype_is_object)             # <<<<<<<<<<<<<<
 * 
 *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 438, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 438, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "View.MemoryView":436
 *         cdef __Pyx_memviewslice src_slice
 * 
 *         memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0],             # <<<<<<<<<<<<<<
 *                                  get_slice_from_memview(dst, &dst_slice)[0],
 *                                  src.ndim, dst.ndim, self.dtype_is_object)
 */
  __pyx_t_4 = __pyx_memoryview_copy_contents((__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice))[0]), (__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice))[0]), __pyx_t_2, __pyx_t_3, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(4, 436, __pyx_L1_error)

  /* "View.MemoryView":432
 *         return obj
 * 
 *     cdef setitem_slice_assignment(self, dst, src):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice dst_slice
 *         cdef __Pyx_memviewslice src_slice
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assignment", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":440
 *                                  src.ndim, dst.ndim, self.dtype_is_object)
 * 
 *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):             # <<<<<<<<<<<<<<
 *         cdef int array[128]
 *         cdef void *tmp = NULL
 */

static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value) {
  int __pyx_v_array[0x80];
  void *__pyx_v_tmp;
  void *__pyx_v_item;
  __Pyx_memviewslice *__pyx_v_dst_slice;
  __Pyx_memviewslice __pyx_v_tmp_slice;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 0);

  /* "View.MemoryView":442
 *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):
 *         cdef int array[128]
 *         cdef void *tmp = NULL             # <<<<<<<<<<<<<<
 *         cdef void *item
 * 
 */
  __pyx_v_tmp = NULL;

  /* "View.MemoryView":447
 *         cdef __Pyx_memviewslice *dst_slice
 *         cdef __Pyx_memviewslice tmp_slice
 *         dst_slice = get_slice_from_memview(dst, &tmp_slice)             # <<<<<<<<<<<<<<
 * 
 *         if <size_t>self.view.itemsize > sizeof(array):
 */
  __pyx_v_dst_slice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice));

  /* "View.MemoryView":449
 *         dst_slice = get_slice_from_memview(dst, &tmp_slice)
 * 
 *         if <size_t>self.view.itemsize > sizeof(array):             # <<<<<<<<<<<<<<
 *             tmp = PyMem_Malloc(self.view.itemsize)
 *             if tmp == NULL:
 */
  __pyx_t_1 = ((((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":450
 * 
 *         if <size_t>self.view.itemsize > sizeof(array):
 *             tmp = PyMem_Malloc(self.view.itemsize)             # <<<<<<<<<<<<<<
 *             if tmp == NULL:
 *                 raise MemoryError
 */
    __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize);

    /* "View.MemoryView":451
 *         if <size_t>self.view.itemsize > sizeof(array):
 *             tmp = PyMem_Malloc(self.view.itemsize)
 *             if tmp == NULL:             # <<<<<<<<<<<<<<
 *                 raise MemoryError
 *             item = tmp
 */
    __pyx_t_1 = ((__pyx_v_tmp == NULL) != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":452
 *             tmp = PyMem_Malloc(self.view.itemsize)
 *             if tmp == NULL:
 *                 raise MemoryError             # <<<<<<<<<<<<<<
 *             item = tmp
 *         else:
 */
      PyErr_NoMemory(); __PYX_ERR(4, 452, __pyx_L1_error)

      /* "View.MemoryView":451
 *         if <size_t>self.view.itemsize > sizeof(array):
 *             tmp = PyMem_Malloc(self.view.itemsize)
 *             if tmp == NULL:             # <<<<<<<<<<<<<<
 *                 raise MemoryError
 *             item = tmp
 */
    }

    /* "View.MemoryView":453
 *             if tmp == NULL:
 *                 raise MemoryError
 *             item = tmp             # <<<<<<<<<<<<<<
 *         else:
 *             item = <void *> array
 */
    __pyx_v_item = __pyx_v_tmp;

    /* "View.MemoryView":449
 *         dst_slice = get_slice_from_memview(dst, &tmp_slice)
 * 
 *         if <size_t>self.view.itemsize > sizeof(array):             # <<<<<<<<<<<<<<
 *             tmp = PyMem_Malloc(self.view.itemsize)
 *             if tmp == NULL:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":455
 *             item = tmp
 *         else:
 *             item = <void *> array             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  /*else*/ {
    __pyx_v_item = ((void *)__pyx_v_array);
  }
  __pyx_L3:;

  /* "View.MemoryView":457
 *             item = <void *> array
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             if self.dtype_is_object:
 *                 (<PyObject **> item)[0] = <PyObject *> value
 */
  /*try:*/ {

    /* "View.MemoryView":458
 * 
 *         try:
 *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
 *                 (<PyObject **> item)[0] = <PyObject *> value
 *             else:
 */
    __pyx_t_1 = (__pyx_v_self->dtype_is_object != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":459
 *         try:
 *             if self.dtype_is_object:
 *                 (<PyObject **> item)[0] = <PyObject *> value             # <<<<<<<<<<<<<<
 *             else:
 *                 self.assign_item_from_object(<char *> item, value)
 */
      (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value);

      /* "View.MemoryView":458
 * 
 *         try:
 *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
 *                 (<PyObject **> item)[0] = <PyObject *> value
 *             else:
 */
      goto __pyx_L8;
    }

    /* "View.MemoryView":461
 *                 (<PyObject **> item)[0] = <PyObject *> value
 *             else:
 *                 self.assign_item_from_object(<char *> item, value)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    /*else*/ {
      __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 461, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_L8:;

    /* "View.MemoryView":465
 * 
 * 
 *             if self.view.suboffsets != NULL:             # <<<<<<<<<<<<<<
 *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)
 *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,
 */
    __pyx_t_1 = ((__pyx_v_self->view.suboffsets != NULL) != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":466
 * 
 *             if self.view.suboffsets != NULL:
 *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)             # <<<<<<<<<<<<<<
 *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,
 *                                 item, self.dtype_is_object)
 */
      __pyx_t_2 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 466, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "View.MemoryView":465
 * 
 * 
 *             if self.view.suboffsets != NULL:             # <<<<<<<<<<<<<<
 *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)
 *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,
 */
    }

    /* "View.MemoryView":467
 *             if self.view.suboffsets != NULL:
 *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)
 *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,             # <<<<<<<<<<<<<<
 *                                 item, self.dtype_is_object)
 *         finally:
 */
    __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object);
  }

  /* "View.MemoryView":470
 *                                 item, self.dtype_is_object)
 *         finally:
 *             PyMem_Free(tmp)             # <<<<<<<<<<<<<<
 * 
 *     cdef setitem_indexed(self, index, value):
 */
  /*finally:*/ {
    /*normal exit:*/{
      PyMem_Free(__pyx_v_tmp);
      goto __pyx_L7;
    }
    __pyx_L6_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
      {
        PyMem_Free(__pyx_v_tmp);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
      goto __pyx_L1_error;
    }
    __pyx_L7:;
  }

  /* "View.MemoryView":440
 *                                  src.ndim, dst.ndim, self.dtype_is_object)
 * 
 *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):             # <<<<<<<<<<<<<<
 *         cdef int array[128]
 *         cdef void *tmp = NULL
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assign_scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":472
 *             PyMem_Free(tmp)
 * 
 *     cdef setitem_indexed(self, index, value):             # <<<<<<<<<<<<<<
 *         cdef char *itemp = self.get_item_pointer(index)
 *         self.assign_item_from_object(itemp, value)
 */

static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
  char *__pyx_v_itemp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("setitem_indexed", 0);

  /* "View.MemoryView":473
 * 
 *     cdef setitem_indexed(self, index, value):
 *         cdef char *itemp = self.get_item_pointer(index)             # <<<<<<<<<<<<<<
 *         self.assign_item_from_object(itemp, value)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(4, 473, __pyx_L1_error)
  __pyx_v_itemp = __pyx_t_1;

  /* "View.MemoryView":474
 *     cdef setitem_indexed(self, index, value):
 *         cdef char *itemp = self.get_item_pointer(index)
 *         self.assign_item_from_object(itemp, value)             # <<<<<<<<<<<<<<
 * 
 *     cdef convert_item_to_object(self, char *itemp):
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "View.MemoryView":472
 *             PyMem_Free(tmp)
 * 
 *     cdef setitem_indexed(self, index, value):             # <<<<<<<<<<<<<<
 *         cdef char *itemp = self.get_item_pointer(index)
 *         self.assign_item_from_object(itemp, value)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":476
 *         self.assign_item_from_object(itemp, value)
 * 
 *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
 *         """Only used if instantiated manually by the user, or if Cython doesn't
 *         know how to convert the type"""
 */

static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp) {
  PyObject *__pyx_v_struct = NULL;
  PyObject *__pyx_v_bytesitem = 0;
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  size_t __pyx_t_10;
  int __pyx_t_11;
  __Pyx_RefNannySetupContext("convert_item_to_object", 0);

  /* "View.MemoryView":479
 *         """Only used if instantiated manually by the user, or if Cython doesn't
 *         know how to convert the type"""
 *         import struct             # <<<<<<<<<<<<<<
 *         cdef bytes bytesitem
 * 
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_struct = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "View.MemoryView":482
 *         cdef bytes bytesitem
 * 
 *         bytesitem = itemp[:self.view.itemsize]             # <<<<<<<<<<<<<<
 *         try:
 *             result = struct.unpack(self.view.format, bytesitem)
 */
  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytesitem = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "View.MemoryView":483
 * 
 *         bytesitem = itemp[:self.view.itemsize]
 *         try:             # <<<<<<<<<<<<<<
 *             result = struct.unpack(self.view.format, bytesitem)
 *         except struct.error:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "View.MemoryView":484
 *         bytesitem = itemp[:self.view.itemsize]
 *         try:
 *             result = struct.unpack(self.view.format, bytesitem)             # <<<<<<<<<<<<<<
 *         except struct.error:
 *             raise ValueError("Unable to convert item to object")
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 484, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 484, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 484, __pyx_L3_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 484, __pyx_L3_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      {
        __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 484, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_6);
        __Pyx_INCREF(__pyx_v_bytesitem);
        __Pyx_GIVEREF(__pyx_v_bytesitem);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_bytesitem);
        __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 484, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_result = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "View.MemoryView":483
 * 
 *         bytesitem = itemp[:self.view.itemsize]
 *         try:             # <<<<<<<<<<<<<<
 *             result = struct.unpack(self.view.format, bytesitem)
 *         except struct.error:
 */
    }

    /* "View.MemoryView":488
 *             raise ValueError("Unable to convert item to object")
 *         else:
 *             if len(self.view.format) == 1:             # <<<<<<<<<<<<<<
 *                 return result[0]
 *             return result
 */
    /*else:*/ {
      __pyx_t_10 = strlen(__pyx_v_self->view.format); 
      __pyx_t_11 = ((__pyx_t_10 == 1) != 0);
      if (__pyx_t_11) {

        /* "View.MemoryView":489
 *         else:
 *             if len(self.view.format) == 1:
 *                 return result[0]             # <<<<<<<<<<<<<<
 *             return result
 * 
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 489, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_r = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L6_except_return;

        /* "View.MemoryView":488
 *             raise ValueError("Unable to convert item to object")
 *         else:
 *             if len(self.view.format) == 1:             # <<<<<<<<<<<<<<
 *                 return result[0]
 *             return result
 */
      }

      /* "View.MemoryView":490
 *             if len(self.view.format) == 1:
 *                 return result[0]
 *             return result             # <<<<<<<<<<<<<<
 * 
 *     cdef assign_item_from_object(self, char *itemp, object value):
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_result);
      __pyx_r = __pyx_v_result;
      goto __pyx_L6_except_return;
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "View.MemoryView":485
 *         try:
 *             result = struct.unpack(self.view.format, bytesitem)
 *         except struct.error:             # <<<<<<<<<<<<<<
 *             raise ValueError("Unable to convert item to object")
 *         else:
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 485, __pyx_L5_except_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {
      __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(4, 485, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_9);

      /* "View.MemoryView":486
 *             result = struct.unpack(self.view.format, bytesitem)
 *         except struct.error:
 *             raise ValueError("Unable to convert item to object")             # <<<<<<<<<<<<<<
 *         else:
 *             if len(self.view.format) == 1:
 */
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__160, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 486, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(4, 486, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "View.MemoryView":483
 * 
 *         bytesitem = itemp[:self.view.itemsize]
 *         try:             # <<<<<<<<<<<<<<
 *             result = struct.unpack(self.view.format, bytesitem)
 *         except struct.error:
 */
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
  }

  /* "View.MemoryView":476
 *         self.assign_item_from_object(itemp, value)
 * 
 *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
 *         """Only used if instantiated manually by the user, or if Cython doesn't
 *         know how to convert the type"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_struct);
  __Pyx_XDECREF(__pyx_v_bytesitem);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":492
 *             return result
 * 
 *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
 *         """Only used if instantiated manually by the user, or if Cython doesn't
 *         know how to convert the type"""
 */

static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_struct = NULL;
  char __pyx_v_c;
  PyObject *__pyx_v_bytesvalue = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  char *__pyx_t_11;
  char *__pyx_t_12;
  char *__pyx_t_13;
  char *__pyx_t_14;
  __Pyx_RefNannySetupContext("assign_item_from_object", 0);

  /* "View.MemoryView":495
 *         """Only used if instantiated manually by the user, or if Cython doesn't
 *         know how to convert the type"""
 *         import struct             # <<<<<<<<<<<<<<
 *         cdef char c
 *         cdef bytes bytesvalue
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_struct = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "View.MemoryView":500
 *         cdef Py_ssize_t i
 * 
 *         if isinstance(value, tuple):             # <<<<<<<<<<<<<<
 *             bytesvalue = struct.pack(self.view.format, *value)
 *         else:
 */
  __pyx_t_2 = PyTuple_Check(__pyx_v_value); 
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "View.MemoryView":501
 * 
 *         if isinstance(value, tuple):
 *             bytesvalue = struct.pack(self.view.format, *value)             # <<<<<<<<<<<<<<
 *         else:
 *             bytesvalue = struct.pack(self.view.format, value)
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(4, 501, __pyx_L1_error)
    __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "View.MemoryView":500
 *         cdef Py_ssize_t i
 * 
 *         if isinstance(value, tuple):             # <<<<<<<<<<<<<<
 *             bytesvalue = struct.pack(self.view.format, *value)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":503
 *             bytesvalue = struct.pack(self.view.format, *value)
 *         else:
 *             bytesvalue = struct.pack(self.view.format, value)             # <<<<<<<<<<<<<<
 * 
 *         for i, c in enumerate(bytesvalue):
 */
  /*else*/ {
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 503, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 503, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_1);
      __Pyx_INCREF(__pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_value);
      __pyx_t_1 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(4, 503, __pyx_L1_error)
    __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;
  }
  __pyx_L3:;

  /* "View.MemoryView":505
 *             bytesvalue = struct.pack(self.view.format, value)
 * 
 *         for i, c in enumerate(bytesvalue):             # <<<<<<<<<<<<<<
 *             itemp[i] = c
 * 
 */
  __pyx_t_9 = 0;
  if (unlikely(__pyx_v_bytesvalue == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable");
    __PYX_ERR(4, 505, __pyx_L1_error)
  }
  __Pyx_INCREF(__pyx_v_bytesvalue);
  __pyx_t_10 = __pyx_v_bytesvalue;
  __pyx_t_12 = PyBytes_AS_STRING(__pyx_t_10);
  __pyx_t_13 = (__pyx_t_12 + PyBytes_GET_SIZE(__pyx_t_10));
  for (__pyx_t_14 = __pyx_t_12; __pyx_t_14 < __pyx_t_13; __pyx_t_14++) {
    __pyx_t_11 = __pyx_t_14;
    __pyx_v_c = (__pyx_t_11[0]);

    /* "View.MemoryView":506
 * 
 *         for i, c in enumerate(bytesvalue):
 *             itemp[i] = c             # <<<<<<<<<<<<<<
 * 
 *     @cname('getbuffer')
 */
    __pyx_v_i = __pyx_t_9;

    /* "View.MemoryView":505
 *             bytesvalue = struct.pack(self.view.format, value)
 * 
 *         for i, c in enumerate(bytesvalue):             # <<<<<<<<<<<<<<
 *             itemp[i] = c
 * 
 */
    __pyx_t_9 = (__pyx_t_9 + 1);

    /* "View.MemoryView":506
 * 
 *         for i, c in enumerate(bytesvalue):
 *             itemp[i] = c             # <<<<<<<<<<<<<<
 * 
 *     @cname('getbuffer')
 */
    (__pyx_v_itemp[__pyx_v_i]) = __pyx_v_c;
  }
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "View.MemoryView":492
 *             return result
 * 
 *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
 *         """Only used if instantiated manually by the user, or if Cython doesn't
 *         know how to convert the type"""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("View.MemoryView.memoryview.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_struct);
  __Pyx_XDECREF(__pyx_v_bytesvalue);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":509
 * 
 *     @cname('getbuffer')
 *     def __getbuffer__(self, Py_buffer *info, int flags):             # <<<<<<<<<<<<<<
 *         if flags & PyBUF_STRIDES:
 *             info.shape = self.view.shape
 */

/* Python wrapper */
static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t *__pyx_t_2;
  char *__pyx_t_3;
  void *__pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  __Pyx_RefNannySetupContext("__getbuffer__", 0);
  if (__pyx_v_info != NULL) {
    __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(__pyx_v_info->obj);
  }

  /* "View.MemoryView":510
 *     @cname('getbuffer')
 *     def __getbuffer__(self, Py_buffer *info, int flags):
 *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
 *             info.shape = self.view.shape
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":511
 *     def __getbuffer__(self, Py_buffer *info, int flags):
 *         if flags & PyBUF_STRIDES:
 *             info.shape = self.view.shape             # <<<<<<<<<<<<<<
 *         else:
 *             info.shape = NULL
 */
    __pyx_t_2 = __pyx_v_self->view.shape;
    __pyx_v_info->shape = __pyx_t_2;

    /* "View.MemoryView":510
 *     @cname('getbuffer')
 *     def __getbuffer__(self, Py_buffer *info, int flags):
 *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
 *             info.shape = self.view.shape
 *         else:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":513
 *             info.shape = self.view.shape
 *         else:
 *             info.shape = NULL             # <<<<<<<<<<<<<<
 * 
 *         if flags & PyBUF_STRIDES:
 */
  /*else*/ {
    __pyx_v_info->shape = NULL;
  }
  __pyx_L3:;

  /* "View.MemoryView":515
 *             info.shape = NULL
 * 
 *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
 *             info.strides = self.view.strides
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":516
 * 
 *         if flags & PyBUF_STRIDES:
 *             info.strides = self.view.strides             # <<<<<<<<<<<<<<
 *         else:
 *             info.strides = NULL
 */
    __pyx_t_2 = __pyx_v_self->view.strides;
    __pyx_v_info->strides = __pyx_t_2;

    /* "View.MemoryView":515
 *             info.shape = NULL
 * 
 *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
 *             info.strides = self.view.strides
 *         else:
 */
    goto __pyx_L4;
  }

  /* "View.MemoryView":518
 *             info.strides = self.view.strides
 *         else:
 *             info.strides = NULL             # <<<<<<<<<<<<<<
 * 
 *         if flags & PyBUF_INDIRECT:
 */
  /*else*/ {
    __pyx_v_info->strides = NULL;
  }
  __pyx_L4:;

  /* "View.MemoryView":520
 *             info.strides = NULL
 * 
 *         if flags & PyBUF_INDIRECT:             # <<<<<<<<<<<<<<
 *             info.suboffsets = self.view.suboffsets
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":521
 * 
 *         if flags & PyBUF_INDIRECT:
 *             info.suboffsets = self.view.suboffsets             # <<<<<<<<<<<<<<
 *         else:
 *             info.suboffsets = NULL
 */
    __pyx_t_2 = __pyx_v_self->view.suboffsets;
    __pyx_v_info->suboffsets = __pyx_t_2;

    /* "View.MemoryView":520
 *             info.strides = NULL
 * 
 *         if flags & PyBUF_INDIRECT:             # <<<<<<<<<<<<<<
 *             info.suboffsets = self.view.suboffsets
 *         else:
 */
    goto __pyx_L5;
  }

  /* "View.MemoryView":523
 *             info.suboffsets = self.view.suboffsets
 *         else:
 *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
 * 
 *         if flags & PyBUF_FORMAT:
 */
  /*else*/ {
    __pyx_v_info->suboffsets = NULL;
  }
  __pyx_L5:;

  /* "View.MemoryView":525
 *             info.suboffsets = NULL
 * 
 *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *             info.format = self.view.format
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":526
 * 
 *         if flags & PyBUF_FORMAT:
 *             info.format = self.view.format             # <<<<<<<<<<<<<<
 *         else:
 *             info.format = NULL
 */
    __pyx_t_3 = __pyx_v_self->view.format;
    __pyx_v_info->format = __pyx_t_3;

    /* "View.MemoryView":525
 *             info.suboffsets = NULL
 * 
 *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *             info.format = self.view.format
 *         else:
 */
    goto __pyx_L6;
  }

  /* "View.MemoryView":528
 *             info.format = self.view.format
 *         else:
 *             info.format = NULL             # <<<<<<<<<<<<<<
 * 
 *         info.buf = self.view.buf
 */
  /*else*/ {
    __pyx_v_info->format = NULL;
  }
  __pyx_L6:;

  /* "View.MemoryView":530
 *             info.format = NULL
 * 
 *         info.buf = self.view.buf             # <<<<<<<<<<<<<<
 *         info.ndim = self.view.ndim
 *         info.itemsize = self.view.itemsize
 */
  __pyx_t_4 = __pyx_v_self->view.buf;
  __pyx_v_info->buf = __pyx_t_4;

  /* "View.MemoryView":531
 * 
 *         info.buf = self.view.buf
 *         info.ndim = self.view.ndim             # <<<<<<<<<<<<<<
 *         info.itemsize = self.view.itemsize
 *         info.len = self.view.len
 */
  __pyx_t_5 = __pyx_v_self->view.ndim;
  __pyx_v_info->ndim = __pyx_t_5;

  /* "View.MemoryView":532
 *         info.buf = self.view.buf
 *         info.ndim = self.view.ndim
 *         info.itemsize = self.view.itemsize             # <<<<<<<<<<<<<<
 *         info.len = self.view.len
 *         info.readonly = 0
 */
  __pyx_t_6 = __pyx_v_self->view.itemsize;
  __pyx_v_info->itemsize = __pyx_t_6;

  /* "View.MemoryView":533
 *         info.ndim = self.view.ndim
 *         info.itemsize = self.view.itemsize
 *         info.len = self.view.len             # <<<<<<<<<<<<<<
 *         info.readonly = 0
 *         info.obj = self
 */
  __pyx_t_6 = __pyx_v_self->view.len;
  __pyx_v_info->len = __pyx_t_6;

  /* "View.MemoryView":534
 *         info.itemsize = self.view.itemsize
 *         info.len = self.view.len
 *         info.readonly = 0             # <<<<<<<<<<<<<<
 *         info.obj = self
 * 
 */
  __pyx_v_info->readonly = 0;

  /* "View.MemoryView":535
 *         info.len = self.view.len
 *         info.readonly = 0
 *         info.obj = self             # <<<<<<<<<<<<<<
 * 
 *     __pyx_getbuffer = capsule(<void *> &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)")
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  __Pyx_GOTREF(__pyx_v_info->obj);
  __Pyx_DECREF(__pyx_v_info->obj);
  __pyx_v_info->obj = ((PyObject *)__pyx_v_self);

  /* "View.MemoryView":509
 * 
 *     @cname('getbuffer')
 *     def __getbuffer__(self, Py_buffer *info, int flags):             # <<<<<<<<<<<<<<
 *         if flags & PyBUF_STRIDES:
 *             info.shape = self.view.shape
 */

  /* function exit code */
  __pyx_r = 0;
  if (__pyx_v_info != NULL && __pyx_v_info->obj == Py_None) {
    __Pyx_GOTREF(Py_None);
    __Pyx_DECREF(Py_None); __pyx_v_info->obj = NULL;
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":541
 * 
 *     @property
 *     def T(self):             # <<<<<<<<<<<<<<
 *         cdef _memoryviewslice result = memoryview_copy(self)
 *         transpose_memslice(&result.from_slice)
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
  struct __pyx_memoryviewslice_obj *__pyx_v_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":542
 *     @property
 *     def T(self):
 *         cdef _memoryviewslice result = memoryview_copy(self)             # <<<<<<<<<<<<<<
 *         transpose_memslice(&result.from_slice)
 *         return result
 */
  __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(4, 542, __pyx_L1_error)
  __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "View.MemoryView":543
 *     def T(self):
 *         cdef _memoryviewslice result = memoryview_copy(self)
 *         transpose_memslice(&result.from_slice)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(4, 543, __pyx_L1_error)

  /* "View.MemoryView":544
 *         cdef _memoryviewslice result = memoryview_copy(self)
 *         transpose_memslice(&result.from_slice)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  /* "View.MemoryView":541
 * 
 *     @property
 *     def T(self):             # <<<<<<<<<<<<<<
 *         cdef _memoryviewslice result = memoryview_copy(self)
 *         transpose_memslice(&result.from_slice)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.memoryview.T.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":547
 * 
 *     @property
 *     def base(self):             # <<<<<<<<<<<<<<
 *         return self.obj
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":548
 *     @property
 *     def base(self):
 *         return self.obj             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->obj);
  __pyx_r = __pyx_v_self->obj;
  goto __pyx_L0;

  /* "View.MemoryView":547
 * 
 *     @property
 *     def base(self):             # <<<<<<<<<<<<<<
 *         return self.obj
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":551
 * 
 *     @property
 *     def shape(self):             # <<<<<<<<<<<<<<
 *         return tuple([length for length in self.view.shape[:self.view.ndim]])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t *__pyx_t_2;
  Py_ssize_t *__pyx_t_3;
  Py_ssize_t *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":552
 *     @property
 *     def shape(self):
 *         return tuple([length for length in self.view.shape[:self.view.ndim]])             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim);
  for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
    __pyx_t_2 = __pyx_t_4;
    __pyx_v_length = (__pyx_t_2[0]);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(4, 552, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":551
 * 
 *     @property
 *     def shape(self):             # <<<<<<<<<<<<<<
 *         return tuple([length for length in self.view.shape[:self.view.ndim]])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("View.MemoryView.memoryview.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":555
 * 
 *     @property
 *     def strides(self):             # <<<<<<<<<<<<<<
 *         if self.view.strides == NULL:
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
  Py_ssize_t __pyx_v_stride;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t *__pyx_t_3;
  Py_ssize_t *__pyx_t_4;
  Py_ssize_t *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":556
 *     @property
 *     def strides(self):
 *         if self.view.strides == NULL:             # <<<<<<<<<<<<<<
 * 
 *             raise ValueError("Buffer view does not expose strides")
 */
  __pyx_t_1 = ((__pyx_v_self->view.strides == NULL) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":558
 *         if self.view.strides == NULL:
 * 
 *             raise ValueError("Buffer view does not expose strides")             # <<<<<<<<<<<<<<
 * 
 *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__161, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(4, 558, __pyx_L1_error)

    /* "View.MemoryView":556
 *     @property
 *     def strides(self):
 *         if self.view.strides == NULL:             # <<<<<<<<<<<<<<
 * 
 *             raise ValueError("Buffer view does not expose strides")
 */
  }

  /* "View.MemoryView":560
 *             raise ValueError("Buffer view does not expose strides")
 * 
 *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim);
  for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) {
    __pyx_t_3 = __pyx_t_5;
    __pyx_v_stride = (__pyx_t_3[0]);
    __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(4, 560, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":555
 * 
 *     @property
 *     def strides(self):             # <<<<<<<<<<<<<<
 *         if self.view.strides == NULL:
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("View.MemoryView.memoryview.strides.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":563
 * 
 *     @property
 *     def suboffsets(self):             # <<<<<<<<<<<<<<
 *         if self.view.suboffsets == NULL:
 *             return (-1,) * self.view.ndim
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
  Py_ssize_t __pyx_v_suboffset;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t *__pyx_t_4;
  Py_ssize_t *__pyx_t_5;
  Py_ssize_t *__pyx_t_6;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":564
 *     @property
 *     def suboffsets(self):
 *         if self.view.suboffsets == NULL:             # <<<<<<<<<<<<<<
 *             return (-1,) * self.view.ndim
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->view.suboffsets == NULL) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":565
 *     def suboffsets(self):
 *         if self.view.suboffsets == NULL:
 *             return (-1,) * self.view.ndim             # <<<<<<<<<<<<<<
 * 
 *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__162, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "View.MemoryView":564
 *     @property
 *     def suboffsets(self):
 *         if self.view.suboffsets == NULL:             # <<<<<<<<<<<<<<
 *             return (-1,) * self.view.ndim
 * 
 */
  }

  /* "View.MemoryView":567
 *             return (-1,) * self.view.ndim
 * 
 *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim);
  for (__pyx_t_6 = __pyx_v_self->view.suboffsets; __pyx_t_6 < __pyx_t_5; __pyx_t_6++) {
    __pyx_t_4 = __pyx_t_6;
    __pyx_v_suboffset = (__pyx_t_4[0]);
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_suboffset); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) __PYX_ERR(4, 567, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":563
 * 
 *     @property
 *     def suboffsets(self):             # <<<<<<<<<<<<<<
 *         if self.view.suboffsets == NULL:
 *             return (-1,) * self.view.ndim
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("View.MemoryView.memoryview.suboffsets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":570
 * 
 *     @property
 *     def ndim(self):             # <<<<<<<<<<<<<<
 *         return self.view.ndim
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":571
 *     @property
 *     def ndim(self):
 *         return self.view.ndim             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":570
 * 
 *     @property
 *     def ndim(self):             # <<<<<<<<<<<<<<
 *         return self.view.ndim
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.memoryview.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":574
 * 
 *     @property
 *     def itemsize(self):             # <<<<<<<<<<<<<<
 *         return self.view.itemsize
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":575
 *     @property
 *     def itemsize(self):
 *         return self.view.itemsize             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":574
 * 
 *     @property
 *     def itemsize(self):             # <<<<<<<<<<<<<<
 *         return self.view.itemsize
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.memoryview.itemsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":578
 * 
 *     @property
 *     def nbytes(self):             # <<<<<<<<<<<<<<
 *         return self.size * self.view.itemsize
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":579
 *     @property
 *     def nbytes(self):
 *         return self.size * self.view.itemsize             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":578
 * 
 *     @property
 *     def nbytes(self):             # <<<<<<<<<<<<<<
 *         return self.size * self.view.itemsize
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("View.MemoryView.memoryview.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":582
 * 
 *     @property
 *     def size(self):             # <<<<<<<<<<<<<<
 *         if self._size is None:
 *             result = 1
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_v_length = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t *__pyx_t_3;
  Py_ssize_t *__pyx_t_4;
  Py_ssize_t *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":583
 *     @property
 *     def size(self):
 *         if self._size is None:             # <<<<<<<<<<<<<<
 *             result = 1
 * 
 */
  __pyx_t_1 = (__pyx_v_self->_size == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":584
 *     def size(self):
 *         if self._size is None:
 *             result = 1             # <<<<<<<<<<<<<<
 * 
 *             for length in self.view.shape[:self.view.ndim]:
 */
    __Pyx_INCREF(__pyx_int_1);
    __pyx_v_result = __pyx_int_1;

    /* "View.MemoryView":586
 *             result = 1
 * 
 *             for length in self.view.shape[:self.view.ndim]:             # <<<<<<<<<<<<<<
 *                 result *= length
 * 
 */
    __pyx_t_4 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim);
    for (__pyx_t_5 = __pyx_v_self->view.shape; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) {
      __pyx_t_3 = __pyx_t_5;
      __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_3[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "View.MemoryView":587
 * 
 *             for length in self.view.shape[:self.view.ndim]:
 *                 result *= length             # <<<<<<<<<<<<<<
 * 
 *             self._size = result
 */
      __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 587, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_6);
      __pyx_t_6 = 0;
    }

    /* "View.MemoryView":589
 *                 result *= length
 * 
 *             self._size = result             # <<<<<<<<<<<<<<
 * 
 *         return self._size
 */
    __Pyx_INCREF(__pyx_v_result);
    __Pyx_GIVEREF(__pyx_v_result);
    __Pyx_GOTREF(__pyx_v_self->_size);
    __Pyx_DECREF(__pyx_v_self->_size);
    __pyx_v_self->_size = __pyx_v_result;

    /* "View.MemoryView":583
 *     @property
 *     def size(self):
 *         if self._size is None:             # <<<<<<<<<<<<<<
 *             result = 1
 * 
 */
  }

  /* "View.MemoryView":591
 *             self._size = result
 * 
 *         return self._size             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_size);
  __pyx_r = __pyx_v_self->_size;
  goto __pyx_L0;

  /* "View.MemoryView":582
 * 
 *     @property
 *     def size(self):             # <<<<<<<<<<<<<<
 *         if self._size is None:
 *             result = 1
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("View.MemoryView.memoryview.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_length);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":593
 *         return self._size
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         if self.view.ndim >= 1:
 *             return self.view.shape[0]
 */

/* Python wrapper */
static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "View.MemoryView":594
 * 
 *     def __len__(self):
 *         if self.view.ndim >= 1:             # <<<<<<<<<<<<<<
 *             return self.view.shape[0]
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->view.ndim >= 1) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":595
 *     def __len__(self):
 *         if self.view.ndim >= 1:
 *             return self.view.shape[0]             # <<<<<<<<<<<<<<
 * 
 *         return 0
 */
    __pyx_r = (__pyx_v_self->view.shape[0]);
    goto __pyx_L0;

    /* "View.MemoryView":594
 * 
 *     def __len__(self):
 *         if self.view.ndim >= 1:             # <<<<<<<<<<<<<<
 *             return self.view.shape[0]
 * 
 */
  }

  /* "View.MemoryView":597
 *             return self.view.shape[0]
 * 
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "View.MemoryView":593
 *         return self._size
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         if self.view.ndim >= 1:
 *             return self.view.shape[0]
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":599
 *         return 0
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,
 *                                                id(self))
 */

/* Python wrapper */
static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "View.MemoryView":600
 * 
 *     def __repr__(self):
 *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,             # <<<<<<<<<<<<<<
 *                                                id(self))
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "View.MemoryView":601
 *     def __repr__(self):
 *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,
 *                                                id(self))             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "View.MemoryView":600
 * 
 *     def __repr__(self):
 *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,             # <<<<<<<<<<<<<<
 *                                                id(self))
 * 
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":599
 *         return 0
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,
 *                                                id(self))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("View.MemoryView.memoryview.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":603
 *                                                id(self))
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         return "<MemoryView of %r object>" % (self.base.__class__.__name__,)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "View.MemoryView":604
 * 
 *     def __str__(self):
 *         return "<MemoryView of %r object>" % (self.base.__class__.__name__,)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":603
 *                                                id(self))
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         return "<MemoryView of %r object>" % (self.base.__class__.__name__,)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("View.MemoryView.memoryview.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":607
 * 
 * 
 *     def is_c_contig(self):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice *mslice
 *         cdef __Pyx_memviewslice tmp
 */

/* Python wrapper */
static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_c_contig (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self) {
  __Pyx_memviewslice *__pyx_v_mslice;
  __Pyx_memviewslice __pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("is_c_contig", 0);

  /* "View.MemoryView":610
 *         cdef __Pyx_memviewslice *mslice
 *         cdef __Pyx_memviewslice tmp
 *         mslice = get_slice_from_memview(self, &tmp)             # <<<<<<<<<<<<<<
 *         return slice_is_contig(mslice[0], 'C', self.view.ndim)
 * 
 */
  __pyx_v_mslice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp));

  /* "View.MemoryView":611
 *         cdef __Pyx_memviewslice tmp
 *         mslice = get_slice_from_memview(self, &tmp)
 *         return slice_is_contig(mslice[0], 'C', self.view.ndim)             # <<<<<<<<<<<<<<
 * 
 *     def is_f_contig(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":607
 * 
 * 
 *     def is_c_contig(self):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice *mslice
 *         cdef __Pyx_memviewslice tmp
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.memoryview.is_c_contig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":613
 *         return slice_is_contig(mslice[0], 'C', self.view.ndim)
 * 
 *     def is_f_contig(self):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice *mslice
 *         cdef __Pyx_memviewslice tmp
 */

/* Python wrapper */
static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_f_contig (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self) {
  __Pyx_memviewslice *__pyx_v_mslice;
  __Pyx_memviewslice __pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("is_f_contig", 0);

  /* "View.MemoryView":616
 *         cdef __Pyx_memviewslice *mslice
 *         cdef __Pyx_memviewslice tmp
 *         mslice = get_slice_from_memview(self, &tmp)             # <<<<<<<<<<<<<<
 *         return slice_is_contig(mslice[0], 'F', self.view.ndim)
 * 
 */
  __pyx_v_mslice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp));

  /* "View.MemoryView":617
 *         cdef __Pyx_memviewslice tmp
 *         mslice = get_slice_from_memview(self, &tmp)
 *         return slice_is_contig(mslice[0], 'F', self.view.ndim)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":613
 *         return slice_is_contig(mslice[0], 'C', self.view.ndim)
 * 
 *     def is_f_contig(self):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice *mslice
 *         cdef __Pyx_memviewslice tmp
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.memoryview.is_f_contig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":619
 *         return slice_is_contig(mslice[0], 'F', self.view.ndim)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice mslice
 *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS
 */

/* Python wrapper */
static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self) {
  __Pyx_memviewslice __pyx_v_mslice;
  int __pyx_v_flags;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_memviewslice __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("copy", 0);

  /* "View.MemoryView":621
 *     def copy(self):
 *         cdef __Pyx_memviewslice mslice
 *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS             # <<<<<<<<<<<<<<
 * 
 *         slice_copy(self, &mslice)
 */
  __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS));

  /* "View.MemoryView":623
 *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS
 * 
 *         slice_copy(self, &mslice)             # <<<<<<<<<<<<<<
 *         mslice = slice_copy_contig(&mslice, "c", self.view.ndim,
 *                                    self.view.itemsize,
 */
  __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice));

  /* "View.MemoryView":624
 * 
 *         slice_copy(self, &mslice)
 *         mslice = slice_copy_contig(&mslice, "c", self.view.ndim,             # <<<<<<<<<<<<<<
 *                                    self.view.itemsize,
 *                                    flags|PyBUF_C_CONTIGUOUS,
 */
  __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 624, __pyx_L1_error)
  __pyx_v_mslice = __pyx_t_1;

  /* "View.MemoryView":629
 *                                    self.dtype_is_object)
 * 
 *         return memoryview_copy_from_slice(self, &mslice)             # <<<<<<<<<<<<<<
 * 
 *     def copy_fortran(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":619
 *         return slice_is_contig(mslice[0], 'F', self.view.ndim)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice mslice
 *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("View.MemoryView.memoryview.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":631
 *         return memoryview_copy_from_slice(self, &mslice)
 * 
 *     def copy_fortran(self):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice src, dst
 *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS
 */

/* Python wrapper */
static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy_fortran (wrapper)", 0);
  __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self) {
  __Pyx_memviewslice __pyx_v_src;
  __Pyx_memviewslice __pyx_v_dst;
  int __pyx_v_flags;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_memviewslice __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("copy_fortran", 0);

  /* "View.MemoryView":633
 *     def copy_fortran(self):
 *         cdef __Pyx_memviewslice src, dst
 *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS             # <<<<<<<<<<<<<<
 * 
 *         slice_copy(self, &src)
 */
  __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS));

  /* "View.MemoryView":635
 *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS
 * 
 *         slice_copy(self, &src)             # <<<<<<<<<<<<<<
 *         dst = slice_copy_contig(&src, "fortran", self.view.ndim,
 *                                 self.view.itemsize,
 */
  __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src));

  /* "View.MemoryView":636
 * 
 *         slice_copy(self, &src)
 *         dst = slice_copy_contig(&src, "fortran", self.view.ndim,             # <<<<<<<<<<<<<<
 *                                 self.view.itemsize,
 *                                 flags|PyBUF_F_CONTIGUOUS,
 */
  __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 636, __pyx_L1_error)
  __pyx_v_dst = __pyx_t_1;

  /* "View.MemoryView":641
 *                                 self.dtype_is_object)
 * 
 *         return memoryview_copy_from_slice(self, &dst)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":631
 *         return memoryview_copy_from_slice(self, &mslice)
 * 
 *     def copy_fortran(self):             # <<<<<<<<<<<<<<
 *         cdef __Pyx_memviewslice src, dst
 *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("View.MemoryView.memoryview.copy_fortran", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf___pyx_memoryview___reduce_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__163, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.memoryview.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf___pyx_memoryview_2__setstate_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__164, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.memoryview.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":645
 * 
 * @cname('__pyx_memoryview_new')
 * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):             # <<<<<<<<<<<<<<
 *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
 *     result.typeinfo = typeinfo
 */

static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, int __pyx_v_dtype_is_object, __Pyx_TypeInfo *__pyx_v_typeinfo) {
  struct __pyx_memoryview_obj *__pyx_v_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("memoryview_cwrapper", 0);

  /* "View.MemoryView":646
 * @cname('__pyx_memoryview_new')
 * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):
 *     cdef memoryview result = memoryview(o, flags, dtype_is_object)             # <<<<<<<<<<<<<<
 *     result.typeinfo = typeinfo
 *     return result
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_o);
  __Pyx_GIVEREF(__pyx_v_o);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_o);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "View.MemoryView":647
 * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):
 *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
 *     result.typeinfo = typeinfo             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  __pyx_v_result->typeinfo = __pyx_v_typeinfo;

  /* "View.MemoryView":648
 *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
 *     result.typeinfo = typeinfo
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_check')
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  /* "View.MemoryView":645
 * 
 * @cname('__pyx_memoryview_new')
 * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):             # <<<<<<<<<<<<<<
 *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
 *     result.typeinfo = typeinfo
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("View.MemoryView.memoryview_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":651
 * 
 * @cname('__pyx_memoryview_check')
 * cdef inline bint memoryview_check(object o):             # <<<<<<<<<<<<<<
 *     return isinstance(o, memoryview)
 * 
 */

static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("memoryview_check", 0);

  /* "View.MemoryView":652
 * @cname('__pyx_memoryview_check')
 * cdef inline bint memoryview_check(object o):
 *     return isinstance(o, memoryview)             # <<<<<<<<<<<<<<
 * 
 * cdef tuple _unellipsify(object index, int ndim):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o, __pyx_memoryview_type); 
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  /* "View.MemoryView":651
 * 
 * @cname('__pyx_memoryview_check')
 * cdef inline bint memoryview_check(object o):             # <<<<<<<<<<<<<<
 *     return isinstance(o, memoryview)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":654
 *     return isinstance(o, memoryview)
 * 
 * cdef tuple _unellipsify(object index, int ndim):             # <<<<<<<<<<<<<<
 *     """
 *     Replace all ellipses with full slices and fill incomplete indices with
 */

static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
  PyObject *__pyx_v_tup = NULL;
  PyObject *__pyx_v_result = NULL;
  int __pyx_v_have_slices;
  int __pyx_v_seen_ellipsis;
  CYTHON_UNUSED PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_v_item = NULL;
  Py_ssize_t __pyx_v_nslices;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  __Pyx_RefNannySetupContext("_unellipsify", 0);

  /* "View.MemoryView":659
 *     full slices.
 *     """
 *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
 *         tup = (index,)
 *     else:
 */
  __pyx_t_1 = PyTuple_Check(__pyx_v_index); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":660
 *     """
 *     if not isinstance(index, tuple):
 *         tup = (index,)             # <<<<<<<<<<<<<<
 *     else:
 *         tup = index
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_index);
    __Pyx_GIVEREF(__pyx_v_index);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index);
    __pyx_v_tup = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "View.MemoryView":659
 *     full slices.
 *     """
 *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
 *         tup = (index,)
 *     else:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":662
 *         tup = (index,)
 *     else:
 *         tup = index             # <<<<<<<<<<<<<<
 * 
 *     result = []
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_v_index);
    __pyx_v_tup = __pyx_v_index;
  }
  __pyx_L3:;

  /* "View.MemoryView":664
 *         tup = index
 * 
 *     result = []             # <<<<<<<<<<<<<<
 *     have_slices = False
 *     seen_ellipsis = False
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_result = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "View.MemoryView":665
 * 
 *     result = []
 *     have_slices = False             # <<<<<<<<<<<<<<
 *     seen_ellipsis = False
 *     for idx, item in enumerate(tup):
 */
  __pyx_v_have_slices = 0;

  /* "View.MemoryView":666
 *     result = []
 *     have_slices = False
 *     seen_ellipsis = False             # <<<<<<<<<<<<<<
 *     for idx, item in enumerate(tup):
 *         if item is Ellipsis:
 */
  __pyx_v_seen_ellipsis = 0;

  /* "View.MemoryView":667
 *     have_slices = False
 *     seen_ellipsis = False
 *     for idx, item in enumerate(tup):             # <<<<<<<<<<<<<<
 *         if item is Ellipsis:
 *             if not seen_ellipsis:
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_3 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_v_tup)) || PyTuple_CheckExact(__pyx_v_tup)) {
    __pyx_t_4 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 667, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 667, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(4, 667, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 667, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(4, 667, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 667, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      }
    } else {
      __pyx_t_7 = __pyx_t_6(__pyx_t_4);
      if (unlikely(!__pyx_t_7)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 667, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_7);
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_3);
    __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 667, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3);
    __pyx_t_3 = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "View.MemoryView":668
 *     seen_ellipsis = False
 *     for idx, item in enumerate(tup):
 *         if item is Ellipsis:             # <<<<<<<<<<<<<<
 *             if not seen_ellipsis:
 *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
 */
    __pyx_t_2 = (__pyx_v_item == __pyx_builtin_Ellipsis);
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":669
 *     for idx, item in enumerate(tup):
 *         if item is Ellipsis:
 *             if not seen_ellipsis:             # <<<<<<<<<<<<<<
 *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
 *                 seen_ellipsis = True
 */
      __pyx_t_1 = ((!(__pyx_v_seen_ellipsis != 0)) != 0);
      if (__pyx_t_1) {

        /* "View.MemoryView":670
 *         if item is Ellipsis:
 *             if not seen_ellipsis:
 *                 result.extend([slice(None)] * (ndim - len(tup) + 1))             # <<<<<<<<<<<<<<
 *                 seen_ellipsis = True
 *             else:
 */
        __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(4, 670, __pyx_L1_error)
        __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 670, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        { Py_ssize_t __pyx_temp;
          for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
            __Pyx_INCREF(__pyx_slice__165);
            __Pyx_GIVEREF(__pyx_slice__165);
            PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__165);
          }
        }
        __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 670, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "View.MemoryView":671
 *             if not seen_ellipsis:
 *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
 *                 seen_ellipsis = True             # <<<<<<<<<<<<<<
 *             else:
 *                 result.append(slice(None))
 */
        __pyx_v_seen_ellipsis = 1;

        /* "View.MemoryView":669
 *     for idx, item in enumerate(tup):
 *         if item is Ellipsis:
 *             if not seen_ellipsis:             # <<<<<<<<<<<<<<
 *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
 *                 seen_ellipsis = True
 */
        goto __pyx_L7;
      }

      /* "View.MemoryView":673
 *                 seen_ellipsis = True
 *             else:
 *                 result.append(slice(None))             # <<<<<<<<<<<<<<
 *             have_slices = True
 *         else:
 */
      /*else*/ {
        __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__166); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 673, __pyx_L1_error)
      }
      __pyx_L7:;

      /* "View.MemoryView":674
 *             else:
 *                 result.append(slice(None))
 *             have_slices = True             # <<<<<<<<<<<<<<
 *         else:
 *             if not isinstance(item, slice) and not PyIndex_Check(item):
 */
      __pyx_v_have_slices = 1;

      /* "View.MemoryView":668
 *     seen_ellipsis = False
 *     for idx, item in enumerate(tup):
 *         if item is Ellipsis:             # <<<<<<<<<<<<<<
 *             if not seen_ellipsis:
 *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
 */
      goto __pyx_L6;
    }

    /* "View.MemoryView":676
 *             have_slices = True
 *         else:
 *             if not isinstance(item, slice) and not PyIndex_Check(item):             # <<<<<<<<<<<<<<
 *                 raise TypeError("Cannot index with type '%s'" % type(item))
 * 
 */
    /*else*/ {
      __pyx_t_2 = PySlice_Check(__pyx_v_item); 
      __pyx_t_10 = ((!(__pyx_t_2 != 0)) != 0);
      if (__pyx_t_10) {
      } else {
        __pyx_t_1 = __pyx_t_10;
        goto __pyx_L9_bool_binop_done;
      }
      __pyx_t_10 = ((!(PyIndex_Check(__pyx_v_item) != 0)) != 0);
      __pyx_t_1 = __pyx_t_10;
      __pyx_L9_bool_binop_done:;
      if (__pyx_t_1) {

        /* "View.MemoryView":677
 *         else:
 *             if not isinstance(item, slice) and not PyIndex_Check(item):
 *                 raise TypeError("Cannot index with type '%s'" % type(item))             # <<<<<<<<<<<<<<
 * 
 *             have_slices = have_slices or isinstance(item, slice)
 */
        __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_Raise(__pyx_t_7, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __PYX_ERR(4, 677, __pyx_L1_error)

        /* "View.MemoryView":676
 *             have_slices = True
 *         else:
 *             if not isinstance(item, slice) and not PyIndex_Check(item):             # <<<<<<<<<<<<<<
 *                 raise TypeError("Cannot index with type '%s'" % type(item))
 * 
 */
      }

      /* "View.MemoryView":679
 *                 raise TypeError("Cannot index with type '%s'" % type(item))
 * 
 *             have_slices = have_slices or isinstance(item, slice)             # <<<<<<<<<<<<<<
 *             result.append(item)
 * 
 */
      __pyx_t_10 = (__pyx_v_have_slices != 0);
      if (!__pyx_t_10) {
      } else {
        __pyx_t_1 = __pyx_t_10;
        goto __pyx_L11_bool_binop_done;
      }
      __pyx_t_10 = PySlice_Check(__pyx_v_item); 
      __pyx_t_2 = (__pyx_t_10 != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L11_bool_binop_done:;
      __pyx_v_have_slices = __pyx_t_1;

      /* "View.MemoryView":680
 * 
 *             have_slices = have_slices or isinstance(item, slice)
 *             result.append(item)             # <<<<<<<<<<<<<<
 * 
 *     nslices = ndim - len(result)
 */
      __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 680, __pyx_L1_error)
    }
    __pyx_L6:;

    /* "View.MemoryView":667
 *     have_slices = False
 *     seen_ellipsis = False
 *     for idx, item in enumerate(tup):             # <<<<<<<<<<<<<<
 *         if item is Ellipsis:
 *             if not seen_ellipsis:
 */
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "View.MemoryView":682
 *             result.append(item)
 * 
 *     nslices = ndim - len(result)             # <<<<<<<<<<<<<<
 *     if nslices:
 *         result.extend([slice(None)] * nslices)
 */
  __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 682, __pyx_L1_error)
  __pyx_v_nslices = (__pyx_v_ndim - __pyx_t_5);

  /* "View.MemoryView":683
 * 
 *     nslices = ndim - len(result)
 *     if nslices:             # <<<<<<<<<<<<<<
 *         result.extend([slice(None)] * nslices)
 * 
 */
  __pyx_t_1 = (__pyx_v_nslices != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":684
 *     nslices = ndim - len(result)
 *     if nslices:
 *         result.extend([slice(None)] * nslices)             # <<<<<<<<<<<<<<
 * 
 *     return have_slices or nslices, tuple(result)
 */
    __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    { Py_ssize_t __pyx_temp;
      for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
        __Pyx_INCREF(__pyx_slice__167);
        __Pyx_GIVEREF(__pyx_slice__167);
        PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__167);
      }
    }
    __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 684, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "View.MemoryView":683
 * 
 *     nslices = ndim - len(result)
 *     if nslices:             # <<<<<<<<<<<<<<
 *         result.extend([slice(None)] * nslices)
 * 
 */
  }

  /* "View.MemoryView":686
 *         result.extend([slice(None)] * nslices)
 * 
 *     return have_slices or nslices, tuple(result)             # <<<<<<<<<<<<<<
 * 
 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!__pyx_v_have_slices) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 686, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_L14_bool_binop_done:;
  __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":654
 *     return isinstance(o, memoryview)
 * 
 * cdef tuple _unellipsify(object index, int ndim):             # <<<<<<<<<<<<<<
 *     """
 *     Replace all ellipses with full slices and fill incomplete indices with
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("View.MemoryView._unellipsify", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tup);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":688
 *     return have_slices or nslices, tuple(result)
 * 
 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):             # <<<<<<<<<<<<<<
 *     for suboffset in suboffsets[:ndim]:
 *         if suboffset >= 0:
 */

static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ndim) {
  Py_ssize_t __pyx_v_suboffset;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t *__pyx_t_1;
  Py_ssize_t *__pyx_t_2;
  Py_ssize_t *__pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("assert_direct_dimensions", 0);

  /* "View.MemoryView":689
 * 
 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):
 *     for suboffset in suboffsets[:ndim]:             # <<<<<<<<<<<<<<
 *         if suboffset >= 0:
 *             raise ValueError("Indirect dimensions not supported")
 */
  __pyx_t_2 = (__pyx_v_suboffsets + __pyx_v_ndim);
  for (__pyx_t_3 = __pyx_v_suboffsets; __pyx_t_3 < __pyx_t_2; __pyx_t_3++) {
    __pyx_t_1 = __pyx_t_3;
    __pyx_v_suboffset = (__pyx_t_1[0]);

    /* "View.MemoryView":690
 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):
 *     for suboffset in suboffsets[:ndim]:
 *         if suboffset >= 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("Indirect dimensions not supported")
 * 
 */
    __pyx_t_4 = ((__pyx_v_suboffset >= 0) != 0);
    if (__pyx_t_4) {

      /* "View.MemoryView":691
 *     for suboffset in suboffsets[:ndim]:
 *         if suboffset >= 0:
 *             raise ValueError("Indirect dimensions not supported")             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__168, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 691, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(4, 691, __pyx_L1_error)

      /* "View.MemoryView":690
 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):
 *     for suboffset in suboffsets[:ndim]:
 *         if suboffset >= 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("Indirect dimensions not supported")
 * 
 */
    }
  }

  /* "View.MemoryView":688
 *     return have_slices or nslices, tuple(result)
 * 
 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):             # <<<<<<<<<<<<<<
 *     for suboffset in suboffsets[:ndim]:
 *         if suboffset >= 0:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("View.MemoryView.assert_direct_dimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":698
 * 
 * @cname('__pyx_memview_slice')
 * cdef memoryview memview_slice(memoryview memview, object indices):             # <<<<<<<<<<<<<<
 *     cdef int new_ndim = 0, suboffset_dim = -1, dim
 *     cdef bint negative_step
 */

static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *__pyx_v_memview, PyObject *__pyx_v_indices) {
  int __pyx_v_new_ndim;
  int __pyx_v_suboffset_dim;
  int __pyx_v_dim;
  __Pyx_memviewslice __pyx_v_src;
  __Pyx_memviewslice __pyx_v_dst;
  __Pyx_memviewslice *__pyx_v_p_src;
  struct __pyx_memoryviewslice_obj *__pyx_v_memviewsliceobj = 0;
  __Pyx_memviewslice *__pyx_v_p_dst;
  int *__pyx_v_p_suboffset_dim;
  Py_ssize_t __pyx_v_start;
  Py_ssize_t __pyx_v_stop;
  Py_ssize_t __pyx_v_step;
  int __pyx_v_have_start;
  int __pyx_v_have_stop;
  int __pyx_v_have_step;
  PyObject *__pyx_v_index = NULL;
  struct __pyx_memoryview_obj *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  struct __pyx_memoryview_obj *__pyx_t_4;
  char *__pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  Py_ssize_t __pyx_t_10;
  int __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  __Pyx_RefNannySetupContext("memview_slice", 0);

  /* "View.MemoryView":699
 * @cname('__pyx_memview_slice')
 * cdef memoryview memview_slice(memoryview memview, object indices):
 *     cdef int new_ndim = 0, suboffset_dim = -1, dim             # <<<<<<<<<<<<<<
 *     cdef bint negative_step
 *     cdef __Pyx_memviewslice src, dst
 */
  __pyx_v_new_ndim = 0;
  __pyx_v_suboffset_dim = -1;

  /* "View.MemoryView":706
 * 
 * 
 *     memset(&dst, 0, sizeof(dst))             # <<<<<<<<<<<<<<
 * 
 *     cdef _memoryviewslice memviewsliceobj
 */
  memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst)));

  /* "View.MemoryView":710
 *     cdef _memoryviewslice memviewsliceobj
 * 
 *     assert memview.view.ndim > 0             # <<<<<<<<<<<<<<
 * 
 *     if isinstance(memview, _memoryviewslice):
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_v_memview->view.ndim > 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(4, 710, __pyx_L1_error)
    }
  }
  #endif

  /* "View.MemoryView":712
 *     assert memview.view.ndim > 0
 * 
 *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
 *         memviewsliceobj = memview
 *         p_src = &memviewsliceobj.from_slice
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":713
 * 
 *     if isinstance(memview, _memoryviewslice):
 *         memviewsliceobj = memview             # <<<<<<<<<<<<<<
 *         p_src = &memviewsliceobj.from_slice
 *     else:
 */
    if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(4, 713, __pyx_L1_error)
    __pyx_t_3 = ((PyObject *)__pyx_v_memview);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "View.MemoryView":714
 *     if isinstance(memview, _memoryviewslice):
 *         memviewsliceobj = memview
 *         p_src = &memviewsliceobj.from_slice             # <<<<<<<<<<<<<<
 *     else:
 *         slice_copy(memview, &src)
 */
    __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice);

    /* "View.MemoryView":712
 *     assert memview.view.ndim > 0
 * 
 *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
 *         memviewsliceobj = memview
 *         p_src = &memviewsliceobj.from_slice
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":716
 *         p_src = &memviewsliceobj.from_slice
 *     else:
 *         slice_copy(memview, &src)             # <<<<<<<<<<<<<<
 *         p_src = &src
 * 
 */
  /*else*/ {
    __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src));

    /* "View.MemoryView":717
 *     else:
 *         slice_copy(memview, &src)
 *         p_src = &src             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_v_p_src = (&__pyx_v_src);
  }
  __pyx_L3:;

  /* "View.MemoryView":723
 * 
 * 
 *     dst.memview = p_src.memview             # <<<<<<<<<<<<<<
 *     dst.data = p_src.data
 * 
 */
  __pyx_t_4 = __pyx_v_p_src->memview;
  __pyx_v_dst.memview = __pyx_t_4;

  /* "View.MemoryView":724
 * 
 *     dst.memview = p_src.memview
 *     dst.data = p_src.data             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = __pyx_v_p_src->data;
  __pyx_v_dst.data = __pyx_t_5;

  /* "View.MemoryView":729
 * 
 * 
 *     cdef __Pyx_memviewslice *p_dst = &dst             # <<<<<<<<<<<<<<
 *     cdef int *p_suboffset_dim = &suboffset_dim
 *     cdef Py_ssize_t start, stop, step
 */
  __pyx_v_p_dst = (&__pyx_v_dst);

  /* "View.MemoryView":730
 * 
 *     cdef __Pyx_memviewslice *p_dst = &dst
 *     cdef int *p_suboffset_dim = &suboffset_dim             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t start, stop, step
 *     cdef bint have_start, have_stop, have_step
 */
  __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim);

  /* "View.MemoryView":734
 *     cdef bint have_start, have_stop, have_step
 * 
 *     for dim, index in enumerate(indices):             # <<<<<<<<<<<<<<
 *         if PyIndex_Check(index):
 *             slice_memviewslice(
 */
  __pyx_t_6 = 0;
  if (likely(PyList_CheckExact(__pyx_v_indices)) || PyTuple_CheckExact(__pyx_v_indices)) {
    __pyx_t_3 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 734, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 734, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(4, 734, __pyx_L1_error)
        #else
        __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 734, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(4, 734, __pyx_L1_error)
        #else
        __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 734, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        #endif
      }
    } else {
      __pyx_t_9 = __pyx_t_8(__pyx_t_3);
      if (unlikely(!__pyx_t_9)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 734, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_9);
    }
    __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_9);
    __pyx_t_9 = 0;
    __pyx_v_dim = __pyx_t_6;
    __pyx_t_6 = (__pyx_t_6 + 1);

    /* "View.MemoryView":735
 * 
 *     for dim, index in enumerate(indices):
 *         if PyIndex_Check(index):             # <<<<<<<<<<<<<<
 *             slice_memviewslice(
 *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
 */
    __pyx_t_2 = (PyIndex_Check(__pyx_v_index) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":739
 *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
 *                 dim, new_ndim, p_suboffset_dim,
 *                 index, 0, 0, # start, stop, step             # <<<<<<<<<<<<<<
 *                 0, 0, 0, # have_{start,stop,step}
 *                 False)
 */
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 739, __pyx_L1_error)

      /* "View.MemoryView":736
 *     for dim, index in enumerate(indices):
 *         if PyIndex_Check(index):
 *             slice_memviewslice(             # <<<<<<<<<<<<<<
 *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
 *                 dim, new_ndim, p_suboffset_dim,
 */
      __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(4, 736, __pyx_L1_error)

      /* "View.MemoryView":735
 * 
 *     for dim, index in enumerate(indices):
 *         if PyIndex_Check(index):             # <<<<<<<<<<<<<<
 *             slice_memviewslice(
 *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
 */
      goto __pyx_L6;
    }

    /* "View.MemoryView":742
 *                 0, 0, 0, # have_{start,stop,step}
 *                 False)
 *         elif index is None:             # <<<<<<<<<<<<<<
 *             p_dst.shape[new_ndim] = 1
 *             p_dst.strides[new_ndim] = 0
 */
    __pyx_t_2 = (__pyx_v_index == Py_None);
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":743
 *                 False)
 *         elif index is None:
 *             p_dst.shape[new_ndim] = 1             # <<<<<<<<<<<<<<
 *             p_dst.strides[new_ndim] = 0
 *             p_dst.suboffsets[new_ndim] = -1
 */
      (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1;

      /* "View.MemoryView":744
 *         elif index is None:
 *             p_dst.shape[new_ndim] = 1
 *             p_dst.strides[new_ndim] = 0             # <<<<<<<<<<<<<<
 *             p_dst.suboffsets[new_ndim] = -1
 *             new_ndim += 1
 */
      (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0;

      /* "View.MemoryView":745
 *             p_dst.shape[new_ndim] = 1
 *             p_dst.strides[new_ndim] = 0
 *             p_dst.suboffsets[new_ndim] = -1             # <<<<<<<<<<<<<<
 *             new_ndim += 1
 *         else:
 */
      (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L;

      /* "View.MemoryView":746
 *             p_dst.strides[new_ndim] = 0
 *             p_dst.suboffsets[new_ndim] = -1
 *             new_ndim += 1             # <<<<<<<<<<<<<<
 *         else:
 *             start = index.start or 0
 */
      __pyx_v_new_ndim = (__pyx_v_new_ndim + 1);

      /* "View.MemoryView":742
 *                 0, 0, 0, # have_{start,stop,step}
 *                 False)
 *         elif index is None:             # <<<<<<<<<<<<<<
 *             p_dst.shape[new_ndim] = 1
 *             p_dst.strides[new_ndim] = 0
 */
      goto __pyx_L6;
    }

    /* "View.MemoryView":748
 *             new_ndim += 1
 *         else:
 *             start = index.start or 0             # <<<<<<<<<<<<<<
 *             stop = index.stop or 0
 *             step = index.step or 0
 */
    /*else*/ {
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 748, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(4, 748, __pyx_L1_error)
      if (!__pyx_t_1) {
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      } else {
        __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 748, __pyx_L1_error)
        __pyx_t_10 = __pyx_t_12;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_10 = 0;
      __pyx_L7_bool_binop_done:;
      __pyx_v_start = __pyx_t_10;

      /* "View.MemoryView":749
 *         else:
 *             start = index.start or 0
 *             stop = index.stop or 0             # <<<<<<<<<<<<<<
 *             step = index.step or 0
 * 
 */
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 749, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(4, 749, __pyx_L1_error)
      if (!__pyx_t_1) {
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      } else {
        __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 749, __pyx_L1_error)
        __pyx_t_10 = __pyx_t_12;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L9_bool_binop_done;
      }
      __pyx_t_10 = 0;
      __pyx_L9_bool_binop_done:;
      __pyx_v_stop = __pyx_t_10;

      /* "View.MemoryView":750
 *             start = index.start or 0
 *             stop = index.stop or 0
 *             step = index.step or 0             # <<<<<<<<<<<<<<
 * 
 *             have_start = index.start is not None
 */
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 750, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(4, 750, __pyx_L1_error)
      if (!__pyx_t_1) {
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      } else {
        __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 750, __pyx_L1_error)
        __pyx_t_10 = __pyx_t_12;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L11_bool_binop_done;
      }
      __pyx_t_10 = 0;
      __pyx_L11_bool_binop_done:;
      __pyx_v_step = __pyx_t_10;

      /* "View.MemoryView":752
 *             step = index.step or 0
 * 
 *             have_start = index.start is not None             # <<<<<<<<<<<<<<
 *             have_stop = index.stop is not None
 *             have_step = index.step is not None
 */
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 752, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_1 = (__pyx_t_9 != Py_None);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_v_have_start = __pyx_t_1;

      /* "View.MemoryView":753
 * 
 *             have_start = index.start is not None
 *             have_stop = index.stop is not None             # <<<<<<<<<<<<<<
 *             have_step = index.step is not None
 * 
 */
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 753, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_1 = (__pyx_t_9 != Py_None);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_v_have_stop = __pyx_t_1;

      /* "View.MemoryView":754
 *             have_start = index.start is not None
 *             have_stop = index.stop is not None
 *             have_step = index.step is not None             # <<<<<<<<<<<<<<
 * 
 *             slice_memviewslice(
 */
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 754, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_1 = (__pyx_t_9 != Py_None);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_v_have_step = __pyx_t_1;

      /* "View.MemoryView":756
 *             have_step = index.step is not None
 * 
 *             slice_memviewslice(             # <<<<<<<<<<<<<<
 *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
 *                 dim, new_ndim, p_suboffset_dim,
 */
      __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(4, 756, __pyx_L1_error)

      /* "View.MemoryView":762
 *                 have_start, have_stop, have_step,
 *                 True)
 *             new_ndim += 1             # <<<<<<<<<<<<<<
 * 
 *     if isinstance(memview, _memoryviewslice):
 */
      __pyx_v_new_ndim = (__pyx_v_new_ndim + 1);
    }
    __pyx_L6:;

    /* "View.MemoryView":734
 *     cdef bint have_start, have_stop, have_step
 * 
 *     for dim, index in enumerate(indices):             # <<<<<<<<<<<<<<
 *         if PyIndex_Check(index):
 *             slice_memviewslice(
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "View.MemoryView":764
 *             new_ndim += 1
 * 
 *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
 *         return memoryview_fromslice(dst, new_ndim,
 *                                     memviewsliceobj.to_object_func,
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":765
 * 
 *     if isinstance(memview, _memoryviewslice):
 *         return memoryview_fromslice(dst, new_ndim,             # <<<<<<<<<<<<<<
 *                                     memviewsliceobj.to_object_func,
 *                                     memviewsliceobj.to_dtype_func,
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));

    /* "View.MemoryView":766
 *     if isinstance(memview, _memoryviewslice):
 *         return memoryview_fromslice(dst, new_ndim,
 *                                     memviewsliceobj.to_object_func,             # <<<<<<<<<<<<<<
 *                                     memviewsliceobj.to_dtype_func,
 *                                     memview.dtype_is_object)
 */
    if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(4, 766, __pyx_L1_error) }

    /* "View.MemoryView":767
 *         return memoryview_fromslice(dst, new_ndim,
 *                                     memviewsliceobj.to_object_func,
 *                                     memviewsliceobj.to_dtype_func,             # <<<<<<<<<<<<<<
 *                                     memview.dtype_is_object)
 *     else:
 */
    if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(4, 767, __pyx_L1_error) }

    /* "View.MemoryView":765
 * 
 *     if isinstance(memview, _memoryviewslice):
 *         return memoryview_fromslice(dst, new_ndim,             # <<<<<<<<<<<<<<
 *                                     memviewsliceobj.to_object_func,
 *                                     memviewsliceobj.to_dtype_func,
 */
    __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(4, 765, __pyx_L1_error)
    __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "View.MemoryView":764
 *             new_ndim += 1
 * 
 *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
 *         return memoryview_fromslice(dst, new_ndim,
 *                                     memviewsliceobj.to_object_func,
 */
  }

  /* "View.MemoryView":770
 *                                     memview.dtype_is_object)
 *     else:
 *         return memoryview_fromslice(dst, new_ndim, NULL, NULL,             # <<<<<<<<<<<<<<
 *                                     memview.dtype_is_object)
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(((PyObject *)__pyx_r));

    /* "View.MemoryView":771
 *     else:
 *         return memoryview_fromslice(dst, new_ndim, NULL, NULL,
 *                                     memview.dtype_is_object)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "View.MemoryView":770
 *                                     memview.dtype_is_object)
 *     else:
 *         return memoryview_fromslice(dst, new_ndim, NULL, NULL,             # <<<<<<<<<<<<<<
 *                                     memview.dtype_is_object)
 * 
 */
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(4, 770, __pyx_L1_error)
    __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "View.MemoryView":698
 * 
 * @cname('__pyx_memview_slice')
 * cdef memoryview memview_slice(memoryview memview, object indices):             # <<<<<<<<<<<<<<
 *     cdef int new_ndim = 0, suboffset_dim = -1, dim
 *     cdef bint negative_step
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("View.MemoryView.memview_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_memviewsliceobj);
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":795
 * 
 * @cname('__pyx_memoryview_slice_memviewslice')
 * cdef int slice_memviewslice(             # <<<<<<<<<<<<<<
 *         __Pyx_memviewslice *dst,
 *         Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset,
 */

static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, Py_ssize_t __pyx_v_shape, Py_ssize_t __pyx_v_stride, Py_ssize_t __pyx_v_suboffset, int __pyx_v_dim, int __pyx_v_new_ndim, int *__pyx_v_suboffset_dim, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_stop, Py_ssize_t __pyx_v_step, int __pyx_v_have_start, int __pyx_v_have_stop, int __pyx_v_have_step, int __pyx_v_is_slice) {
  Py_ssize_t __pyx_v_new_shape;
  int __pyx_v_negative_step;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "View.MemoryView":815
 *     cdef bint negative_step
 * 
 *     if not is_slice:             # <<<<<<<<<<<<<<
 * 
 *         if start < 0:
 */
  __pyx_t_1 = ((!(__pyx_v_is_slice != 0)) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":817
 *     if not is_slice:
 * 
 *         if start < 0:             # <<<<<<<<<<<<<<
 *             start += shape
 *         if not 0 <= start < shape:
 */
    __pyx_t_1 = ((__pyx_v_start < 0) != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":818
 * 
 *         if start < 0:
 *             start += shape             # <<<<<<<<<<<<<<
 *         if not 0 <= start < shape:
 *             _err_dim(IndexError, "Index out of bounds (axis %d)", dim)
 */
      __pyx_v_start = (__pyx_v_start + __pyx_v_shape);

      /* "View.MemoryView":817
 *     if not is_slice:
 * 
 *         if start < 0:             # <<<<<<<<<<<<<<
 *             start += shape
 *         if not 0 <= start < shape:
 */
    }

    /* "View.MemoryView":819
 *         if start < 0:
 *             start += shape
 *         if not 0 <= start < shape:             # <<<<<<<<<<<<<<
 *             _err_dim(IndexError, "Index out of bounds (axis %d)", dim)
 *     else:
 */
    __pyx_t_1 = (0 <= __pyx_v_start);
    if (__pyx_t_1) {
      __pyx_t_1 = (__pyx_v_start < __pyx_v_shape);
    }
    __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":820
 *             start += shape
 *         if not 0 <= start < shape:
 *             _err_dim(IndexError, "Index out of bounds (axis %d)", dim)             # <<<<<<<<<<<<<<
 *     else:
 * 
 */
      __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"Index out of bounds (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(4, 820, __pyx_L1_error)

      /* "View.MemoryView":819
 *         if start < 0:
 *             start += shape
 *         if not 0 <= start < shape:             # <<<<<<<<<<<<<<
 *             _err_dim(IndexError, "Index out of bounds (axis %d)", dim)
 *     else:
 */
    }

    /* "View.MemoryView":815
 *     cdef bint negative_step
 * 
 *     if not is_slice:             # <<<<<<<<<<<<<<
 * 
 *         if start < 0:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":823
 *     else:
 * 
 *         negative_step = have_step != 0 and step < 0             # <<<<<<<<<<<<<<
 * 
 *         if have_step and step == 0:
 */
  /*else*/ {
    __pyx_t_1 = ((__pyx_v_have_step != 0) != 0);
    if (__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_1 = ((__pyx_v_step < 0) != 0);
    __pyx_t_2 = __pyx_t_1;
    __pyx_L6_bool_binop_done:;
    __pyx_v_negative_step = __pyx_t_2;

    /* "View.MemoryView":825
 *         negative_step = have_step != 0 and step < 0
 * 
 *         if have_step and step == 0:             # <<<<<<<<<<<<<<
 *             _err_dim(ValueError, "Step may not be zero (axis %d)", dim)
 * 
 */
    __pyx_t_1 = (__pyx_v_have_step != 0);
    if (__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_1 = ((__pyx_v_step == 0) != 0);
    __pyx_t_2 = __pyx_t_1;
    __pyx_L9_bool_binop_done:;
    if (__pyx_t_2) {

      /* "View.MemoryView":826
 * 
 *         if have_step and step == 0:
 *             _err_dim(ValueError, "Step may not be zero (axis %d)", dim)             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Step may not be zero (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(4, 826, __pyx_L1_error)

      /* "View.MemoryView":825
 *         negative_step = have_step != 0 and step < 0
 * 
 *         if have_step and step == 0:             # <<<<<<<<<<<<<<
 *             _err_dim(ValueError, "Step may not be zero (axis %d)", dim)
 * 
 */
    }

    /* "View.MemoryView":829
 * 
 * 
 *         if have_start:             # <<<<<<<<<<<<<<
 *             if start < 0:
 *                 start += shape
 */
    __pyx_t_2 = (__pyx_v_have_start != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":830
 * 
 *         if have_start:
 *             if start < 0:             # <<<<<<<<<<<<<<
 *                 start += shape
 *                 if start < 0:
 */
      __pyx_t_2 = ((__pyx_v_start < 0) != 0);
      if (__pyx_t_2) {

        /* "View.MemoryView":831
 *         if have_start:
 *             if start < 0:
 *                 start += shape             # <<<<<<<<<<<<<<
 *                 if start < 0:
 *                     start = 0
 */
        __pyx_v_start = (__pyx_v_start + __pyx_v_shape);

        /* "View.MemoryView":832
 *             if start < 0:
 *                 start += shape
 *                 if start < 0:             # <<<<<<<<<<<<<<
 *                     start = 0
 *             elif start >= shape:
 */
        __pyx_t_2 = ((__pyx_v_start < 0) != 0);
        if (__pyx_t_2) {

          /* "View.MemoryView":833
 *                 start += shape
 *                 if start < 0:
 *                     start = 0             # <<<<<<<<<<<<<<
 *             elif start >= shape:
 *                 if negative_step:
 */
          __pyx_v_start = 0;

          /* "View.MemoryView":832
 *             if start < 0:
 *                 start += shape
 *                 if start < 0:             # <<<<<<<<<<<<<<
 *                     start = 0
 *             elif start >= shape:
 */
        }

        /* "View.MemoryView":830
 * 
 *         if have_start:
 *             if start < 0:             # <<<<<<<<<<<<<<
 *                 start += shape
 *                 if start < 0:
 */
        goto __pyx_L12;
      }

      /* "View.MemoryView":834
 *                 if start < 0:
 *                     start = 0
 *             elif start >= shape:             # <<<<<<<<<<<<<<
 *                 if negative_step:
 *                     start = shape - 1
 */
      __pyx_t_2 = ((__pyx_v_start >= __pyx_v_shape) != 0);
      if (__pyx_t_2) {

        /* "View.MemoryView":835
 *                     start = 0
 *             elif start >= shape:
 *                 if negative_step:             # <<<<<<<<<<<<<<
 *                     start = shape - 1
 *                 else:
 */
        __pyx_t_2 = (__pyx_v_negative_step != 0);
        if (__pyx_t_2) {

          /* "View.MemoryView":836
 *             elif start >= shape:
 *                 if negative_step:
 *                     start = shape - 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     start = shape
 */
          __pyx_v_start = (__pyx_v_shape - 1);

          /* "View.MemoryView":835
 *                     start = 0
 *             elif start >= shape:
 *                 if negative_step:             # <<<<<<<<<<<<<<
 *                     start = shape - 1
 *                 else:
 */
          goto __pyx_L14;
        }

        /* "View.MemoryView":838
 *                     start = shape - 1
 *                 else:
 *                     start = shape             # <<<<<<<<<<<<<<
 *         else:
 *             if negative_step:
 */
        /*else*/ {
          __pyx_v_start = __pyx_v_shape;
        }
        __pyx_L14:;

        /* "View.MemoryView":834
 *                 if start < 0:
 *                     start = 0
 *             elif start >= shape:             # <<<<<<<<<<<<<<
 *                 if negative_step:
 *                     start = shape - 1
 */
      }
      __pyx_L12:;

      /* "View.MemoryView":829
 * 
 * 
 *         if have_start:             # <<<<<<<<<<<<<<
 *             if start < 0:
 *                 start += shape
 */
      goto __pyx_L11;
    }

    /* "View.MemoryView":840
 *                     start = shape
 *         else:
 *             if negative_step:             # <<<<<<<<<<<<<<
 *                 start = shape - 1
 *             else:
 */
    /*else*/ {
      __pyx_t_2 = (__pyx_v_negative_step != 0);
      if (__pyx_t_2) {

        /* "View.MemoryView":841
 *         else:
 *             if negative_step:
 *                 start = shape - 1             # <<<<<<<<<<<<<<
 *             else:
 *                 start = 0
 */
        __pyx_v_start = (__pyx_v_shape - 1);

        /* "View.MemoryView":840
 *                     start = shape
 *         else:
 *             if negative_step:             # <<<<<<<<<<<<<<
 *                 start = shape - 1
 *             else:
 */
        goto __pyx_L15;
      }

      /* "View.MemoryView":843
 *                 start = shape - 1
 *             else:
 *                 start = 0             # <<<<<<<<<<<<<<
 * 
 *         if have_stop:
 */
      /*else*/ {
        __pyx_v_start = 0;
      }
      __pyx_L15:;
    }
    __pyx_L11:;

    /* "View.MemoryView":845
 *                 start = 0
 * 
 *         if have_stop:             # <<<<<<<<<<<<<<
 *             if stop < 0:
 *                 stop += shape
 */
    __pyx_t_2 = (__pyx_v_have_stop != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":846
 * 
 *         if have_stop:
 *             if stop < 0:             # <<<<<<<<<<<<<<
 *                 stop += shape
 *                 if stop < 0:
 */
      __pyx_t_2 = ((__pyx_v_stop < 0) != 0);
      if (__pyx_t_2) {

        /* "View.MemoryView":847
 *         if have_stop:
 *             if stop < 0:
 *                 stop += shape             # <<<<<<<<<<<<<<
 *                 if stop < 0:
 *                     stop = 0
 */
        __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape);

        /* "View.MemoryView":848
 *             if stop < 0:
 *                 stop += shape
 *                 if stop < 0:             # <<<<<<<<<<<<<<
 *                     stop = 0
 *             elif stop > shape:
 */
        __pyx_t_2 = ((__pyx_v_stop < 0) != 0);
        if (__pyx_t_2) {

          /* "View.MemoryView":849
 *                 stop += shape
 *                 if stop < 0:
 *                     stop = 0             # <<<<<<<<<<<<<<
 *             elif stop > shape:
 *                 stop = shape
 */
          __pyx_v_stop = 0;

          /* "View.MemoryView":848
 *             if stop < 0:
 *                 stop += shape
 *                 if stop < 0:             # <<<<<<<<<<<<<<
 *                     stop = 0
 *             elif stop > shape:
 */
        }

        /* "View.MemoryView":846
 * 
 *         if have_stop:
 *             if stop < 0:             # <<<<<<<<<<<<<<
 *                 stop += shape
 *                 if stop < 0:
 */
        goto __pyx_L17;
      }

      /* "View.MemoryView":850
 *                 if stop < 0:
 *                     stop = 0
 *             elif stop > shape:             # <<<<<<<<<<<<<<
 *                 stop = shape
 *         else:
 */
      __pyx_t_2 = ((__pyx_v_stop > __pyx_v_shape) != 0);
      if (__pyx_t_2) {

        /* "View.MemoryView":851
 *                     stop = 0
 *             elif stop > shape:
 *                 stop = shape             # <<<<<<<<<<<<<<
 *         else:
 *             if negative_step:
 */
        __pyx_v_stop = __pyx_v_shape;

        /* "View.MemoryView":850
 *                 if stop < 0:
 *                     stop = 0
 *             elif stop > shape:             # <<<<<<<<<<<<<<
 *                 stop = shape
 *         else:
 */
      }
      __pyx_L17:;

      /* "View.MemoryView":845
 *                 start = 0
 * 
 *         if have_stop:             # <<<<<<<<<<<<<<
 *             if stop < 0:
 *                 stop += shape
 */
      goto __pyx_L16;
    }

    /* "View.MemoryView":853
 *                 stop = shape
 *         else:
 *             if negative_step:             # <<<<<<<<<<<<<<
 *                 stop = -1
 *             else:
 */
    /*else*/ {
      __pyx_t_2 = (__pyx_v_negative_step != 0);
      if (__pyx_t_2) {

        /* "View.MemoryView":854
 *         else:
 *             if negative_step:
 *                 stop = -1             # <<<<<<<<<<<<<<
 *             else:
 *                 stop = shape
 */
        __pyx_v_stop = -1L;

        /* "View.MemoryView":853
 *                 stop = shape
 *         else:
 *             if negative_step:             # <<<<<<<<<<<<<<
 *                 stop = -1
 *             else:
 */
        goto __pyx_L19;
      }

      /* "View.MemoryView":856
 *                 stop = -1
 *             else:
 *                 stop = shape             # <<<<<<<<<<<<<<
 * 
 *         if not have_step:
 */
      /*else*/ {
        __pyx_v_stop = __pyx_v_shape;
      }
      __pyx_L19:;
    }
    __pyx_L16:;

    /* "View.MemoryView":858
 *                 stop = shape
 * 
 *         if not have_step:             # <<<<<<<<<<<<<<
 *             step = 1
 * 
 */
    __pyx_t_2 = ((!(__pyx_v_have_step != 0)) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":859
 * 
 *         if not have_step:
 *             step = 1             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_v_step = 1;

      /* "View.MemoryView":858
 *                 stop = shape
 * 
 *         if not have_step:             # <<<<<<<<<<<<<<
 *             step = 1
 * 
 */
    }

    /* "View.MemoryView":863
 * 
 *         with cython.cdivision(True):
 *             new_shape = (stop - start) // step             # <<<<<<<<<<<<<<
 * 
 *             if (stop - start) - step * new_shape:
 */
    __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step);

    /* "View.MemoryView":865
 *             new_shape = (stop - start) // step
 * 
 *             if (stop - start) - step * new_shape:             # <<<<<<<<<<<<<<
 *                 new_shape += 1
 * 
 */
    __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":866
 * 
 *             if (stop - start) - step * new_shape:
 *                 new_shape += 1             # <<<<<<<<<<<<<<
 * 
 *         if new_shape < 0:
 */
      __pyx_v_new_shape = (__pyx_v_new_shape + 1);

      /* "View.MemoryView":865
 *             new_shape = (stop - start) // step
 * 
 *             if (stop - start) - step * new_shape:             # <<<<<<<<<<<<<<
 *                 new_shape += 1
 * 
 */
    }

    /* "View.MemoryView":868
 *                 new_shape += 1
 * 
 *         if new_shape < 0:             # <<<<<<<<<<<<<<
 *             new_shape = 0
 * 
 */
    __pyx_t_2 = ((__pyx_v_new_shape < 0) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":869
 * 
 *         if new_shape < 0:
 *             new_shape = 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_v_new_shape = 0;

      /* "View.MemoryView":868
 *                 new_shape += 1
 * 
 *         if new_shape < 0:             # <<<<<<<<<<<<<<
 *             new_shape = 0
 * 
 */
    }

    /* "View.MemoryView":872
 * 
 * 
 *         dst.strides[new_ndim] = stride * step             # <<<<<<<<<<<<<<
 *         dst.shape[new_ndim] = new_shape
 *         dst.suboffsets[new_ndim] = suboffset
 */
    (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step);

    /* "View.MemoryView":873
 * 
 *         dst.strides[new_ndim] = stride * step
 *         dst.shape[new_ndim] = new_shape             # <<<<<<<<<<<<<<
 *         dst.suboffsets[new_ndim] = suboffset
 * 
 */
    (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape;

    /* "View.MemoryView":874
 *         dst.strides[new_ndim] = stride * step
 *         dst.shape[new_ndim] = new_shape
 *         dst.suboffsets[new_ndim] = suboffset             # <<<<<<<<<<<<<<
 * 
 * 
 */
    (__pyx_v_dst->suboffsets[__pyx_v_new_ndim]) = __pyx_v_suboffset;
  }
  __pyx_L3:;

  /* "View.MemoryView":877
 * 
 * 
 *     if suboffset_dim[0] < 0:             # <<<<<<<<<<<<<<
 *         dst.data += start * stride
 *     else:
 */
  __pyx_t_2 = (((__pyx_v_suboffset_dim[0]) < 0) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":878
 * 
 *     if suboffset_dim[0] < 0:
 *         dst.data += start * stride             # <<<<<<<<<<<<<<
 *     else:
 *         dst.suboffsets[suboffset_dim[0]] += start * stride
 */
    __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride));

    /* "View.MemoryView":877
 * 
 * 
 *     if suboffset_dim[0] < 0:             # <<<<<<<<<<<<<<
 *         dst.data += start * stride
 *     else:
 */
    goto __pyx_L23;
  }

  /* "View.MemoryView":880
 *         dst.data += start * stride
 *     else:
 *         dst.suboffsets[suboffset_dim[0]] += start * stride             # <<<<<<<<<<<<<<
 * 
 *     if suboffset >= 0:
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_suboffset_dim[0]);
    (__pyx_v_dst->suboffsets[__pyx_t_3]) = ((__pyx_v_dst->suboffsets[__pyx_t_3]) + (__pyx_v_start * __pyx_v_stride));
  }
  __pyx_L23:;

  /* "View.MemoryView":882
 *         dst.suboffsets[suboffset_dim[0]] += start * stride
 * 
 *     if suboffset >= 0:             # <<<<<<<<<<<<<<
 *         if not is_slice:
 *             if new_ndim == 0:
 */
  __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":883
 * 
 *     if suboffset >= 0:
 *         if not is_slice:             # <<<<<<<<<<<<<<
 *             if new_ndim == 0:
 *                 dst.data = (<char **> dst.data)[0] + suboffset
 */
    __pyx_t_2 = ((!(__pyx_v_is_slice != 0)) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":884
 *     if suboffset >= 0:
 *         if not is_slice:
 *             if new_ndim == 0:             # <<<<<<<<<<<<<<
 *                 dst.data = (<char **> dst.data)[0] + suboffset
 *             else:
 */
      __pyx_t_2 = ((__pyx_v_new_ndim == 0) != 0);
      if (__pyx_t_2) {

        /* "View.MemoryView":885
 *         if not is_slice:
 *             if new_ndim == 0:
 *                 dst.data = (<char **> dst.data)[0] + suboffset             # <<<<<<<<<<<<<<
 *             else:
 *                 _err_dim(IndexError, "All dimensions preceding dimension %d "
 */
        __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset);

        /* "View.MemoryView":884
 *     if suboffset >= 0:
 *         if not is_slice:
 *             if new_ndim == 0:             # <<<<<<<<<<<<<<
 *                 dst.data = (<char **> dst.data)[0] + suboffset
 *             else:
 */
        goto __pyx_L26;
      }

      /* "View.MemoryView":887
 *                 dst.data = (<char **> dst.data)[0] + suboffset
 *             else:
 *                 _err_dim(IndexError, "All dimensions preceding dimension %d "             # <<<<<<<<<<<<<<
 *                                      "must be indexed and not sliced", dim)
 *         else:
 */
      /*else*/ {

        /* "View.MemoryView":888
 *             else:
 *                 _err_dim(IndexError, "All dimensions preceding dimension %d "
 *                                      "must be indexed and not sliced", dim)             # <<<<<<<<<<<<<<
 *         else:
 *             suboffset_dim[0] = new_ndim
 */
        __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"All dimensions preceding dimension %d must be indexed and not sliced"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(4, 887, __pyx_L1_error)
      }
      __pyx_L26:;

      /* "View.MemoryView":883
 * 
 *     if suboffset >= 0:
 *         if not is_slice:             # <<<<<<<<<<<<<<
 *             if new_ndim == 0:
 *                 dst.data = (<char **> dst.data)[0] + suboffset
 */
      goto __pyx_L25;
    }

    /* "View.MemoryView":890
 *                                      "must be indexed and not sliced", dim)
 *         else:
 *             suboffset_dim[0] = new_ndim             # <<<<<<<<<<<<<<
 * 
 *     return 0
 */
    /*else*/ {
      (__pyx_v_suboffset_dim[0]) = __pyx_v_new_ndim;
    }
    __pyx_L25:;

    /* "View.MemoryView":882
 *         dst.suboffsets[suboffset_dim[0]] += start * stride
 * 
 *     if suboffset >= 0:             # <<<<<<<<<<<<<<
 *         if not is_slice:
 *             if new_ndim == 0:
 */
  }

  /* "View.MemoryView":892
 *             suboffset_dim[0] = new_ndim
 * 
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "View.MemoryView":795
 * 
 * @cname('__pyx_memoryview_slice_memviewslice')
 * cdef int slice_memviewslice(             # <<<<<<<<<<<<<<
 *         __Pyx_memviewslice *dst,
 *         Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset,
 */

  /* function exit code */
  __pyx_L1_error:;
  {
    #ifdef WITH_THREAD
    PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
    #endif
    __Pyx_AddTraceback("View.MemoryView.slice_memviewslice", __pyx_clineno, __pyx_lineno, __pyx_filename);
    #ifdef WITH_THREAD
    __Pyx_PyGILState_Release(__pyx_gilstate_save);
    #endif
  }
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "View.MemoryView":898
 * 
 * @cname('__pyx_pybuffer_index')
 * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index,             # <<<<<<<<<<<<<<
 *                           Py_ssize_t dim) except NULL:
 *     cdef Py_ssize_t shape, stride, suboffset = -1
 */

static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, Py_ssize_t __pyx_v_index, Py_ssize_t __pyx_v_dim) {
  Py_ssize_t __pyx_v_shape;
  Py_ssize_t __pyx_v_stride;
  Py_ssize_t __pyx_v_suboffset;
  Py_ssize_t __pyx_v_itemsize;
  char *__pyx_v_resultp;
  char *__pyx_r;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("pybuffer_index", 0);

  /* "View.MemoryView":900
 * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index,
 *                           Py_ssize_t dim) except NULL:
 *     cdef Py_ssize_t shape, stride, suboffset = -1             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t itemsize = view.itemsize
 *     cdef char *resultp
 */
  __pyx_v_suboffset = -1L;

  /* "View.MemoryView":901
 *                           Py_ssize_t dim) except NULL:
 *     cdef Py_ssize_t shape, stride, suboffset = -1
 *     cdef Py_ssize_t itemsize = view.itemsize             # <<<<<<<<<<<<<<
 *     cdef char *resultp
 * 
 */
  __pyx_t_1 = __pyx_v_view->itemsize;
  __pyx_v_itemsize = __pyx_t_1;

  /* "View.MemoryView":904
 *     cdef char *resultp
 * 
 *     if view.ndim == 0:             # <<<<<<<<<<<<<<
 *         shape = view.len / itemsize
 *         stride = itemsize
 */
  __pyx_t_2 = ((__pyx_v_view->ndim == 0) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":905
 * 
 *     if view.ndim == 0:
 *         shape = view.len / itemsize             # <<<<<<<<<<<<<<
 *         stride = itemsize
 *     else:
 */
    if (unlikely(__pyx_v_itemsize == 0)) {
      PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
      __PYX_ERR(4, 905, __pyx_L1_error)
    }
    else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1)  && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) {
      PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
      __PYX_ERR(4, 905, __pyx_L1_error)
    }
    __pyx_v_shape = __Pyx_div_Py_ssize_t(__pyx_v_view->len, __pyx_v_itemsize);

    /* "View.MemoryView":906
 *     if view.ndim == 0:
 *         shape = view.len / itemsize
 *         stride = itemsize             # <<<<<<<<<<<<<<
 *     else:
 *         shape = view.shape[dim]
 */
    __pyx_v_stride = __pyx_v_itemsize;

    /* "View.MemoryView":904
 *     cdef char *resultp
 * 
 *     if view.ndim == 0:             # <<<<<<<<<<<<<<
 *         shape = view.len / itemsize
 *         stride = itemsize
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":908
 *         stride = itemsize
 *     else:
 *         shape = view.shape[dim]             # <<<<<<<<<<<<<<
 *         stride = view.strides[dim]
 *         if view.suboffsets != NULL:
 */
  /*else*/ {
    __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]);

    /* "View.MemoryView":909
 *     else:
 *         shape = view.shape[dim]
 *         stride = view.strides[dim]             # <<<<<<<<<<<<<<
 *         if view.suboffsets != NULL:
 *             suboffset = view.suboffsets[dim]
 */
    __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]);

    /* "View.MemoryView":910
 *         shape = view.shape[dim]
 *         stride = view.strides[dim]
 *         if view.suboffsets != NULL:             # <<<<<<<<<<<<<<
 *             suboffset = view.suboffsets[dim]
 * 
 */
    __pyx_t_2 = ((__pyx_v_view->suboffsets != NULL) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":911
 *         stride = view.strides[dim]
 *         if view.suboffsets != NULL:
 *             suboffset = view.suboffsets[dim]             # <<<<<<<<<<<<<<
 * 
 *     if index < 0:
 */
      __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]);

      /* "View.MemoryView":910
 *         shape = view.shape[dim]
 *         stride = view.strides[dim]
 *         if view.suboffsets != NULL:             # <<<<<<<<<<<<<<
 *             suboffset = view.suboffsets[dim]
 * 
 */
    }
  }
  __pyx_L3:;

  /* "View.MemoryView":913
 *             suboffset = view.suboffsets[dim]
 * 
 *     if index < 0:             # <<<<<<<<<<<<<<
 *         index += view.shape[dim]
 *         if index < 0:
 */
  __pyx_t_2 = ((__pyx_v_index < 0) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":914
 * 
 *     if index < 0:
 *         index += view.shape[dim]             # <<<<<<<<<<<<<<
 *         if index < 0:
 *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
 */
    __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim]));

    /* "View.MemoryView":915
 *     if index < 0:
 *         index += view.shape[dim]
 *         if index < 0:             # <<<<<<<<<<<<<<
 *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
 * 
 */
    __pyx_t_2 = ((__pyx_v_index < 0) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":916
 *         index += view.shape[dim]
 *         if index < 0:
 *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)             # <<<<<<<<<<<<<<
 * 
 *     if index >= shape:
 */
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 916, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 916, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 916, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 916, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(4, 916, __pyx_L1_error)

      /* "View.MemoryView":915
 *     if index < 0:
 *         index += view.shape[dim]
 *         if index < 0:             # <<<<<<<<<<<<<<
 *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
 * 
 */
    }

    /* "View.MemoryView":913
 *             suboffset = view.suboffsets[dim]
 * 
 *     if index < 0:             # <<<<<<<<<<<<<<
 *         index += view.shape[dim]
 *         if index < 0:
 */
  }

  /* "View.MemoryView":918
 *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
 * 
 *     if index >= shape:             # <<<<<<<<<<<<<<
 *         raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
 * 
 */
  __pyx_t_2 = ((__pyx_v_index >= __pyx_v_shape) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":919
 * 
 *     if index >= shape:
 *         raise IndexError("Out of bounds on buffer access (axis %d)" % dim)             # <<<<<<<<<<<<<<
 * 
 *     resultp = bufp + index * stride
 */
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(4, 919, __pyx_L1_error)

    /* "View.MemoryView":918
 *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
 * 
 *     if index >= shape:             # <<<<<<<<<<<<<<
 *         raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
 * 
 */
  }

  /* "View.MemoryView":921
 *         raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
 * 
 *     resultp = bufp + index * stride             # <<<<<<<<<<<<<<
 *     if suboffset >= 0:
 *         resultp = (<char **> resultp)[0] + suboffset
 */
  __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride));

  /* "View.MemoryView":922
 * 
 *     resultp = bufp + index * stride
 *     if suboffset >= 0:             # <<<<<<<<<<<<<<
 *         resultp = (<char **> resultp)[0] + suboffset
 * 
 */
  __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":923
 *     resultp = bufp + index * stride
 *     if suboffset >= 0:
 *         resultp = (<char **> resultp)[0] + suboffset             # <<<<<<<<<<<<<<
 * 
 *     return resultp
 */
    __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset);

    /* "View.MemoryView":922
 * 
 *     resultp = bufp + index * stride
 *     if suboffset >= 0:             # <<<<<<<<<<<<<<
 *         resultp = (<char **> resultp)[0] + suboffset
 * 
 */
  }

  /* "View.MemoryView":925
 *         resultp = (<char **> resultp)[0] + suboffset
 * 
 *     return resultp             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_resultp;
  goto __pyx_L0;

  /* "View.MemoryView":898
 * 
 * @cname('__pyx_pybuffer_index')
 * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index,             # <<<<<<<<<<<<<<
 *                           Py_ssize_t dim) except NULL:
 *     cdef Py_ssize_t shape, stride, suboffset = -1
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("View.MemoryView.pybuffer_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":931
 * 
 * @cname('__pyx_memslice_transpose')
 * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0:             # <<<<<<<<<<<<<<
 *     cdef int ndim = memslice.memview.view.ndim
 * 
 */

static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) {
  int __pyx_v_ndim;
  Py_ssize_t *__pyx_v_shape;
  Py_ssize_t *__pyx_v_strides;
  int __pyx_v_i;
  int __pyx_v_j;
  int __pyx_r;
  int __pyx_t_1;
  Py_ssize_t *__pyx_t_2;
  long __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;

  /* "View.MemoryView":932
 * @cname('__pyx_memslice_transpose')
 * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0:
 *     cdef int ndim = memslice.memview.view.ndim             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t *shape = memslice.shape
 */
  __pyx_t_1 = __pyx_v_memslice->memview->view.ndim;
  __pyx_v_ndim = __pyx_t_1;

  /* "View.MemoryView":934
 *     cdef int ndim = memslice.memview.view.ndim
 * 
 *     cdef Py_ssize_t *shape = memslice.shape             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t *strides = memslice.strides
 * 
 */
  __pyx_t_2 = __pyx_v_memslice->shape;
  __pyx_v_shape = __pyx_t_2;

  /* "View.MemoryView":935
 * 
 *     cdef Py_ssize_t *shape = memslice.shape
 *     cdef Py_ssize_t *strides = memslice.strides             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __pyx_v_memslice->strides;
  __pyx_v_strides = __pyx_t_2;

  /* "View.MemoryView":939
 * 
 *     cdef int i, j
 *     for i in range(ndim / 2):             # <<<<<<<<<<<<<<
 *         j = ndim - 1 - i
 *         strides[i], strides[j] = strides[j], strides[i]
 */
  __pyx_t_3 = __Pyx_div_long(__pyx_v_ndim, 2);
  for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_3; __pyx_t_1+=1) {
    __pyx_v_i = __pyx_t_1;

    /* "View.MemoryView":940
 *     cdef int i, j
 *     for i in range(ndim / 2):
 *         j = ndim - 1 - i             # <<<<<<<<<<<<<<
 *         strides[i], strides[j] = strides[j], strides[i]
 *         shape[i], shape[j] = shape[j], shape[i]
 */
    __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i);

    /* "View.MemoryView":941
 *     for i in range(ndim / 2):
 *         j = ndim - 1 - i
 *         strides[i], strides[j] = strides[j], strides[i]             # <<<<<<<<<<<<<<
 *         shape[i], shape[j] = shape[j], shape[i]
 * 
 */
    __pyx_t_4 = (__pyx_v_strides[__pyx_v_j]);
    __pyx_t_5 = (__pyx_v_strides[__pyx_v_i]);
    (__pyx_v_strides[__pyx_v_i]) = __pyx_t_4;
    (__pyx_v_strides[__pyx_v_j]) = __pyx_t_5;

    /* "View.MemoryView":942
 *         j = ndim - 1 - i
 *         strides[i], strides[j] = strides[j], strides[i]
 *         shape[i], shape[j] = shape[j], shape[i]             # <<<<<<<<<<<<<<
 * 
 *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:
 */
    __pyx_t_5 = (__pyx_v_shape[__pyx_v_j]);
    __pyx_t_4 = (__pyx_v_shape[__pyx_v_i]);
    (__pyx_v_shape[__pyx_v_i]) = __pyx_t_5;
    (__pyx_v_shape[__pyx_v_j]) = __pyx_t_4;

    /* "View.MemoryView":944
 *         shape[i], shape[j] = shape[j], shape[i]
 * 
 *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:             # <<<<<<<<<<<<<<
 *             _err(ValueError, "Cannot transpose memoryview with indirect dimensions")
 * 
 */
    __pyx_t_7 = (((__pyx_v_memslice->suboffsets[__pyx_v_i]) >= 0) != 0);
    if (!__pyx_t_7) {
    } else {
      __pyx_t_6 = __pyx_t_7;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_7 = (((__pyx_v_memslice->suboffsets[__pyx_v_j]) >= 0) != 0);
    __pyx_t_6 = __pyx_t_7;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_6) {

      /* "View.MemoryView":945
 * 
 *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:
 *             _err(ValueError, "Cannot transpose memoryview with indirect dimensions")             # <<<<<<<<<<<<<<
 * 
 *     return 1
 */
      __pyx_t_8 = __pyx_memoryview_err(__pyx_builtin_ValueError, ((char *)"Cannot transpose memoryview with indirect dimensions")); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 945, __pyx_L1_error)

      /* "View.MemoryView":944
 *         shape[i], shape[j] = shape[j], shape[i]
 * 
 *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:             # <<<<<<<<<<<<<<
 *             _err(ValueError, "Cannot transpose memoryview with indirect dimensions")
 * 
 */
    }
  }

  /* "View.MemoryView":947
 *             _err(ValueError, "Cannot transpose memoryview with indirect dimensions")
 * 
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 1;
  goto __pyx_L0;

  /* "View.MemoryView":931
 * 
 * @cname('__pyx_memslice_transpose')
 * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0:             # <<<<<<<<<<<<<<
 *     cdef int ndim = memslice.memview.view.ndim
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  {
    #ifdef WITH_THREAD
    PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
    #endif
    __Pyx_AddTraceback("View.MemoryView.transpose_memslice", __pyx_clineno, __pyx_lineno, __pyx_filename);
    #ifdef WITH_THREAD
    __Pyx_PyGILState_Release(__pyx_gilstate_save);
    #endif
  }
  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "View.MemoryView":964
 *     cdef int (*to_dtype_func)(char *, object) except 0
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)
 * 
 */

/* Python wrapper */
static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "View.MemoryView":965
 * 
 *     def __dealloc__(self):
 *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)             # <<<<<<<<<<<<<<
 * 
 *     cdef convert_item_to_object(self, char *itemp):
 */
  __PYX_XDEC_MEMVIEW((&__pyx_v_self->from_slice), 1);

  /* "View.MemoryView":964
 *     cdef int (*to_dtype_func)(char *, object) except 0
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "View.MemoryView":967
 *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)
 * 
 *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
 *         if self.to_object_func != NULL:
 *             return self.to_object_func(itemp)
 */

static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("convert_item_to_object", 0);

  /* "View.MemoryView":968
 * 
 *     cdef convert_item_to_object(self, char *itemp):
 *         if self.to_object_func != NULL:             # <<<<<<<<<<<<<<
 *             return self.to_object_func(itemp)
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_self->to_object_func != NULL) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":969
 *     cdef convert_item_to_object(self, char *itemp):
 *         if self.to_object_func != NULL:
 *             return self.to_object_func(itemp)             # <<<<<<<<<<<<<<
 *         else:
 *             return memoryview.convert_item_to_object(self, itemp)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "View.MemoryView":968
 * 
 *     cdef convert_item_to_object(self, char *itemp):
 *         if self.to_object_func != NULL:             # <<<<<<<<<<<<<<
 *             return self.to_object_func(itemp)
 *         else:
 */
  }

  /* "View.MemoryView":971
 *             return self.to_object_func(itemp)
 *         else:
 *             return memoryview.convert_item_to_object(self, itemp)             # <<<<<<<<<<<<<<
 * 
 *     cdef assign_item_from_object(self, char *itemp, object value):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "View.MemoryView":967
 *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)
 * 
 *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
 *         if self.to_object_func != NULL:
 *             return self.to_object_func(itemp)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("View.MemoryView._memoryviewslice.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":973
 *             return memoryview.convert_item_to_object(self, itemp)
 * 
 *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
 *         if self.to_dtype_func != NULL:
 *             self.to_dtype_func(itemp, value)
 */

static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("assign_item_from_object", 0);

  /* "View.MemoryView":974
 * 
 *     cdef assign_item_from_object(self, char *itemp, object value):
 *         if self.to_dtype_func != NULL:             # <<<<<<<<<<<<<<
 *             self.to_dtype_func(itemp, value)
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_self->to_dtype_func != NULL) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":975
 *     cdef assign_item_from_object(self, char *itemp, object value):
 *         if self.to_dtype_func != NULL:
 *             self.to_dtype_func(itemp, value)             # <<<<<<<<<<<<<<
 *         else:
 *             memoryview.assign_item_from_object(self, itemp, value)
 */
    __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(4, 975, __pyx_L1_error)

    /* "View.MemoryView":974
 * 
 *     cdef assign_item_from_object(self, char *itemp, object value):
 *         if self.to_dtype_func != NULL:             # <<<<<<<<<<<<<<
 *             self.to_dtype_func(itemp, value)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":977
 *             self.to_dtype_func(itemp, value)
 *         else:
 *             memoryview.assign_item_from_object(self, itemp, value)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  /*else*/ {
    __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 977, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "View.MemoryView":973
 *             return memoryview.convert_item_to_object(self, itemp)
 * 
 *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
 *         if self.to_dtype_func != NULL:
 *             self.to_dtype_func(itemp, value)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("View.MemoryView._memoryviewslice.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":980
 * 
 *     @property
 *     def base(self):             # <<<<<<<<<<<<<<
 *         return self.from_object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "View.MemoryView":981
 *     @property
 *     def base(self):
 *         return self.from_object             # <<<<<<<<<<<<<<
 * 
 *     __pyx_getbuffer = capsule(<void *> &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)")
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->from_object);
  __pyx_r = __pyx_v_self->from_object;
  goto __pyx_L0;

  /* "View.MemoryView":980
 * 
 *     @property
 *     def base(self):             # <<<<<<<<<<<<<<
 *         return self.from_object
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf___pyx_memoryviewslice___reduce_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__169, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf___pyx_memoryviewslice_2__setstate_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__170, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":987
 * 
 * @cname('__pyx_memoryview_fromslice')
 * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice,             # <<<<<<<<<<<<<<
 *                           int ndim,
 *                           object (*to_object_func)(char *),
 */

static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewslice, int __pyx_v_ndim, PyObject *(*__pyx_v_to_object_func)(char *), int (*__pyx_v_to_dtype_func)(char *, PyObject *), int __pyx_v_dtype_is_object) {
  struct __pyx_memoryviewslice_obj *__pyx_v_result = 0;
  Py_ssize_t __pyx_v_suboffset;
  PyObject *__pyx_v_length = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_TypeInfo *__pyx_t_4;
  Py_buffer __pyx_t_5;
  Py_ssize_t *__pyx_t_6;
  Py_ssize_t *__pyx_t_7;
  Py_ssize_t *__pyx_t_8;
  Py_ssize_t __pyx_t_9;
  __Pyx_RefNannySetupContext("memoryview_fromslice", 0);

  /* "View.MemoryView":995
 *     cdef _memoryviewslice result
 * 
 *     if <PyObject *> memviewslice.memview == Py_None:             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
  __pyx_t_1 = ((((PyObject *)__pyx_v_memviewslice.memview) == Py_None) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":996
 * 
 *     if <PyObject *> memviewslice.memview == Py_None:
 *         return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;

    /* "View.MemoryView":995
 *     cdef _memoryviewslice result
 * 
 *     if <PyObject *> memviewslice.memview == Py_None:             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
  }

  /* "View.MemoryView":1001
 * 
 * 
 *     result = _memoryviewslice(None, 0, dtype_is_object)             # <<<<<<<<<<<<<<
 * 
 *     result.from_slice = memviewslice
 */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "View.MemoryView":1003
 *     result = _memoryviewslice(None, 0, dtype_is_object)
 * 
 *     result.from_slice = memviewslice             # <<<<<<<<<<<<<<
 *     __PYX_INC_MEMVIEW(&memviewslice, 1)
 * 
 */
  __pyx_v_result->from_slice = __pyx_v_memviewslice;

  /* "View.MemoryView":1004
 * 
 *     result.from_slice = memviewslice
 *     __PYX_INC_MEMVIEW(&memviewslice, 1)             # <<<<<<<<<<<<<<
 * 
 *     result.from_object = (<memoryview> memviewslice.memview).base
 */
  __PYX_INC_MEMVIEW((&__pyx_v_memviewslice), 1);

  /* "View.MemoryView":1006
 *     __PYX_INC_MEMVIEW(&memviewslice, 1)
 * 
 *     result.from_object = (<memoryview> memviewslice.memview).base             # <<<<<<<<<<<<<<
 *     result.typeinfo = memviewslice.memview.typeinfo
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_memviewslice.memview), __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_result->from_object);
  __Pyx_DECREF(__pyx_v_result->from_object);
  __pyx_v_result->from_object = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "View.MemoryView":1007
 * 
 *     result.from_object = (<memoryview> memviewslice.memview).base
 *     result.typeinfo = memviewslice.memview.typeinfo             # <<<<<<<<<<<<<<
 * 
 *     result.view = memviewslice.memview.view
 */
  __pyx_t_4 = __pyx_v_memviewslice.memview->typeinfo;
  __pyx_v_result->__pyx_base.typeinfo = __pyx_t_4;

  /* "View.MemoryView":1009
 *     result.typeinfo = memviewslice.memview.typeinfo
 * 
 *     result.view = memviewslice.memview.view             # <<<<<<<<<<<<<<
 *     result.view.buf = <void *> memviewslice.data
 *     result.view.ndim = ndim
 */
  __pyx_t_5 = __pyx_v_memviewslice.memview->view;
  __pyx_v_result->__pyx_base.view = __pyx_t_5;

  /* "View.MemoryView":1010
 * 
 *     result.view = memviewslice.memview.view
 *     result.view.buf = <void *> memviewslice.data             # <<<<<<<<<<<<<<
 *     result.view.ndim = ndim
 *     (<__pyx_buffer *> &result.view).obj = Py_None
 */
  __pyx_v_result->__pyx_base.view.buf = ((void *)__pyx_v_memviewslice.data);

  /* "View.MemoryView":1011
 *     result.view = memviewslice.memview.view
 *     result.view.buf = <void *> memviewslice.data
 *     result.view.ndim = ndim             # <<<<<<<<<<<<<<
 *     (<__pyx_buffer *> &result.view).obj = Py_None
 *     Py_INCREF(Py_None)
 */
  __pyx_v_result->__pyx_base.view.ndim = __pyx_v_ndim;

  /* "View.MemoryView":1012
 *     result.view.buf = <void *> memviewslice.data
 *     result.view.ndim = ndim
 *     (<__pyx_buffer *> &result.view).obj = Py_None             # <<<<<<<<<<<<<<
 *     Py_INCREF(Py_None)
 * 
 */
  ((Py_buffer *)(&__pyx_v_result->__pyx_base.view))->obj = Py_None;

  /* "View.MemoryView":1013
 *     result.view.ndim = ndim
 *     (<__pyx_buffer *> &result.view).obj = Py_None
 *     Py_INCREF(Py_None)             # <<<<<<<<<<<<<<
 * 
 *     result.flags = PyBUF_RECORDS
 */
  Py_INCREF(Py_None);

  /* "View.MemoryView":1015
 *     Py_INCREF(Py_None)
 * 
 *     result.flags = PyBUF_RECORDS             # <<<<<<<<<<<<<<
 * 
 *     result.view.shape = <Py_ssize_t *> result.from_slice.shape
 */
  __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS;

  /* "View.MemoryView":1017
 *     result.flags = PyBUF_RECORDS
 * 
 *     result.view.shape = <Py_ssize_t *> result.from_slice.shape             # <<<<<<<<<<<<<<
 *     result.view.strides = <Py_ssize_t *> result.from_slice.strides
 * 
 */
  __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape);

  /* "View.MemoryView":1018
 * 
 *     result.view.shape = <Py_ssize_t *> result.from_slice.shape
 *     result.view.strides = <Py_ssize_t *> result.from_slice.strides             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides);

  /* "View.MemoryView":1021
 * 
 * 
 *     result.view.suboffsets = NULL             # <<<<<<<<<<<<<<
 *     for suboffset in result.from_slice.suboffsets[:ndim]:
 *         if suboffset >= 0:
 */
  __pyx_v_result->__pyx_base.view.suboffsets = NULL;

  /* "View.MemoryView":1022
 * 
 *     result.view.suboffsets = NULL
 *     for suboffset in result.from_slice.suboffsets[:ndim]:             # <<<<<<<<<<<<<<
 *         if suboffset >= 0:
 *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
 */
  __pyx_t_7 = (__pyx_v_result->from_slice.suboffsets + __pyx_v_ndim);
  for (__pyx_t_8 = __pyx_v_result->from_slice.suboffsets; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) {
    __pyx_t_6 = __pyx_t_8;
    __pyx_v_suboffset = (__pyx_t_6[0]);

    /* "View.MemoryView":1023
 *     result.view.suboffsets = NULL
 *     for suboffset in result.from_slice.suboffsets[:ndim]:
 *         if suboffset >= 0:             # <<<<<<<<<<<<<<
 *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
 *             break
 */
    __pyx_t_1 = ((__pyx_v_suboffset >= 0) != 0);
    if (__pyx_t_1) {

      /* "View.MemoryView":1024
 *     for suboffset in result.from_slice.suboffsets[:ndim]:
 *         if suboffset >= 0:
 *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets             # <<<<<<<<<<<<<<
 *             break
 * 
 */
      __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets);

      /* "View.MemoryView":1025
 *         if suboffset >= 0:
 *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
 *             break             # <<<<<<<<<<<<<<
 * 
 *     result.view.len = result.view.itemsize
 */
      goto __pyx_L5_break;

      /* "View.MemoryView":1023
 *     result.view.suboffsets = NULL
 *     for suboffset in result.from_slice.suboffsets[:ndim]:
 *         if suboffset >= 0:             # <<<<<<<<<<<<<<
 *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
 *             break
 */
    }
  }
  __pyx_L5_break:;

  /* "View.MemoryView":1027
 *             break
 * 
 *     result.view.len = result.view.itemsize             # <<<<<<<<<<<<<<
 *     for length in result.view.shape[:ndim]:
 *         result.view.len *= length
 */
  __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize;
  __pyx_v_result->__pyx_base.view.len = __pyx_t_9;

  /* "View.MemoryView":1028
 * 
 *     result.view.len = result.view.itemsize
 *     for length in result.view.shape[:ndim]:             # <<<<<<<<<<<<<<
 *         result.view.len *= length
 * 
 */
  __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim);
  for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) {
    __pyx_t_6 = __pyx_t_8;
    __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "View.MemoryView":1029
 *     result.view.len = result.view.itemsize
 *     for length in result.view.shape[:ndim]:
 *         result.view.len *= length             # <<<<<<<<<<<<<<
 * 
 *     result.to_object_func = to_object_func
 */
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1029, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1029, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 1029, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_result->__pyx_base.view.len = __pyx_t_9;
  }

  /* "View.MemoryView":1031
 *         result.view.len *= length
 * 
 *     result.to_object_func = to_object_func             # <<<<<<<<<<<<<<
 *     result.to_dtype_func = to_dtype_func
 * 
 */
  __pyx_v_result->to_object_func = __pyx_v_to_object_func;

  /* "View.MemoryView":1032
 * 
 *     result.to_object_func = to_object_func
 *     result.to_dtype_func = to_dtype_func             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
  __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func;

  /* "View.MemoryView":1034
 *     result.to_dtype_func = to_dtype_func
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_get_slice_from_memoryview')
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  /* "View.MemoryView":987
 * 
 * @cname('__pyx_memoryview_fromslice')
 * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice,             # <<<<<<<<<<<<<<
 *                           int ndim,
 *                           object (*to_object_func)(char *),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("View.MemoryView.memoryview_fromslice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_length);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":1037
 * 
 * @cname('__pyx_memoryview_get_slice_from_memoryview')
 * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview,             # <<<<<<<<<<<<<<
 *                                                    __Pyx_memviewslice *mslice):
 *     cdef _memoryviewslice obj
 */

static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_mslice) {
  struct __pyx_memoryviewslice_obj *__pyx_v_obj = 0;
  __Pyx_memviewslice *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("get_slice_from_memview", 0);

  /* "View.MemoryView":1040
 *                                                    __Pyx_memviewslice *mslice):
 *     cdef _memoryviewslice obj
 *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
 *         obj = memview
 *         return &obj.from_slice
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":1041
 *     cdef _memoryviewslice obj
 *     if isinstance(memview, _memoryviewslice):
 *         obj = memview             # <<<<<<<<<<<<<<
 *         return &obj.from_slice
 *     else:
 */
    if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(4, 1041, __pyx_L1_error)
    __pyx_t_3 = ((PyObject *)__pyx_v_memview);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "View.MemoryView":1042
 *     if isinstance(memview, _memoryviewslice):
 *         obj = memview
 *         return &obj.from_slice             # <<<<<<<<<<<<<<
 *     else:
 *         slice_copy(memview, mslice)
 */
    __pyx_r = (&__pyx_v_obj->from_slice);
    goto __pyx_L0;

    /* "View.MemoryView":1040
 *                                                    __Pyx_memviewslice *mslice):
 *     cdef _memoryviewslice obj
 *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
 *         obj = memview
 *         return &obj.from_slice
 */
  }

  /* "View.MemoryView":1044
 *         return &obj.from_slice
 *     else:
 *         slice_copy(memview, mslice)             # <<<<<<<<<<<<<<
 *         return mslice
 * 
 */
  /*else*/ {
    __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice);

    /* "View.MemoryView":1045
 *     else:
 *         slice_copy(memview, mslice)
 *         return mslice             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_slice_copy')
 */
    __pyx_r = __pyx_v_mslice;
    goto __pyx_L0;
  }

  /* "View.MemoryView":1037
 * 
 * @cname('__pyx_memoryview_get_slice_from_memoryview')
 * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview,             # <<<<<<<<<<<<<<
 *                                                    __Pyx_memviewslice *mslice):
 *     cdef _memoryviewslice obj
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":1048
 * 
 * @cname('__pyx_memoryview_slice_copy')
 * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst):             # <<<<<<<<<<<<<<
 *     cdef int dim
 *     cdef (Py_ssize_t*) shape, strides, suboffsets
 */

static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_dst) {
  int __pyx_v_dim;
  Py_ssize_t *__pyx_v_shape;
  Py_ssize_t *__pyx_v_strides;
  Py_ssize_t *__pyx_v_suboffsets;
  __Pyx_RefNannyDeclarations
  Py_ssize_t *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_RefNannySetupContext("slice_copy", 0);

  /* "View.MemoryView":1052
 *     cdef (Py_ssize_t*) shape, strides, suboffsets
 * 
 *     shape = memview.view.shape             # <<<<<<<<<<<<<<
 *     strides = memview.view.strides
 *     suboffsets = memview.view.suboffsets
 */
  __pyx_t_1 = __pyx_v_memview->view.shape;
  __pyx_v_shape = __pyx_t_1;

  /* "View.MemoryView":1053
 * 
 *     shape = memview.view.shape
 *     strides = memview.view.strides             # <<<<<<<<<<<<<<
 *     suboffsets = memview.view.suboffsets
 * 
 */
  __pyx_t_1 = __pyx_v_memview->view.strides;
  __pyx_v_strides = __pyx_t_1;

  /* "View.MemoryView":1054
 *     shape = memview.view.shape
 *     strides = memview.view.strides
 *     suboffsets = memview.view.suboffsets             # <<<<<<<<<<<<<<
 * 
 *     dst.memview = <__pyx_memoryview *> memview
 */
  __pyx_t_1 = __pyx_v_memview->view.suboffsets;
  __pyx_v_suboffsets = __pyx_t_1;

  /* "View.MemoryView":1056
 *     suboffsets = memview.view.suboffsets
 * 
 *     dst.memview = <__pyx_memoryview *> memview             # <<<<<<<<<<<<<<
 *     dst.data = <char *> memview.view.buf
 * 
 */
  __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview);

  /* "View.MemoryView":1057
 * 
 *     dst.memview = <__pyx_memoryview *> memview
 *     dst.data = <char *> memview.view.buf             # <<<<<<<<<<<<<<
 * 
 *     for dim in range(memview.view.ndim):
 */
  __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf);

  /* "View.MemoryView":1059
 *     dst.data = <char *> memview.view.buf
 * 
 *     for dim in range(memview.view.ndim):             # <<<<<<<<<<<<<<
 *         dst.shape[dim] = shape[dim]
 *         dst.strides[dim] = strides[dim]
 */
  __pyx_t_2 = __pyx_v_memview->view.ndim;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_dim = __pyx_t_3;

    /* "View.MemoryView":1060
 * 
 *     for dim in range(memview.view.ndim):
 *         dst.shape[dim] = shape[dim]             # <<<<<<<<<<<<<<
 *         dst.strides[dim] = strides[dim]
 *         dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1
 */
    (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]);

    /* "View.MemoryView":1061
 *     for dim in range(memview.view.ndim):
 *         dst.shape[dim] = shape[dim]
 *         dst.strides[dim] = strides[dim]             # <<<<<<<<<<<<<<
 *         dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1
 * 
 */
    (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]);

    /* "View.MemoryView":1062
 *         dst.shape[dim] = shape[dim]
 *         dst.strides[dim] = strides[dim]
 *         dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_copy_object')
 */
    if ((__pyx_v_suboffsets != 0)) {
      __pyx_t_4 = (__pyx_v_suboffsets[__pyx_v_dim]);
    } else {
      __pyx_t_4 = -1L;
    }
    (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_4;
  }

  /* "View.MemoryView":1048
 * 
 * @cname('__pyx_memoryview_slice_copy')
 * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst):             # <<<<<<<<<<<<<<
 *     cdef int dim
 *     cdef (Py_ssize_t*) shape, strides, suboffsets
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "View.MemoryView":1065
 * 
 * @cname('__pyx_memoryview_copy_object')
 * cdef memoryview_copy(memoryview memview):             # <<<<<<<<<<<<<<
 *     "Create a new memoryview object"
 *     cdef __Pyx_memviewslice memviewslice
 */

static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx_v_memview) {
  __Pyx_memviewslice __pyx_v_memviewslice;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("memoryview_copy", 0);

  /* "View.MemoryView":1068
 *     "Create a new memoryview object"
 *     cdef __Pyx_memviewslice memviewslice
 *     slice_copy(memview, &memviewslice)             # <<<<<<<<<<<<<<
 *     return memoryview_copy_from_slice(memview, &memviewslice)
 * 
 */
  __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice));

  /* "View.MemoryView":1069
 *     cdef __Pyx_memviewslice memviewslice
 *     slice_copy(memview, &memviewslice)
 *     return memoryview_copy_from_slice(memview, &memviewslice)             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_copy_object_from_slice')
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":1065
 * 
 * @cname('__pyx_memoryview_copy_object')
 * cdef memoryview_copy(memoryview memview):             # <<<<<<<<<<<<<<
 *     "Create a new memoryview object"
 *     cdef __Pyx_memviewslice memviewslice
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("View.MemoryView.memoryview_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":1072
 * 
 * @cname('__pyx_memoryview_copy_object_from_slice')
 * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice):             # <<<<<<<<<<<<<<
 *     """
 *     Create a new memoryview object from a given memoryview object and slice.
 */

static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_memviewslice) {
  PyObject *(*__pyx_v_to_object_func)(char *);
  int (*__pyx_v_to_dtype_func)(char *, PyObject *);
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *(*__pyx_t_3)(char *);
  int (*__pyx_t_4)(char *, PyObject *);
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 0);

  /* "View.MemoryView":1079
 *     cdef int (*to_dtype_func)(char *, object) except 0
 * 
 *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
 *         to_object_func = (<_memoryviewslice> memview).to_object_func
 *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":1080
 * 
 *     if isinstance(memview, _memoryviewslice):
 *         to_object_func = (<_memoryviewslice> memview).to_object_func             # <<<<<<<<<<<<<<
 *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
 *     else:
 */
    __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func;
    __pyx_v_to_object_func = __pyx_t_3;

    /* "View.MemoryView":1081
 *     if isinstance(memview, _memoryviewslice):
 *         to_object_func = (<_memoryviewslice> memview).to_object_func
 *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func             # <<<<<<<<<<<<<<
 *     else:
 *         to_object_func = NULL
 */
    __pyx_t_4 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func;
    __pyx_v_to_dtype_func = __pyx_t_4;

    /* "View.MemoryView":1079
 *     cdef int (*to_dtype_func)(char *, object) except 0
 * 
 *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
 *         to_object_func = (<_memoryviewslice> memview).to_object_func
 *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":1083
 *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
 *     else:
 *         to_object_func = NULL             # <<<<<<<<<<<<<<
 *         to_dtype_func = NULL
 * 
 */
  /*else*/ {
    __pyx_v_to_object_func = NULL;

    /* "View.MemoryView":1084
 *     else:
 *         to_object_func = NULL
 *         to_dtype_func = NULL             # <<<<<<<<<<<<<<
 * 
 *     return memoryview_fromslice(memviewslice[0], memview.view.ndim,
 */
    __pyx_v_to_dtype_func = NULL;
  }
  __pyx_L3:;

  /* "View.MemoryView":1086
 *         to_dtype_func = NULL
 * 
 *     return memoryview_fromslice(memviewslice[0], memview.view.ndim,             # <<<<<<<<<<<<<<
 *                                 to_object_func, to_dtype_func,
 *                                 memview.dtype_is_object)
 */
  __Pyx_XDECREF(__pyx_r);

  /* "View.MemoryView":1088
 *     return memoryview_fromslice(memviewslice[0], memview.view.ndim,
 *                                 to_object_func, to_dtype_func,
 *                                 memview.dtype_is_object)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "View.MemoryView":1072
 * 
 * @cname('__pyx_memoryview_copy_object_from_slice')
 * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice):             # <<<<<<<<<<<<<<
 *     """
 *     Create a new memoryview object from a given memoryview object and slice.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("View.MemoryView.memoryview_copy_from_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "View.MemoryView":1094
 * 
 * 
 * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:             # <<<<<<<<<<<<<<
 *     if arg < 0:
 *         return -arg
 */

static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) {
  Py_ssize_t __pyx_r;
  int __pyx_t_1;

  /* "View.MemoryView":1095
 * 
 * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:
 *     if arg < 0:             # <<<<<<<<<<<<<<
 *         return -arg
 *     else:
 */
  __pyx_t_1 = ((__pyx_v_arg < 0) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":1096
 * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:
 *     if arg < 0:
 *         return -arg             # <<<<<<<<<<<<<<
 *     else:
 *         return arg
 */
    __pyx_r = (-__pyx_v_arg);
    goto __pyx_L0;

    /* "View.MemoryView":1095
 * 
 * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:
 *     if arg < 0:             # <<<<<<<<<<<<<<
 *         return -arg
 *     else:
 */
  }

  /* "View.MemoryView":1098
 *         return -arg
 *     else:
 *         return arg             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_get_best_slice_order')
 */
  /*else*/ {
    __pyx_r = __pyx_v_arg;
    goto __pyx_L0;
  }

  /* "View.MemoryView":1094
 * 
 * 
 * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:             # <<<<<<<<<<<<<<
 *     if arg < 0:
 *         return -arg
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "View.MemoryView":1101
 * 
 * @cname('__pyx_get_best_slice_order')
 * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil:             # <<<<<<<<<<<<<<
 *     """
 *     Figure out the best memory access order for a given slice.
 */

static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim) {
  int __pyx_v_i;
  Py_ssize_t __pyx_v_c_stride;
  Py_ssize_t __pyx_v_f_stride;
  char __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "View.MemoryView":1106
 *     """
 *     cdef int i
 *     cdef Py_ssize_t c_stride = 0             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t f_stride = 0
 * 
 */
  __pyx_v_c_stride = 0;

  /* "View.MemoryView":1107
 *     cdef int i
 *     cdef Py_ssize_t c_stride = 0
 *     cdef Py_ssize_t f_stride = 0             # <<<<<<<<<<<<<<
 * 
 *     for i in range(ndim - 1, -1, -1):
 */
  __pyx_v_f_stride = 0;

  /* "View.MemoryView":1109
 *     cdef Py_ssize_t f_stride = 0
 * 
 *     for i in range(ndim - 1, -1, -1):             # <<<<<<<<<<<<<<
 *         if mslice.shape[i] > 1:
 *             c_stride = mslice.strides[i]
 */
  for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1L; __pyx_t_1-=1) {
    __pyx_v_i = __pyx_t_1;

    /* "View.MemoryView":1110
 * 
 *     for i in range(ndim - 1, -1, -1):
 *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
 *             c_stride = mslice.strides[i]
 *             break
 */
    __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":1111
 *     for i in range(ndim - 1, -1, -1):
 *         if mslice.shape[i] > 1:
 *             c_stride = mslice.strides[i]             # <<<<<<<<<<<<<<
 *             break
 * 
 */
      __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]);

      /* "View.MemoryView":1112
 *         if mslice.shape[i] > 1:
 *             c_stride = mslice.strides[i]
 *             break             # <<<<<<<<<<<<<<
 * 
 *     for i in range(ndim):
 */
      goto __pyx_L4_break;

      /* "View.MemoryView":1110
 * 
 *     for i in range(ndim - 1, -1, -1):
 *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
 *             c_stride = mslice.strides[i]
 *             break
 */
    }
  }
  __pyx_L4_break:;

  /* "View.MemoryView":1114
 *             break
 * 
 *     for i in range(ndim):             # <<<<<<<<<<<<<<
 *         if mslice.shape[i] > 1:
 *             f_stride = mslice.strides[i]
 */
  __pyx_t_1 = __pyx_v_ndim;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_1; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "View.MemoryView":1115
 * 
 *     for i in range(ndim):
 *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
 *             f_stride = mslice.strides[i]
 *             break
 */
    __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":1116
 *     for i in range(ndim):
 *         if mslice.shape[i] > 1:
 *             f_stride = mslice.strides[i]             # <<<<<<<<<<<<<<
 *             break
 * 
 */
      __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]);

      /* "View.MemoryView":1117
 *         if mslice.shape[i] > 1:
 *             f_stride = mslice.strides[i]
 *             break             # <<<<<<<<<<<<<<
 * 
 *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):
 */
      goto __pyx_L7_break;

      /* "View.MemoryView":1115
 * 
 *     for i in range(ndim):
 *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
 *             f_stride = mslice.strides[i]
 *             break
 */
    }
  }
  __pyx_L7_break:;

  /* "View.MemoryView":1119
 *             break
 * 
 *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):             # <<<<<<<<<<<<<<
 *         return 'C'
 *     else:
 */
  __pyx_t_2 = ((abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride)) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":1120
 * 
 *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):
 *         return 'C'             # <<<<<<<<<<<<<<
 *     else:
 *         return 'F'
 */
    __pyx_r = 'C';
    goto __pyx_L0;

    /* "View.MemoryView":1119
 *             break
 * 
 *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):             # <<<<<<<<<<<<<<
 *         return 'C'
 *     else:
 */
  }

  /* "View.MemoryView":1122
 *         return 'C'
 *     else:
 *         return 'F'             # <<<<<<<<<<<<<<
 * 
 * @cython.cdivision(True)
 */
  /*else*/ {
    __pyx_r = 'F';
    goto __pyx_L0;
  }

  /* "View.MemoryView":1101
 * 
 * @cname('__pyx_get_best_slice_order')
 * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil:             # <<<<<<<<<<<<<<
 *     """
 *     Figure out the best memory access order for a given slice.
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "View.MemoryView":1125
 * 
 * @cython.cdivision(True)
 * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides,             # <<<<<<<<<<<<<<
 *                                    char *dst_data, Py_ssize_t *dst_strides,
 *                                    Py_ssize_t *src_shape, Py_ssize_t *dst_shape,
 */

static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v_src_strides, char *__pyx_v_dst_data, Py_ssize_t *__pyx_v_dst_strides, Py_ssize_t *__pyx_v_src_shape, Py_ssize_t *__pyx_v_dst_shape, int __pyx_v_ndim, size_t __pyx_v_itemsize) {
  CYTHON_UNUSED Py_ssize_t __pyx_v_i;
  CYTHON_UNUSED Py_ssize_t __pyx_v_src_extent;
  Py_ssize_t __pyx_v_dst_extent;
  Py_ssize_t __pyx_v_src_stride;
  Py_ssize_t __pyx_v_dst_stride;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;

  /* "View.MemoryView":1132
 * 
 *     cdef Py_ssize_t i
 *     cdef Py_ssize_t src_extent = src_shape[0]             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t dst_extent = dst_shape[0]
 *     cdef Py_ssize_t src_stride = src_strides[0]
 */
  __pyx_v_src_extent = (__pyx_v_src_shape[0]);

  /* "View.MemoryView":1133
 *     cdef Py_ssize_t i
 *     cdef Py_ssize_t src_extent = src_shape[0]
 *     cdef Py_ssize_t dst_extent = dst_shape[0]             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t src_stride = src_strides[0]
 *     cdef Py_ssize_t dst_stride = dst_strides[0]
 */
  __pyx_v_dst_extent = (__pyx_v_dst_shape[0]);

  /* "View.MemoryView":1134
 *     cdef Py_ssize_t src_extent = src_shape[0]
 *     cdef Py_ssize_t dst_extent = dst_shape[0]
 *     cdef Py_ssize_t src_stride = src_strides[0]             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t dst_stride = dst_strides[0]
 * 
 */
  __pyx_v_src_stride = (__pyx_v_src_strides[0]);

  /* "View.MemoryView":1135
 *     cdef Py_ssize_t dst_extent = dst_shape[0]
 *     cdef Py_ssize_t src_stride = src_strides[0]
 *     cdef Py_ssize_t dst_stride = dst_strides[0]             # <<<<<<<<<<<<<<
 * 
 *     if ndim == 1:
 */
  __pyx_v_dst_stride = (__pyx_v_dst_strides[0]);

  /* "View.MemoryView":1137
 *     cdef Py_ssize_t dst_stride = dst_strides[0]
 * 
 *     if ndim == 1:             # <<<<<<<<<<<<<<
 *        if (src_stride > 0 and dst_stride > 0 and
 *            <size_t> src_stride == itemsize == <size_t> dst_stride):
 */
  __pyx_t_1 = ((__pyx_v_ndim == 1) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":1138
 * 
 *     if ndim == 1:
 *        if (src_stride > 0 and dst_stride > 0 and             # <<<<<<<<<<<<<<
 *            <size_t> src_stride == itemsize == <size_t> dst_stride):
 *            memcpy(dst_data, src_data, itemsize * dst_extent)
 */
    __pyx_t_2 = ((__pyx_v_src_stride > 0) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_dst_stride > 0) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }

    /* "View.MemoryView":1139
 *     if ndim == 1:
 *        if (src_stride > 0 and dst_stride > 0 and
 *            <size_t> src_stride == itemsize == <size_t> dst_stride):             # <<<<<<<<<<<<<<
 *            memcpy(dst_data, src_data, itemsize * dst_extent)
 *        else:
 */
    __pyx_t_2 = (((size_t)__pyx_v_src_stride) == __pyx_v_itemsize);
    if (__pyx_t_2) {
      __pyx_t_2 = (__pyx_v_itemsize == ((size_t)__pyx_v_dst_stride));
    }
    __pyx_t_3 = (__pyx_t_2 != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L5_bool_binop_done:;

    /* "View.MemoryView":1138
 * 
 *     if ndim == 1:
 *        if (src_stride > 0 and dst_stride > 0 and             # <<<<<<<<<<<<<<
 *            <size_t> src_stride == itemsize == <size_t> dst_stride):
 *            memcpy(dst_data, src_data, itemsize * dst_extent)
 */
    if (__pyx_t_1) {

      /* "View.MemoryView":1140
 *        if (src_stride > 0 and dst_stride > 0 and
 *            <size_t> src_stride == itemsize == <size_t> dst_stride):
 *            memcpy(dst_data, src_data, itemsize * dst_extent)             # <<<<<<<<<<<<<<
 *        else:
 *            for i in range(dst_extent):
 */
      memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent));

      /* "View.MemoryView":1138
 * 
 *     if ndim == 1:
 *        if (src_stride > 0 and dst_stride > 0 and             # <<<<<<<<<<<<<<
 *            <size_t> src_stride == itemsize == <size_t> dst_stride):
 *            memcpy(dst_data, src_data, itemsize * dst_extent)
 */
      goto __pyx_L4;
    }

    /* "View.MemoryView":1142
 *            memcpy(dst_data, src_data, itemsize * dst_extent)
 *        else:
 *            for i in range(dst_extent):             # <<<<<<<<<<<<<<
 *                memcpy(dst_data, src_data, itemsize)
 *                src_data += src_stride
 */
    /*else*/ {
      __pyx_t_4 = __pyx_v_dst_extent;
      for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
        __pyx_v_i = __pyx_t_5;

        /* "View.MemoryView":1143
 *        else:
 *            for i in range(dst_extent):
 *                memcpy(dst_data, src_data, itemsize)             # <<<<<<<<<<<<<<
 *                src_data += src_stride
 *                dst_data += dst_stride
 */
        memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize);

        /* "View.MemoryView":1144
 *            for i in range(dst_extent):
 *                memcpy(dst_data, src_data, itemsize)
 *                src_data += src_stride             # <<<<<<<<<<<<<<
 *                dst_data += dst_stride
 *     else:
 */
        __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride);

        /* "View.MemoryView":1145
 *                memcpy(dst_data, src_data, itemsize)
 *                src_data += src_stride
 *                dst_data += dst_stride             # <<<<<<<<<<<<<<
 *     else:
 *         for i in range(dst_extent):
 */
        __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride);
      }
    }
    __pyx_L4:;

    /* "View.MemoryView":1137
 *     cdef Py_ssize_t dst_stride = dst_strides[0]
 * 
 *     if ndim == 1:             # <<<<<<<<<<<<<<
 *        if (src_stride > 0 and dst_stride > 0 and
 *            <size_t> src_stride == itemsize == <size_t> dst_stride):
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":1147
 *                dst_data += dst_stride
 *     else:
 *         for i in range(dst_extent):             # <<<<<<<<<<<<<<
 *             _copy_strided_to_strided(src_data, src_strides + 1,
 *                                      dst_data, dst_strides + 1,
 */
  /*else*/ {
    __pyx_t_4 = __pyx_v_dst_extent;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_v_i = __pyx_t_5;

      /* "View.MemoryView":1148
 *     else:
 *         for i in range(dst_extent):
 *             _copy_strided_to_strided(src_data, src_strides + 1,             # <<<<<<<<<<<<<<
 *                                      dst_data, dst_strides + 1,
 *                                      src_shape + 1, dst_shape + 1,
 */
      _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize);

      /* "View.MemoryView":1152
 *                                      src_shape + 1, dst_shape + 1,
 *                                      ndim - 1, itemsize)
 *             src_data += src_stride             # <<<<<<<<<<<<<<
 *             dst_data += dst_stride
 * 
 */
      __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride);

      /* "View.MemoryView":1153
 *                                      ndim - 1, itemsize)
 *             src_data += src_stride
 *             dst_data += dst_stride             # <<<<<<<<<<<<<<
 * 
 * cdef void copy_strided_to_strided(__Pyx_memviewslice *src,
 */
      __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride);
    }
  }
  __pyx_L3:;

  /* "View.MemoryView":1125
 * 
 * @cython.cdivision(True)
 * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides,             # <<<<<<<<<<<<<<
 *                                    char *dst_data, Py_ssize_t *dst_strides,
 *                                    Py_ssize_t *src_shape, Py_ssize_t *dst_shape,
 */

  /* function exit code */
}

/* "View.MemoryView":1155
 *             dst_data += dst_stride
 * 
 * cdef void copy_strided_to_strided(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
 *                                   __Pyx_memviewslice *dst,
 *                                   int ndim, size_t itemsize) nogil:
 */

static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) {

  /* "View.MemoryView":1158
 *                                   __Pyx_memviewslice *dst,
 *                                   int ndim, size_t itemsize) nogil:
 *     _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides,             # <<<<<<<<<<<<<<
 *                              src.shape, dst.shape, ndim, itemsize)
 * 
 */
  _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize);

  /* "View.MemoryView":1155
 *             dst_data += dst_stride
 * 
 * cdef void copy_strided_to_strided(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
 *                                   __Pyx_memviewslice *dst,
 *                                   int ndim, size_t itemsize) nogil:
 */

  /* function exit code */
}

/* "View.MemoryView":1162
 * 
 * @cname('__pyx_memoryview_slice_get_size')
 * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil:             # <<<<<<<<<<<<<<
 *     "Return the size of the memory occupied by the slice in number of bytes"
 *     cdef int i
 */

static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_src, int __pyx_v_ndim) {
  int __pyx_v_i;
  Py_ssize_t __pyx_v_size;
  Py_ssize_t __pyx_r;
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "View.MemoryView":1165
 *     "Return the size of the memory occupied by the slice in number of bytes"
 *     cdef int i
 *     cdef Py_ssize_t size = src.memview.view.itemsize             # <<<<<<<<<<<<<<
 * 
 *     for i in range(ndim):
 */
  __pyx_t_1 = __pyx_v_src->memview->view.itemsize;
  __pyx_v_size = __pyx_t_1;

  /* "View.MemoryView":1167
 *     cdef Py_ssize_t size = src.memview.view.itemsize
 * 
 *     for i in range(ndim):             # <<<<<<<<<<<<<<
 *         size *= src.shape[i]
 * 
 */
  __pyx_t_2 = __pyx_v_ndim;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "View.MemoryView":1168
 * 
 *     for i in range(ndim):
 *         size *= src.shape[i]             # <<<<<<<<<<<<<<
 * 
 *     return size
 */
    __pyx_v_size = (__pyx_v_size * (__pyx_v_src->shape[__pyx_v_i]));
  }

  /* "View.MemoryView":1170
 *         size *= src.shape[i]
 * 
 *     return size             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_fill_contig_strides_array')
 */
  __pyx_r = __pyx_v_size;
  goto __pyx_L0;

  /* "View.MemoryView":1162
 * 
 * @cname('__pyx_memoryview_slice_get_size')
 * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil:             # <<<<<<<<<<<<<<
 *     "Return the size of the memory occupied by the slice in number of bytes"
 *     cdef int i
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "View.MemoryView":1173
 * 
 * @cname('__pyx_fill_contig_strides_array')
 * cdef Py_ssize_t fill_contig_strides_array(             # <<<<<<<<<<<<<<
 *                 Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride,
 *                 int ndim, char order) nogil:
 */

static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, Py_ssize_t __pyx_v_stride, int __pyx_v_ndim, char __pyx_v_order) {
  int __pyx_v_idx;
  Py_ssize_t __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "View.MemoryView":1182
 *     cdef int idx
 * 
 *     if order == 'F':             # <<<<<<<<<<<<<<
 *         for idx in range(ndim):
 *             strides[idx] = stride
 */
  __pyx_t_1 = ((__pyx_v_order == 'F') != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":1183
 * 
 *     if order == 'F':
 *         for idx in range(ndim):             # <<<<<<<<<<<<<<
 *             strides[idx] = stride
 *             stride = stride * shape[idx]
 */
    __pyx_t_2 = __pyx_v_ndim;
    for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
      __pyx_v_idx = __pyx_t_3;

      /* "View.MemoryView":1184
 *     if order == 'F':
 *         for idx in range(ndim):
 *             strides[idx] = stride             # <<<<<<<<<<<<<<
 *             stride = stride * shape[idx]
 *     else:
 */
      (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride;

      /* "View.MemoryView":1185
 *         for idx in range(ndim):
 *             strides[idx] = stride
 *             stride = stride * shape[idx]             # <<<<<<<<<<<<<<
 *     else:
 *         for idx in range(ndim - 1, -1, -1):
 */
      __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx]));
    }

    /* "View.MemoryView":1182
 *     cdef int idx
 * 
 *     if order == 'F':             # <<<<<<<<<<<<<<
 *         for idx in range(ndim):
 *             strides[idx] = stride
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":1187
 *             stride = stride * shape[idx]
 *     else:
 *         for idx in range(ndim - 1, -1, -1):             # <<<<<<<<<<<<<<
 *             strides[idx] = stride
 *             stride = stride * shape[idx]
 */
  /*else*/ {
    for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1L; __pyx_t_2-=1) {
      __pyx_v_idx = __pyx_t_2;

      /* "View.MemoryView":1188
 *     else:
 *         for idx in range(ndim - 1, -1, -1):
 *             strides[idx] = stride             # <<<<<<<<<<<<<<
 *             stride = stride * shape[idx]
 * 
 */
      (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride;

      /* "View.MemoryView":1189
 *         for idx in range(ndim - 1, -1, -1):
 *             strides[idx] = stride
 *             stride = stride * shape[idx]             # <<<<<<<<<<<<<<
 * 
 *     return stride
 */
      __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx]));
    }
  }
  __pyx_L3:;

  /* "View.MemoryView":1191
 *             stride = stride * shape[idx]
 * 
 *     return stride             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_copy_data_to_temp')
 */
  __pyx_r = __pyx_v_stride;
  goto __pyx_L0;

  /* "View.MemoryView":1173
 * 
 * @cname('__pyx_fill_contig_strides_array')
 * cdef Py_ssize_t fill_contig_strides_array(             # <<<<<<<<<<<<<<
 *                 Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride,
 *                 int ndim, char order) nogil:
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "View.MemoryView":1194
 * 
 * @cname('__pyx_memoryview_copy_data_to_temp')
 * cdef void *copy_data_to_temp(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
 *                              __Pyx_memviewslice *tmpslice,
 *                              char order,
 */

static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_tmpslice, char __pyx_v_order, int __pyx_v_ndim) {
  int __pyx_v_i;
  void *__pyx_v_result;
  size_t __pyx_v_itemsize;
  size_t __pyx_v_size;
  void *__pyx_r;
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  struct __pyx_memoryview_obj *__pyx_t_4;
  int __pyx_t_5;

  /* "View.MemoryView":1205
 *     cdef void *result
 * 
 *     cdef size_t itemsize = src.memview.view.itemsize             # <<<<<<<<<<<<<<
 *     cdef size_t size = slice_get_size(src, ndim)
 * 
 */
  __pyx_t_1 = __pyx_v_src->memview->view.itemsize;
  __pyx_v_itemsize = __pyx_t_1;

  /* "View.MemoryView":1206
 * 
 *     cdef size_t itemsize = src.memview.view.itemsize
 *     cdef size_t size = slice_get_size(src, ndim)             # <<<<<<<<<<<<<<
 * 
 *     result = malloc(size)
 */
  __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim);

  /* "View.MemoryView":1208
 *     cdef size_t size = slice_get_size(src, ndim)
 * 
 *     result = malloc(size)             # <<<<<<<<<<<<<<
 *     if not result:
 *         _err(MemoryError, NULL)
 */
  __pyx_v_result = malloc(__pyx_v_size);

  /* "View.MemoryView":1209
 * 
 *     result = malloc(size)
 *     if not result:             # <<<<<<<<<<<<<<
 *         _err(MemoryError, NULL)
 * 
 */
  __pyx_t_2 = ((!(__pyx_v_result != 0)) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":1210
 *     result = malloc(size)
 *     if not result:
 *         _err(MemoryError, NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(4, 1210, __pyx_L1_error)

    /* "View.MemoryView":1209
 * 
 *     result = malloc(size)
 *     if not result:             # <<<<<<<<<<<<<<
 *         _err(MemoryError, NULL)
 * 
 */
  }

  /* "View.MemoryView":1213
 * 
 * 
 *     tmpslice.data = <char *> result             # <<<<<<<<<<<<<<
 *     tmpslice.memview = src.memview
 *     for i in range(ndim):
 */
  __pyx_v_tmpslice->data = ((char *)__pyx_v_result);

  /* "View.MemoryView":1214
 * 
 *     tmpslice.data = <char *> result
 *     tmpslice.memview = src.memview             # <<<<<<<<<<<<<<
 *     for i in range(ndim):
 *         tmpslice.shape[i] = src.shape[i]
 */
  __pyx_t_4 = __pyx_v_src->memview;
  __pyx_v_tmpslice->memview = __pyx_t_4;

  /* "View.MemoryView":1215
 *     tmpslice.data = <char *> result
 *     tmpslice.memview = src.memview
 *     for i in range(ndim):             # <<<<<<<<<<<<<<
 *         tmpslice.shape[i] = src.shape[i]
 *         tmpslice.suboffsets[i] = -1
 */
  __pyx_t_3 = __pyx_v_ndim;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "View.MemoryView":1216
 *     tmpslice.memview = src.memview
 *     for i in range(ndim):
 *         tmpslice.shape[i] = src.shape[i]             # <<<<<<<<<<<<<<
 *         tmpslice.suboffsets[i] = -1
 * 
 */
    (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]);

    /* "View.MemoryView":1217
 *     for i in range(ndim):
 *         tmpslice.shape[i] = src.shape[i]
 *         tmpslice.suboffsets[i] = -1             # <<<<<<<<<<<<<<
 * 
 *     fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize,
 */
    (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L;
  }

  /* "View.MemoryView":1219
 *         tmpslice.suboffsets[i] = -1
 * 
 *     fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize,             # <<<<<<<<<<<<<<
 *                               ndim, order)
 * 
 */
  __pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order);

  /* "View.MemoryView":1223
 * 
 * 
 *     for i in range(ndim):             # <<<<<<<<<<<<<<
 *         if tmpslice.shape[i] == 1:
 *             tmpslice.strides[i] = 0
 */
  __pyx_t_3 = __pyx_v_ndim;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "View.MemoryView":1224
 * 
 *     for i in range(ndim):
 *         if tmpslice.shape[i] == 1:             # <<<<<<<<<<<<<<
 *             tmpslice.strides[i] = 0
 * 
 */
    __pyx_t_2 = (((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":1225
 *     for i in range(ndim):
 *         if tmpslice.shape[i] == 1:
 *             tmpslice.strides[i] = 0             # <<<<<<<<<<<<<<
 * 
 *     if slice_is_contig(src[0], order, ndim):
 */
      (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0;

      /* "View.MemoryView":1224
 * 
 *     for i in range(ndim):
 *         if tmpslice.shape[i] == 1:             # <<<<<<<<<<<<<<
 *             tmpslice.strides[i] = 0
 * 
 */
    }
  }

  /* "View.MemoryView":1227
 *             tmpslice.strides[i] = 0
 * 
 *     if slice_is_contig(src[0], order, ndim):             # <<<<<<<<<<<<<<
 *         memcpy(result, src.data, size)
 *     else:
 */
  __pyx_t_2 = (__pyx_memviewslice_is_contig((__pyx_v_src[0]), __pyx_v_order, __pyx_v_ndim) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":1228
 * 
 *     if slice_is_contig(src[0], order, ndim):
 *         memcpy(result, src.data, size)             # <<<<<<<<<<<<<<
 *     else:
 *         copy_strided_to_strided(src, tmpslice, ndim, itemsize)
 */
    memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size);

    /* "View.MemoryView":1227
 *             tmpslice.strides[i] = 0
 * 
 *     if slice_is_contig(src[0], order, ndim):             # <<<<<<<<<<<<<<
 *         memcpy(result, src.data, size)
 *     else:
 */
    goto __pyx_L9;
  }

  /* "View.MemoryView":1230
 *         memcpy(result, src.data, size)
 *     else:
 *         copy_strided_to_strided(src, tmpslice, ndim, itemsize)             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
  /*else*/ {
    copy_strided_to_strided(__pyx_v_src, __pyx_v_tmpslice, __pyx_v_ndim, __pyx_v_itemsize);
  }
  __pyx_L9:;

  /* "View.MemoryView":1232
 *         copy_strided_to_strided(src, tmpslice, ndim, itemsize)
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "View.MemoryView":1194
 * 
 * @cname('__pyx_memoryview_copy_data_to_temp')
 * cdef void *copy_data_to_temp(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
 *                              __Pyx_memviewslice *tmpslice,
 *                              char order,
 */

  /* function exit code */
  __pyx_L1_error:;
  {
    #ifdef WITH_THREAD
    PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
    #endif
    __Pyx_AddTraceback("View.MemoryView.copy_data_to_temp", __pyx_clineno, __pyx_lineno, __pyx_filename);
    #ifdef WITH_THREAD
    __Pyx_PyGILState_Release(__pyx_gilstate_save);
    #endif
  }
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "View.MemoryView":1237
 * 
 * @cname('__pyx_memoryview_err_extents')
 * cdef int _err_extents(int i, Py_ssize_t extent1,             # <<<<<<<<<<<<<<
 *                              Py_ssize_t extent2) except -1 with gil:
 *     raise ValueError("got differing extents in dimension %d (got %d and %d)" %
 */

static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent1, Py_ssize_t __pyx_v_extent2) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("_err_extents", 0);

  /* "View.MemoryView":1240
 *                              Py_ssize_t extent2) except -1 with gil:
 *     raise ValueError("got differing extents in dimension %d (got %d and %d)" %
 *                                                         (i, extent1, extent2))             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_err_dim')
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;

  /* "View.MemoryView":1239
 * cdef int _err_extents(int i, Py_ssize_t extent1,
 *                              Py_ssize_t extent2) except -1 with gil:
 *     raise ValueError("got differing extents in dimension %d (got %d and %d)" %             # <<<<<<<<<<<<<<
 *                                                         (i, extent1, extent2))
 * 
 */
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_Raise(__pyx_t_3, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __PYX_ERR(4, 1239, __pyx_L1_error)

  /* "View.MemoryView":1237
 * 
 * @cname('__pyx_memoryview_err_extents')
 * cdef int _err_extents(int i, Py_ssize_t extent1,             # <<<<<<<<<<<<<<
 *                              Py_ssize_t extent2) except -1 with gil:
 *     raise ValueError("got differing extents in dimension %d (got %d and %d)" %
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("View.MemoryView._err_extents", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "View.MemoryView":1243
 * 
 * @cname('__pyx_memoryview_err_dim')
 * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil:             # <<<<<<<<<<<<<<
 *     raise error(msg.decode('ascii') % dim)
 * 
 */

static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, int __pyx_v_dim) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("_err_dim", 0);
  __Pyx_INCREF(__pyx_v_error);

  /* "View.MemoryView":1244
 * @cname('__pyx_memoryview_err_dim')
 * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil:
 *     raise error(msg.decode('ascii') % dim)             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_err')
 */
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_INCREF(__pyx_v_error);
  __pyx_t_3 = __pyx_v_error; __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1244, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1244, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1244, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(4, 1244, __pyx_L1_error)

  /* "View.MemoryView":1243
 * 
 * @cname('__pyx_memoryview_err_dim')
 * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil:             # <<<<<<<<<<<<<<
 *     raise error(msg.decode('ascii') % dim)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "View.MemoryView":1247
 * 
 * @cname('__pyx_memoryview_err')
 * cdef int _err(object error, char *msg) except -1 with gil:             # <<<<<<<<<<<<<<
 *     if msg != NULL:
 *         raise error(msg.decode('ascii'))
 */

static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("_err", 0);
  __Pyx_INCREF(__pyx_v_error);

  /* "View.MemoryView":1248
 * @cname('__pyx_memoryview_err')
 * cdef int _err(object error, char *msg) except -1 with gil:
 *     if msg != NULL:             # <<<<<<<<<<<<<<
 *         raise error(msg.decode('ascii'))
 *     else:
 */
  __pyx_t_1 = ((__pyx_v_msg != NULL) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":1249
 * cdef int _err(object error, char *msg) except -1 with gil:
 *     if msg != NULL:
 *         raise error(msg.decode('ascii'))             # <<<<<<<<<<<<<<
 *     else:
 *         raise error
 */
    __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_error);
    __pyx_t_4 = __pyx_v_error; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1249, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1249, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1249, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1249, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1249, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(4, 1249, __pyx_L1_error)

    /* "View.MemoryView":1248
 * @cname('__pyx_memoryview_err')
 * cdef int _err(object error, char *msg) except -1 with gil:
 *     if msg != NULL:             # <<<<<<<<<<<<<<
 *         raise error(msg.decode('ascii'))
 *     else:
 */
  }

  /* "View.MemoryView":1251
 *         raise error(msg.decode('ascii'))
 *     else:
 *         raise error             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_copy_contents')
 */
  /*else*/ {
    __Pyx_Raise(__pyx_v_error, 0, 0, 0);
    __PYX_ERR(4, 1251, __pyx_L1_error)
  }

  /* "View.MemoryView":1247
 * 
 * @cname('__pyx_memoryview_err')
 * cdef int _err(object error, char *msg) except -1 with gil:             # <<<<<<<<<<<<<<
 *     if msg != NULL:
 *         raise error(msg.decode('ascii'))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "View.MemoryView":1254
 * 
 * @cname('__pyx_memoryview_copy_contents')
 * cdef int memoryview_copy_contents(__Pyx_memviewslice src,             # <<<<<<<<<<<<<<
 *                                   __Pyx_memviewslice dst,
 *                                   int src_ndim, int dst_ndim,
 */

static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_memviewslice __pyx_v_dst, int __pyx_v_src_ndim, int __pyx_v_dst_ndim, int __pyx_v_dtype_is_object) {
  void *__pyx_v_tmpdata;
  size_t __pyx_v_itemsize;
  int __pyx_v_i;
  char __pyx_v_order;
  int __pyx_v_broadcasting;
  int __pyx_v_direct_copy;
  __Pyx_memviewslice __pyx_v_tmp;
  int __pyx_v_ndim;
  int __pyx_r;
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  void *__pyx_t_6;
  int __pyx_t_7;

  /* "View.MemoryView":1262
 *     Check for overlapping memory and verify the shapes.
 *     """
 *     cdef void *tmpdata = NULL             # <<<<<<<<<<<<<<
 *     cdef size_t itemsize = src.memview.view.itemsize
 *     cdef int i
 */
  __pyx_v_tmpdata = NULL;

  /* "View.MemoryView":1263
 *     """
 *     cdef void *tmpdata = NULL
 *     cdef size_t itemsize = src.memview.view.itemsize             # <<<<<<<<<<<<<<
 *     cdef int i
 *     cdef char order = get_best_order(&src, src_ndim)
 */
  __pyx_t_1 = __pyx_v_src.memview->view.itemsize;
  __pyx_v_itemsize = __pyx_t_1;

  /* "View.MemoryView":1265
 *     cdef size_t itemsize = src.memview.view.itemsize
 *     cdef int i
 *     cdef char order = get_best_order(&src, src_ndim)             # <<<<<<<<<<<<<<
 *     cdef bint broadcasting = False
 *     cdef bint direct_copy = False
 */
  __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim);

  /* "View.MemoryView":1266
 *     cdef int i
 *     cdef char order = get_best_order(&src, src_ndim)
 *     cdef bint broadcasting = False             # <<<<<<<<<<<<<<
 *     cdef bint direct_copy = False
 *     cdef __Pyx_memviewslice tmp
 */
  __pyx_v_broadcasting = 0;

  /* "View.MemoryView":1267
 *     cdef char order = get_best_order(&src, src_ndim)
 *     cdef bint broadcasting = False
 *     cdef bint direct_copy = False             # <<<<<<<<<<<<<<
 *     cdef __Pyx_memviewslice tmp
 * 
 */
  __pyx_v_direct_copy = 0;

  /* "View.MemoryView":1270
 *     cdef __Pyx_memviewslice tmp
 * 
 *     if src_ndim < dst_ndim:             # <<<<<<<<<<<<<<
 *         broadcast_leading(&src, src_ndim, dst_ndim)
 *     elif dst_ndim < src_ndim:
 */
  __pyx_t_2 = ((__pyx_v_src_ndim < __pyx_v_dst_ndim) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":1271
 * 
 *     if src_ndim < dst_ndim:
 *         broadcast_leading(&src, src_ndim, dst_ndim)             # <<<<<<<<<<<<<<
 *     elif dst_ndim < src_ndim:
 *         broadcast_leading(&dst, dst_ndim, src_ndim)
 */
    __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim);

    /* "View.MemoryView":1270
 *     cdef __Pyx_memviewslice tmp
 * 
 *     if src_ndim < dst_ndim:             # <<<<<<<<<<<<<<
 *         broadcast_leading(&src, src_ndim, dst_ndim)
 *     elif dst_ndim < src_ndim:
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":1272
 *     if src_ndim < dst_ndim:
 *         broadcast_leading(&src, src_ndim, dst_ndim)
 *     elif dst_ndim < src_ndim:             # <<<<<<<<<<<<<<
 *         broadcast_leading(&dst, dst_ndim, src_ndim)
 * 
 */
  __pyx_t_2 = ((__pyx_v_dst_ndim < __pyx_v_src_ndim) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":1273
 *         broadcast_leading(&src, src_ndim, dst_ndim)
 *     elif dst_ndim < src_ndim:
 *         broadcast_leading(&dst, dst_ndim, src_ndim)             # <<<<<<<<<<<<<<
 * 
 *     cdef int ndim = max(src_ndim, dst_ndim)
 */
    __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim);

    /* "View.MemoryView":1272
 *     if src_ndim < dst_ndim:
 *         broadcast_leading(&src, src_ndim, dst_ndim)
 *     elif dst_ndim < src_ndim:             # <<<<<<<<<<<<<<
 *         broadcast_leading(&dst, dst_ndim, src_ndim)
 * 
 */
  }
  __pyx_L3:;

  /* "View.MemoryView":1275
 *         broadcast_leading(&dst, dst_ndim, src_ndim)
 * 
 *     cdef int ndim = max(src_ndim, dst_ndim)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(ndim):
 */
  __pyx_t_3 = __pyx_v_dst_ndim;
  __pyx_t_4 = __pyx_v_src_ndim;
  if (((__pyx_t_3 > __pyx_t_4) != 0)) {
    __pyx_t_5 = __pyx_t_3;
  } else {
    __pyx_t_5 = __pyx_t_4;
  }
  __pyx_v_ndim = __pyx_t_5;

  /* "View.MemoryView":1277
 *     cdef int ndim = max(src_ndim, dst_ndim)
 * 
 *     for i in range(ndim):             # <<<<<<<<<<<<<<
 *         if src.shape[i] != dst.shape[i]:
 *             if src.shape[i] == 1:
 */
  __pyx_t_5 = __pyx_v_ndim;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_5; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "View.MemoryView":1278
 * 
 *     for i in range(ndim):
 *         if src.shape[i] != dst.shape[i]:             # <<<<<<<<<<<<<<
 *             if src.shape[i] == 1:
 *                 broadcasting = True
 */
    __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i])) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":1279
 *     for i in range(ndim):
 *         if src.shape[i] != dst.shape[i]:
 *             if src.shape[i] == 1:             # <<<<<<<<<<<<<<
 *                 broadcasting = True
 *                 src.strides[i] = 0
 */
      __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) == 1) != 0);
      if (__pyx_t_2) {

        /* "View.MemoryView":1280
 *         if src.shape[i] != dst.shape[i]:
 *             if src.shape[i] == 1:
 *                 broadcasting = True             # <<<<<<<<<<<<<<
 *                 src.strides[i] = 0
 *             else:
 */
        __pyx_v_broadcasting = 1;

        /* "View.MemoryView":1281
 *             if src.shape[i] == 1:
 *                 broadcasting = True
 *                 src.strides[i] = 0             # <<<<<<<<<<<<<<
 *             else:
 *                 _err_extents(i, dst.shape[i], src.shape[i])
 */
        (__pyx_v_src.strides[__pyx_v_i]) = 0;

        /* "View.MemoryView":1279
 *     for i in range(ndim):
 *         if src.shape[i] != dst.shape[i]:
 *             if src.shape[i] == 1:             # <<<<<<<<<<<<<<
 *                 broadcasting = True
 *                 src.strides[i] = 0
 */
        goto __pyx_L7;
      }

      /* "View.MemoryView":1283
 *                 src.strides[i] = 0
 *             else:
 *                 _err_extents(i, dst.shape[i], src.shape[i])             # <<<<<<<<<<<<<<
 * 
 *         if src.suboffsets[i] >= 0:
 */
      /*else*/ {
        __pyx_t_4 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(4, 1283, __pyx_L1_error)
      }
      __pyx_L7:;

      /* "View.MemoryView":1278
 * 
 *     for i in range(ndim):
 *         if src.shape[i] != dst.shape[i]:             # <<<<<<<<<<<<<<
 *             if src.shape[i] == 1:
 *                 broadcasting = True
 */
    }

    /* "View.MemoryView":1285
 *                 _err_extents(i, dst.shape[i], src.shape[i])
 * 
 *         if src.suboffsets[i] >= 0:             # <<<<<<<<<<<<<<
 *             _err_dim(ValueError, "Dimension %d is not direct", i)
 * 
 */
    __pyx_t_2 = (((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":1286
 * 
 *         if src.suboffsets[i] >= 0:
 *             _err_dim(ValueError, "Dimension %d is not direct", i)             # <<<<<<<<<<<<<<
 * 
 *     if slices_overlap(&src, &dst, ndim, itemsize):
 */
      __pyx_t_4 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Dimension %d is not direct"), __pyx_v_i); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(4, 1286, __pyx_L1_error)

      /* "View.MemoryView":1285
 *                 _err_extents(i, dst.shape[i], src.shape[i])
 * 
 *         if src.suboffsets[i] >= 0:             # <<<<<<<<<<<<<<
 *             _err_dim(ValueError, "Dimension %d is not direct", i)
 * 
 */
    }
  }

  /* "View.MemoryView":1288
 *             _err_dim(ValueError, "Dimension %d is not direct", i)
 * 
 *     if slices_overlap(&src, &dst, ndim, itemsize):             # <<<<<<<<<<<<<<
 * 
 *         if not slice_is_contig(src, order, ndim):
 */
  __pyx_t_2 = (__pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":1290
 *     if slices_overlap(&src, &dst, ndim, itemsize):
 * 
 *         if not slice_is_contig(src, order, ndim):             # <<<<<<<<<<<<<<
 *             order = get_best_order(&dst, ndim)
 * 
 */
    __pyx_t_2 = ((!(__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim) != 0)) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":1291
 * 
 *         if not slice_is_contig(src, order, ndim):
 *             order = get_best_order(&dst, ndim)             # <<<<<<<<<<<<<<
 * 
 *         tmpdata = copy_data_to_temp(&src, &tmp, order, ndim)
 */
      __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim);

      /* "View.MemoryView":1290
 *     if slices_overlap(&src, &dst, ndim, itemsize):
 * 
 *         if not slice_is_contig(src, order, ndim):             # <<<<<<<<<<<<<<
 *             order = get_best_order(&dst, ndim)
 * 
 */
    }

    /* "View.MemoryView":1293
 *             order = get_best_order(&dst, ndim)
 * 
 *         tmpdata = copy_data_to_temp(&src, &tmp, order, ndim)             # <<<<<<<<<<<<<<
 *         src = tmp
 * 
 */
    __pyx_t_6 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_6 == ((void *)NULL))) __PYX_ERR(4, 1293, __pyx_L1_error)
    __pyx_v_tmpdata = __pyx_t_6;

    /* "View.MemoryView":1294
 * 
 *         tmpdata = copy_data_to_temp(&src, &tmp, order, ndim)
 *         src = tmp             # <<<<<<<<<<<<<<
 * 
 *     if not broadcasting:
 */
    __pyx_v_src = __pyx_v_tmp;

    /* "View.MemoryView":1288
 *             _err_dim(ValueError, "Dimension %d is not direct", i)
 * 
 *     if slices_overlap(&src, &dst, ndim, itemsize):             # <<<<<<<<<<<<<<
 * 
 *         if not slice_is_contig(src, order, ndim):
 */
  }

  /* "View.MemoryView":1296
 *         src = tmp
 * 
 *     if not broadcasting:             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((!(__pyx_v_broadcasting != 0)) != 0);
  if (__pyx_t_2) {

    /* "View.MemoryView":1299
 * 
 * 
 *         if slice_is_contig(src, 'C', ndim):             # <<<<<<<<<<<<<<
 *             direct_copy = slice_is_contig(dst, 'C', ndim)
 *         elif slice_is_contig(src, 'F', ndim):
 */
    __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'C', __pyx_v_ndim) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":1300
 * 
 *         if slice_is_contig(src, 'C', ndim):
 *             direct_copy = slice_is_contig(dst, 'C', ndim)             # <<<<<<<<<<<<<<
 *         elif slice_is_contig(src, 'F', ndim):
 *             direct_copy = slice_is_contig(dst, 'F', ndim)
 */
      __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'C', __pyx_v_ndim);

      /* "View.MemoryView":1299
 * 
 * 
 *         if slice_is_contig(src, 'C', ndim):             # <<<<<<<<<<<<<<
 *             direct_copy = slice_is_contig(dst, 'C', ndim)
 *         elif slice_is_contig(src, 'F', ndim):
 */
      goto __pyx_L12;
    }

    /* "View.MemoryView":1301
 *         if slice_is_contig(src, 'C', ndim):
 *             direct_copy = slice_is_contig(dst, 'C', ndim)
 *         elif slice_is_contig(src, 'F', ndim):             # <<<<<<<<<<<<<<
 *             direct_copy = slice_is_contig(dst, 'F', ndim)
 * 
 */
    __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'F', __pyx_v_ndim) != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":1302
 *             direct_copy = slice_is_contig(dst, 'C', ndim)
 *         elif slice_is_contig(src, 'F', ndim):
 *             direct_copy = slice_is_contig(dst, 'F', ndim)             # <<<<<<<<<<<<<<
 * 
 *         if direct_copy:
 */
      __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'F', __pyx_v_ndim);

      /* "View.MemoryView":1301
 *         if slice_is_contig(src, 'C', ndim):
 *             direct_copy = slice_is_contig(dst, 'C', ndim)
 *         elif slice_is_contig(src, 'F', ndim):             # <<<<<<<<<<<<<<
 *             direct_copy = slice_is_contig(dst, 'F', ndim)
 * 
 */
    }
    __pyx_L12:;

    /* "View.MemoryView":1304
 *             direct_copy = slice_is_contig(dst, 'F', ndim)
 * 
 *         if direct_copy:             # <<<<<<<<<<<<<<
 * 
 *             refcount_copying(&dst, dtype_is_object, ndim, False)
 */
    __pyx_t_2 = (__pyx_v_direct_copy != 0);
    if (__pyx_t_2) {

      /* "View.MemoryView":1306
 *         if direct_copy:
 * 
 *             refcount_copying(&dst, dtype_is_object, ndim, False)             # <<<<<<<<<<<<<<
 *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))
 *             refcount_copying(&dst, dtype_is_object, ndim, True)
 */
      __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0);

      /* "View.MemoryView":1307
 * 
 *             refcount_copying(&dst, dtype_is_object, ndim, False)
 *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))             # <<<<<<<<<<<<<<
 *             refcount_copying(&dst, dtype_is_object, ndim, True)
 *             free(tmpdata)
 */
      memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim));

      /* "View.MemoryView":1308
 *             refcount_copying(&dst, dtype_is_object, ndim, False)
 *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))
 *             refcount_copying(&dst, dtype_is_object, ndim, True)             # <<<<<<<<<<<<<<
 *             free(tmpdata)
 *             return 0
 */
      __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1);

      /* "View.MemoryView":1309
 *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))
 *             refcount_copying(&dst, dtype_is_object, ndim, True)
 *             free(tmpdata)             # <<<<<<<<<<<<<<
 *             return 0
 * 
 */
      free(__pyx_v_tmpdata);

      /* "View.MemoryView":1310
 *             refcount_copying(&dst, dtype_is_object, ndim, True)
 *             free(tmpdata)
 *             return 0             # <<<<<<<<<<<<<<
 * 
 *     if order == 'F' == get_best_order(&dst, ndim):
 */
      __pyx_r = 0;
      goto __pyx_L0;

      /* "View.MemoryView":1304
 *             direct_copy = slice_is_contig(dst, 'F', ndim)
 * 
 *         if direct_copy:             # <<<<<<<<<<<<<<
 * 
 *             refcount_copying(&dst, dtype_is_object, ndim, False)
 */
    }

    /* "View.MemoryView":1296
 *         src = tmp
 * 
 *     if not broadcasting:             # <<<<<<<<<<<<<<
 * 
 * 
 */
  }

  /* "View.MemoryView":1312
 *             return 0
 * 
 *     if order == 'F' == get_best_order(&dst, ndim):             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = (__pyx_v_order == 'F');
  if (__pyx_t_2) {
    __pyx_t_2 = ('F' == __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim));
  }
  __pyx_t_7 = (__pyx_t_2 != 0);
  if (__pyx_t_7) {

    /* "View.MemoryView":1315
 * 
 * 
 *         transpose_memslice(&src)             # <<<<<<<<<<<<<<
 *         transpose_memslice(&dst)
 * 
 */
    __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(4, 1315, __pyx_L1_error)

    /* "View.MemoryView":1316
 * 
 *         transpose_memslice(&src)
 *         transpose_memslice(&dst)             # <<<<<<<<<<<<<<
 * 
 *     refcount_copying(&dst, dtype_is_object, ndim, False)
 */
    __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(4, 1316, __pyx_L1_error)

    /* "View.MemoryView":1312
 *             return 0
 * 
 *     if order == 'F' == get_best_order(&dst, ndim):             # <<<<<<<<<<<<<<
 * 
 * 
 */
  }

  /* "View.MemoryView":1318
 *         transpose_memslice(&dst)
 * 
 *     refcount_copying(&dst, dtype_is_object, ndim, False)             # <<<<<<<<<<<<<<
 *     copy_strided_to_strided(&src, &dst, ndim, itemsize)
 *     refcount_copying(&dst, dtype_is_object, ndim, True)
 */
  __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0);

  /* "View.MemoryView":1319
 * 
 *     refcount_copying(&dst, dtype_is_object, ndim, False)
 *     copy_strided_to_strided(&src, &dst, ndim, itemsize)             # <<<<<<<<<<<<<<
 *     refcount_copying(&dst, dtype_is_object, ndim, True)
 * 
 */
  copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize);

  /* "View.MemoryView":1320
 *     refcount_copying(&dst, dtype_is_object, ndim, False)
 *     copy_strided_to_strided(&src, &dst, ndim, itemsize)
 *     refcount_copying(&dst, dtype_is_object, ndim, True)             # <<<<<<<<<<<<<<
 * 
 *     free(tmpdata)
 */
  __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1);

  /* "View.MemoryView":1322
 *     refcount_copying(&dst, dtype_is_object, ndim, True)
 * 
 *     free(tmpdata)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  free(__pyx_v_tmpdata);

  /* "View.MemoryView":1323
 * 
 *     free(tmpdata)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_broadcast_leading')
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "View.MemoryView":1254
 * 
 * @cname('__pyx_memoryview_copy_contents')
 * cdef int memoryview_copy_contents(__Pyx_memviewslice src,             # <<<<<<<<<<<<<<
 *                                   __Pyx_memviewslice dst,
 *                                   int src_ndim, int dst_ndim,
 */

  /* function exit code */
  __pyx_L1_error:;
  {
    #ifdef WITH_THREAD
    PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
    #endif
    __Pyx_AddTraceback("View.MemoryView.memoryview_copy_contents", __pyx_clineno, __pyx_lineno, __pyx_filename);
    #ifdef WITH_THREAD
    __Pyx_PyGILState_Release(__pyx_gilstate_save);
    #endif
  }
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "View.MemoryView":1326
 * 
 * @cname('__pyx_memoryview_broadcast_leading')
 * cdef void broadcast_leading(__Pyx_memviewslice *mslice,             # <<<<<<<<<<<<<<
 *                             int ndim,
 *                             int ndim_other) nogil:
 */

static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim, int __pyx_v_ndim_other) {
  int __pyx_v_i;
  int __pyx_v_offset;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "View.MemoryView":1330
 *                             int ndim_other) nogil:
 *     cdef int i
 *     cdef int offset = ndim_other - ndim             # <<<<<<<<<<<<<<
 * 
 *     for i in range(ndim - 1, -1, -1):
 */
  __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim);

  /* "View.MemoryView":1332
 *     cdef int offset = ndim_other - ndim
 * 
 *     for i in range(ndim - 1, -1, -1):             # <<<<<<<<<<<<<<
 *         mslice.shape[i + offset] = mslice.shape[i]
 *         mslice.strides[i + offset] = mslice.strides[i]
 */
  for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1L; __pyx_t_1-=1) {
    __pyx_v_i = __pyx_t_1;

    /* "View.MemoryView":1333
 * 
 *     for i in range(ndim - 1, -1, -1):
 *         mslice.shape[i + offset] = mslice.shape[i]             # <<<<<<<<<<<<<<
 *         mslice.strides[i + offset] = mslice.strides[i]
 *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]
 */
    (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]);

    /* "View.MemoryView":1334
 *     for i in range(ndim - 1, -1, -1):
 *         mslice.shape[i + offset] = mslice.shape[i]
 *         mslice.strides[i + offset] = mslice.strides[i]             # <<<<<<<<<<<<<<
 *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]
 * 
 */
    (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]);

    /* "View.MemoryView":1335
 *         mslice.shape[i + offset] = mslice.shape[i]
 *         mslice.strides[i + offset] = mslice.strides[i]
 *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]             # <<<<<<<<<<<<<<
 * 
 *     for i in range(offset):
 */
    (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]);
  }

  /* "View.MemoryView":1337
 *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]
 * 
 *     for i in range(offset):             # <<<<<<<<<<<<<<
 *         mslice.shape[i] = 1
 *         mslice.strides[i] = mslice.strides[0]
 */
  __pyx_t_1 = __pyx_v_offset;
  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
    __pyx_v_i = __pyx_t_2;

    /* "View.MemoryView":1338
 * 
 *     for i in range(offset):
 *         mslice.shape[i] = 1             # <<<<<<<<<<<<<<
 *         mslice.strides[i] = mslice.strides[0]
 *         mslice.suboffsets[i] = -1
 */
    (__pyx_v_mslice->shape[__pyx_v_i]) = 1;

    /* "View.MemoryView":1339
 *     for i in range(offset):
 *         mslice.shape[i] = 1
 *         mslice.strides[i] = mslice.strides[0]             # <<<<<<<<<<<<<<
 *         mslice.suboffsets[i] = -1
 * 
 */
    (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]);

    /* "View.MemoryView":1340
 *         mslice.shape[i] = 1
 *         mslice.strides[i] = mslice.strides[0]
 *         mslice.suboffsets[i] = -1             # <<<<<<<<<<<<<<
 * 
 * 
 */
    (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L;
  }

  /* "View.MemoryView":1326
 * 
 * @cname('__pyx_memoryview_broadcast_leading')
 * cdef void broadcast_leading(__Pyx_memviewslice *mslice,             # <<<<<<<<<<<<<<
 *                             int ndim,
 *                             int ndim_other) nogil:
 */

  /* function exit code */
}

/* "View.MemoryView":1348
 * 
 * @cname('__pyx_memoryview_refcount_copying')
 * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object,             # <<<<<<<<<<<<<<
 *                            int ndim, bint inc) nogil:
 * 
 */

static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) {
  int __pyx_t_1;

  /* "View.MemoryView":1352
 * 
 * 
 *     if dtype_is_object:             # <<<<<<<<<<<<<<
 *         refcount_objects_in_slice_with_gil(dst.data, dst.shape,
 *                                            dst.strides, ndim, inc)
 */
  __pyx_t_1 = (__pyx_v_dtype_is_object != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":1353
 * 
 *     if dtype_is_object:
 *         refcount_objects_in_slice_with_gil(dst.data, dst.shape,             # <<<<<<<<<<<<<<
 *                                            dst.strides, ndim, inc)
 * 
 */
    __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc);

    /* "View.MemoryView":1352
 * 
 * 
 *     if dtype_is_object:             # <<<<<<<<<<<<<<
 *         refcount_objects_in_slice_with_gil(dst.data, dst.shape,
 *                                            dst.strides, ndim, inc)
 */
  }

  /* "View.MemoryView":1348
 * 
 * @cname('__pyx_memoryview_refcount_copying')
 * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object,             # <<<<<<<<<<<<<<
 *                            int ndim, bint inc) nogil:
 * 
 */

  /* function exit code */
}

/* "View.MemoryView":1357
 * 
 * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil')
 * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
 *                                              Py_ssize_t *strides, int ndim,
 *                                              bint inc) with gil:
 */

static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) {
  __Pyx_RefNannyDeclarations
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("refcount_objects_in_slice_with_gil", 0);

  /* "View.MemoryView":1360
 *                                              Py_ssize_t *strides, int ndim,
 *                                              bint inc) with gil:
 *     refcount_objects_in_slice(data, shape, strides, ndim, inc)             # <<<<<<<<<<<<<<
 * 
 * @cname('__pyx_memoryview_refcount_objects_in_slice')
 */
  __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc);

  /* "View.MemoryView":1357
 * 
 * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil')
 * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
 *                                              Py_ssize_t *strides, int ndim,
 *                                              bint inc) with gil:
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "View.MemoryView":1363
 * 
 * @cname('__pyx_memoryview_refcount_objects_in_slice')
 * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
 *                                     Py_ssize_t *strides, int ndim, bint inc):
 *     cdef Py_ssize_t i
 */

static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) {
  CYTHON_UNUSED Py_ssize_t __pyx_v_i;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("refcount_objects_in_slice", 0);

  /* "View.MemoryView":1367
 *     cdef Py_ssize_t i
 * 
 *     for i in range(shape[0]):             # <<<<<<<<<<<<<<
 *         if ndim == 1:
 *             if inc:
 */
  __pyx_t_1 = (__pyx_v_shape[0]);
  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
    __pyx_v_i = __pyx_t_2;

    /* "View.MemoryView":1368
 * 
 *     for i in range(shape[0]):
 *         if ndim == 1:             # <<<<<<<<<<<<<<
 *             if inc:
 *                 Py_INCREF((<PyObject **> data)[0])
 */
    __pyx_t_3 = ((__pyx_v_ndim == 1) != 0);
    if (__pyx_t_3) {

      /* "View.MemoryView":1369
 *     for i in range(shape[0]):
 *         if ndim == 1:
 *             if inc:             # <<<<<<<<<<<<<<
 *                 Py_INCREF((<PyObject **> data)[0])
 *             else:
 */
      __pyx_t_3 = (__pyx_v_inc != 0);
      if (__pyx_t_3) {

        /* "View.MemoryView":1370
 *         if ndim == 1:
 *             if inc:
 *                 Py_INCREF((<PyObject **> data)[0])             # <<<<<<<<<<<<<<
 *             else:
 *                 Py_DECREF((<PyObject **> data)[0])
 */
        Py_INCREF((((PyObject **)__pyx_v_data)[0]));

        /* "View.MemoryView":1369
 *     for i in range(shape[0]):
 *         if ndim == 1:
 *             if inc:             # <<<<<<<<<<<<<<
 *                 Py_INCREF((<PyObject **> data)[0])
 *             else:
 */
        goto __pyx_L6;
      }

      /* "View.MemoryView":1372
 *                 Py_INCREF((<PyObject **> data)[0])
 *             else:
 *                 Py_DECREF((<PyObject **> data)[0])             # <<<<<<<<<<<<<<
 *         else:
 *             refcount_objects_in_slice(data, shape + 1, strides + 1,
 */
      /*else*/ {
        Py_DECREF((((PyObject **)__pyx_v_data)[0]));
      }
      __pyx_L6:;

      /* "View.MemoryView":1368
 * 
 *     for i in range(shape[0]):
 *         if ndim == 1:             # <<<<<<<<<<<<<<
 *             if inc:
 *                 Py_INCREF((<PyObject **> data)[0])
 */
      goto __pyx_L5;
    }

    /* "View.MemoryView":1374
 *                 Py_DECREF((<PyObject **> data)[0])
 *         else:
 *             refcount_objects_in_slice(data, shape + 1, strides + 1,             # <<<<<<<<<<<<<<
 *                                       ndim - 1, inc)
 * 
 */
    /*else*/ {

      /* "View.MemoryView":1375
 *         else:
 *             refcount_objects_in_slice(data, shape + 1, strides + 1,
 *                                       ndim - 1, inc)             # <<<<<<<<<<<<<<
 * 
 *         data += strides[0]
 */
      __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_inc);
    }
    __pyx_L5:;

    /* "View.MemoryView":1377
 *                                       ndim - 1, inc)
 * 
 *         data += strides[0]             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_v_data = (__pyx_v_data + (__pyx_v_strides[0]));
  }

  /* "View.MemoryView":1363
 * 
 * @cname('__pyx_memoryview_refcount_objects_in_slice')
 * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
 *                                     Py_ssize_t *strides, int ndim, bint inc):
 *     cdef Py_ssize_t i
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "View.MemoryView":1383
 * 
 * @cname('__pyx_memoryview_slice_assign_scalar')
 * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim,             # <<<<<<<<<<<<<<
 *                               size_t itemsize, void *item,
 *                               bint dtype_is_object) nogil:
 */

static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) {

  /* "View.MemoryView":1386
 *                               size_t itemsize, void *item,
 *                               bint dtype_is_object) nogil:
 *     refcount_copying(dst, dtype_is_object, ndim, False)             # <<<<<<<<<<<<<<
 *     _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim,
 *                          itemsize, item)
 */
  __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0);

  /* "View.MemoryView":1387
 *                               bint dtype_is_object) nogil:
 *     refcount_copying(dst, dtype_is_object, ndim, False)
 *     _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim,             # <<<<<<<<<<<<<<
 *                          itemsize, item)
 *     refcount_copying(dst, dtype_is_object, ndim, True)
 */
  __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item);

  /* "View.MemoryView":1389
 *     _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim,
 *                          itemsize, item)
 *     refcount_copying(dst, dtype_is_object, ndim, True)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1);

  /* "View.MemoryView":1383
 * 
 * @cname('__pyx_memoryview_slice_assign_scalar')
 * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim,             # <<<<<<<<<<<<<<
 *                               size_t itemsize, void *item,
 *                               bint dtype_is_object) nogil:
 */

  /* function exit code */
}

/* "View.MemoryView":1393
 * 
 * @cname('__pyx_memoryview__slice_assign_scalar')
 * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
 *                               Py_ssize_t *strides, int ndim,
 *                               size_t itemsize, void *item) nogil:
 */

static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item) {
  CYTHON_UNUSED Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_stride;
  Py_ssize_t __pyx_v_extent;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;

  /* "View.MemoryView":1397
 *                               size_t itemsize, void *item) nogil:
 *     cdef Py_ssize_t i
 *     cdef Py_ssize_t stride = strides[0]             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t extent = shape[0]
 * 
 */
  __pyx_v_stride = (__pyx_v_strides[0]);

  /* "View.MemoryView":1398
 *     cdef Py_ssize_t i
 *     cdef Py_ssize_t stride = strides[0]
 *     cdef Py_ssize_t extent = shape[0]             # <<<<<<<<<<<<<<
 * 
 *     if ndim == 1:
 */
  __pyx_v_extent = (__pyx_v_shape[0]);

  /* "View.MemoryView":1400
 *     cdef Py_ssize_t extent = shape[0]
 * 
 *     if ndim == 1:             # <<<<<<<<<<<<<<
 *         for i in range(extent):
 *             memcpy(data, item, itemsize)
 */
  __pyx_t_1 = ((__pyx_v_ndim == 1) != 0);
  if (__pyx_t_1) {

    /* "View.MemoryView":1401
 * 
 *     if ndim == 1:
 *         for i in range(extent):             # <<<<<<<<<<<<<<
 *             memcpy(data, item, itemsize)
 *             data += stride
 */
    __pyx_t_2 = __pyx_v_extent;
    for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
      __pyx_v_i = __pyx_t_3;

      /* "View.MemoryView":1402
 *     if ndim == 1:
 *         for i in range(extent):
 *             memcpy(data, item, itemsize)             # <<<<<<<<<<<<<<
 *             data += stride
 *     else:
 */
      memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize);

      /* "View.MemoryView":1403
 *         for i in range(extent):
 *             memcpy(data, item, itemsize)
 *             data += stride             # <<<<<<<<<<<<<<
 *     else:
 *         for i in range(extent):
 */
      __pyx_v_data = (__pyx_v_data + __pyx_v_stride);
    }

    /* "View.MemoryView":1400
 *     cdef Py_ssize_t extent = shape[0]
 * 
 *     if ndim == 1:             # <<<<<<<<<<<<<<
 *         for i in range(extent):
 *             memcpy(data, item, itemsize)
 */
    goto __pyx_L3;
  }

  /* "View.MemoryView":1405
 *             data += stride
 *     else:
 *         for i in range(extent):             # <<<<<<<<<<<<<<
 *             _slice_assign_scalar(data, shape + 1, strides + 1,
 *                                 ndim - 1, itemsize, item)
 */
  /*else*/ {
    __pyx_t_2 = __pyx_v_extent;
    for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
      __pyx_v_i = __pyx_t_3;

      /* "View.MemoryView":1406
 *     else:
 *         for i in range(extent):
 *             _slice_assign_scalar(data, shape + 1, strides + 1,             # <<<<<<<<<<<<<<
 *                                 ndim - 1, itemsize, item)
 *             data += stride
 */
      __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item);

      /* "View.MemoryView":1408
 *             _slice_assign_scalar(data, shape + 1, strides + 1,
 *                                 ndim - 1, itemsize, item)
 *             data += stride             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_v_data = (__pyx_v_data + __pyx_v_stride);
    }
  }
  __pyx_L3:;

  /* "View.MemoryView":1393
 * 
 * @cname('__pyx_memoryview__slice_assign_scalar')
 * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
 *                               Py_ssize_t *strides, int ndim,
 *                               size_t itemsize, void *item) nogil:
 */

  /* function exit code */
}

/* "(tree fragment)":1
 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     if __pyx_checksum != 0xb068931:
 *         from pickle import PickleError as __pyx_PickleError
 */

/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_Enum (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 1); __PYX_ERR(4, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 2); __PYX_ERR(4, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Enum") < 0)) __PYX_ERR(4, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(4, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = NULL;
  PyObject *__pyx_v___pyx_result = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);

  /* "(tree fragment)":2
 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):
 *     if __pyx_checksum != 0xb068931:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xb068931) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":3
 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):
 *     if __pyx_checksum != 0xb068931:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
 *     __pyx_result = Enum.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 3, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 3, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 3, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":4
 *     if __pyx_checksum != 0xb068931:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = Enum.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 4, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 4, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 4, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 4, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 4, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 4, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 4, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(4, 4, __pyx_L1_error)

    /* "(tree fragment)":2
 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):
 *     if __pyx_checksum != 0xb068931:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":5
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
 *     __pyx_result = Enum.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 5, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 5, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 5, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v___pyx_type);
      __Pyx_GIVEREF(__pyx_v___pyx_type);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 5, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
 *     __pyx_result = Enum.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_7 = (__pyx_t_1 != 0);
  if (__pyx_t_7) {

    /* "(tree fragment)":7
 *     __pyx_result = Enum.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(4, 7, __pyx_L1_error)
    __pyx_t_3 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
 *     __pyx_result = Enum.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":8
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
 *     __pyx_result.name = __pyx_state[0]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     if __pyx_checksum != 0xb068931:
 *         from pickle import PickleError as __pyx_PickleError
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":9
 *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.name = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);

  /* "(tree fragment)":10
 *     return __pyx_result
 * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
 *     __pyx_result.name = __pyx_state[0]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(4, 10, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->name);
  __Pyx_DECREF(__pyx_v___pyx_result->name);
  __pyx_v___pyx_result->name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":11
 * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
 *     __pyx_result.name = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(4, 11, __pyx_L1_error)
  }
  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(4, 11, __pyx_L1_error)
  __pyx_t_4 = ((__pyx_t_3 > 1) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(4, 11, __pyx_L1_error)
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":12
 *     __pyx_result.name = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 12, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 12, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(4, 12, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 12, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 12, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 12, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 12, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 12, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 12, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":11
 * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
 *     __pyx_result.name = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  }

  /* "(tree fragment)":9
 *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.name = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "BufferFormatFromTypeInfo":1449
 * 
 * @cname('__pyx_format_from_typeinfo')
 * cdef bytes format_from_typeinfo(__Pyx_TypeInfo *type):             # <<<<<<<<<<<<<<
 *     cdef __Pyx_StructField *field
 *     cdef __pyx_typeinfo_string fmt
 */

static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) {
  __Pyx_StructField *__pyx_v_field;
  struct __pyx_typeinfo_string __pyx_v_fmt;
  PyObject *__pyx_v_part = 0;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_alignment = NULL;
  PyObject *__pyx_v_parts = NULL;
  PyObject *__pyx_v_extents = NULL;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_StructField *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  __Pyx_RefNannySetupContext("format_from_typeinfo", 0);

  /* "BufferFormatFromTypeInfo":1454
 *     cdef bytes part, result
 * 
 *     if type.typegroup == 'S':             # <<<<<<<<<<<<<<
 *         assert type.fields != NULL and type.fields.type != NULL
 * 
 */
  __pyx_t_1 = ((__pyx_v_type->typegroup == 'S') != 0);
  if (__pyx_t_1) {

    /* "BufferFormatFromTypeInfo":1455
 * 
 *     if type.typegroup == 'S':
 *         assert type.fields != NULL and type.fields.type != NULL             # <<<<<<<<<<<<<<
 * 
 *         if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT:
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      __pyx_t_2 = ((__pyx_v_type->fields != NULL) != 0);
      if (__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_2 = ((__pyx_v_type->fields->type != NULL) != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L4_bool_binop_done:;
      if (unlikely(!__pyx_t_1)) {
        PyErr_SetNone(PyExc_AssertionError);
        __PYX_ERR(4, 1455, __pyx_L1_error)
      }
    }
    #endif

    /* "BufferFormatFromTypeInfo":1457
 *         assert type.fields != NULL and type.fields.type != NULL
 * 
 *         if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT:             # <<<<<<<<<<<<<<
 *             alignment = b'^'
 *         else:
 */
    __pyx_t_1 = ((__pyx_v_type->flags & __PYX_BUF_FLAGS_PACKED_STRUCT) != 0);
    if (__pyx_t_1) {

      /* "BufferFormatFromTypeInfo":1458
 * 
 *         if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT:
 *             alignment = b'^'             # <<<<<<<<<<<<<<
 *         else:
 *             alignment = b''
 */
      __Pyx_INCREF(__pyx_kp_b__171);
      __pyx_v_alignment = __pyx_kp_b__171;

      /* "BufferFormatFromTypeInfo":1457
 *         assert type.fields != NULL and type.fields.type != NULL
 * 
 *         if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT:             # <<<<<<<<<<<<<<
 *             alignment = b'^'
 *         else:
 */
      goto __pyx_L6;
    }

    /* "BufferFormatFromTypeInfo":1460
 *             alignment = b'^'
 *         else:
 *             alignment = b''             # <<<<<<<<<<<<<<
 * 
 *         parts = [b"T{"]
 */
    /*else*/ {
      __Pyx_INCREF(__pyx_kp_b__83);
      __pyx_v_alignment = __pyx_kp_b__83;
    }
    __pyx_L6:;

    /* "BufferFormatFromTypeInfo":1462
 *             alignment = b''
 * 
 *         parts = [b"T{"]             # <<<<<<<<<<<<<<
 *         field = type.fields
 * 
 */
    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_kp_b_T);
    __Pyx_GIVEREF(__pyx_kp_b_T);
    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_kp_b_T);
    __pyx_v_parts = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "BufferFormatFromTypeInfo":1463
 * 
 *         parts = [b"T{"]
 *         field = type.fields             # <<<<<<<<<<<<<<
 * 
 *         while field.type:
 */
    __pyx_t_4 = __pyx_v_type->fields;
    __pyx_v_field = __pyx_t_4;

    /* "BufferFormatFromTypeInfo":1465
 *         field = type.fields
 * 
 *         while field.type:             # <<<<<<<<<<<<<<
 *             part = format_from_typeinfo(field.type)
 *             parts.append(part + b':' + field.name + b':')
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_field->type != 0);
      if (!__pyx_t_1) break;

      /* "BufferFormatFromTypeInfo":1466
 * 
 *         while field.type:
 *             part = format_from_typeinfo(field.type)             # <<<<<<<<<<<<<<
 *             parts.append(part + b':' + field.name + b':')
 *             field += 1
 */
      __pyx_t_3 = __pyx_format_from_typeinfo(__pyx_v_field->type); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1466, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XDECREF_SET(__pyx_v_part, ((PyObject*)__pyx_t_3));
      __pyx_t_3 = 0;

      /* "BufferFormatFromTypeInfo":1467
 *         while field.type:
 *             part = format_from_typeinfo(field.type)
 *             parts.append(part + b':' + field.name + b':')             # <<<<<<<<<<<<<<
 *             field += 1
 * 
 */
      __pyx_t_3 = PyNumber_Add(__pyx_v_part, __pyx_kp_b__172); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_field->name); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__172); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_parts, __pyx_t_5); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(4, 1467, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "BufferFormatFromTypeInfo":1468
 *             part = format_from_typeinfo(field.type)
 *             parts.append(part + b':' + field.name + b':')
 *             field += 1             # <<<<<<<<<<<<<<
 * 
 *         result = alignment.join(parts) + b'}'
 */
      __pyx_v_field = (__pyx_v_field + 1);
    }

    /* "BufferFormatFromTypeInfo":1470
 *             field += 1
 * 
 *         result = alignment.join(parts) + b'}'             # <<<<<<<<<<<<<<
 *     else:
 *         fmt = __Pyx_TypeInfoToFormat(type)
 */
    __pyx_t_5 = __Pyx_PyBytes_Join(__pyx_v_alignment, __pyx_v_parts); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1470, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_kp_b__173); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1470, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!(likely(PyBytes_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(4, 1470, __pyx_L1_error)
    __pyx_v_result = ((PyObject*)__pyx_t_6);
    __pyx_t_6 = 0;

    /* "BufferFormatFromTypeInfo":1454
 *     cdef bytes part, result
 * 
 *     if type.typegroup == 'S':             # <<<<<<<<<<<<<<
 *         assert type.fields != NULL and type.fields.type != NULL
 * 
 */
    goto __pyx_L3;
  }

  /* "BufferFormatFromTypeInfo":1472
 *         result = alignment.join(parts) + b'}'
 *     else:
 *         fmt = __Pyx_TypeInfoToFormat(type)             # <<<<<<<<<<<<<<
 *         if type.arraysize[0]:
 *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]
 */
  /*else*/ {
    __pyx_v_fmt = __Pyx_TypeInfoToFormat(__pyx_v_type);

    /* "BufferFormatFromTypeInfo":1473
 *     else:
 *         fmt = __Pyx_TypeInfoToFormat(type)
 *         if type.arraysize[0]:             # <<<<<<<<<<<<<<
 *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]
 *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string
 */
    __pyx_t_1 = ((__pyx_v_type->arraysize[0]) != 0);
    if (__pyx_t_1) {

      /* "BufferFormatFromTypeInfo":1474
 *         fmt = __Pyx_TypeInfoToFormat(type)
 *         if type.arraysize[0]:
 *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]             # <<<<<<<<<<<<<<
 *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string
 *         else:
 */
      __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1474, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __pyx_v_type->ndim;
      for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
        __pyx_v_i = __pyx_t_9;
        __pyx_t_5 = __Pyx_PyInt_FromSize_t((__pyx_v_type->arraysize[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1474, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1474, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1474, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_5))) __PYX_ERR(4, 1474, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_v_extents = ((PyObject*)__pyx_t_6);
      __pyx_t_6 = 0;

      /* "BufferFormatFromTypeInfo":1475
 *         if type.arraysize[0]:
 *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]
 *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string             # <<<<<<<<<<<<<<
 *         else:
 *             result = fmt.string
 */
      __pyx_t_6 = PyUnicode_Join(__pyx_kp_u__120, __pyx_v_extents); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1475, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_s, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1475, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyUnicode_AsASCIIString(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1475, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_fmt.string); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1475, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyNumber_Add(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1475, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (!(likely(PyBytes_CheckExact(__pyx_t_3))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(4, 1475, __pyx_L1_error)
      __pyx_v_result = ((PyObject*)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "BufferFormatFromTypeInfo":1473
 *     else:
 *         fmt = __Pyx_TypeInfoToFormat(type)
 *         if type.arraysize[0]:             # <<<<<<<<<<<<<<
 *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]
 *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string
 */
      goto __pyx_L9;
    }

    /* "BufferFormatFromTypeInfo":1477
 *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string
 *         else:
 *             result = fmt.string             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
    /*else*/ {
      __pyx_t_3 = __Pyx_PyObject_FromString(__pyx_v_fmt.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1477, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_v_result = ((PyObject*)__pyx_t_3);
      __pyx_t_3 = 0;
    }
    __pyx_L9:;
  }
  __pyx_L3:;

  /* "BufferFormatFromTypeInfo":1479
 *             result = fmt.string
 * 
 *     return result             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "BufferFormatFromTypeInfo":1449
 * 
 * @cname('__pyx_format_from_typeinfo')
 * cdef bytes format_from_typeinfo(__Pyx_TypeInfo *type):             # <<<<<<<<<<<<<<
 *     cdef __Pyx_StructField *field
 *     cdef __pyx_typeinfo_string fmt
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("BufferFormatFromTypeInfo.format_from_typeinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_part);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_alignment);
  __Pyx_XDECREF(__pyx_v_parts);
  __Pyx_XDECREF(__pyx_v_extents);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVFS __pyx_vtable_9mujoco_py_4cymj_PyMjVFS;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVFS(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjVFS;
  p->_filesize = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVFS(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_3__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_filesize);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjVFS(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)o;
  if (p->_filesize) {
    e = (*v)(((PyObject *)p->_filesize), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjVFS(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *)o;
  tmp = ((PyObject*)p->_filesize);
  p->_filesize = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_7PyMjVFS_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_7PyMjVFS_nfile(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_5nfile_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_7PyMjVFS_nfile(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_5nfile_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_7PyMjVFS_filesize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_7PyMjVFS_8filesize_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjVFS[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_7PyMjVFS_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjVFS[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_7PyMjVFS_uintptr, 0, (char *)0, 0},
  {(char *)"nfile", __pyx_getprop_9mujoco_py_4cymj_7PyMjVFS_nfile, __pyx_setprop_9mujoco_py_4cymj_7PyMjVFS_nfile, (char *)0, 0},
  {(char *)"filesize", __pyx_getprop_9mujoco_py_4cymj_7PyMjVFS_filesize, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjVFS = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjVFS", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVFS, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjVFS, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjVFS, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjVFS, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjVFS, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjVFS, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjOption __pyx_vtable_9mujoco_py_4cymj_PyMjOption;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjOption(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjOption;
  p->_gravity = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_wind = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_magnetic = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_o_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_o_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_10PyMjOption_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjOption(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_gravity);
  Py_CLEAR(p->_wind);
  Py_CLEAR(p->_magnetic);
  Py_CLEAR(p->_o_solref);
  Py_CLEAR(p->_o_solimp);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjOption(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)o;
  if (p->_gravity) {
    e = (*v)(((PyObject *)p->_gravity), a); if (e) return e;
  }
  if (p->_wind) {
    e = (*v)(((PyObject *)p->_wind), a); if (e) return e;
  }
  if (p->_magnetic) {
    e = (*v)(((PyObject *)p->_magnetic), a); if (e) return e;
  }
  if (p->_o_solref) {
    e = (*v)(((PyObject *)p->_o_solref), a); if (e) return e;
  }
  if (p->_o_solimp) {
    e = (*v)(((PyObject *)p->_o_solimp), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjOption(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)o;
  tmp = ((PyObject*)p->_gravity);
  p->_gravity = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_wind);
  p->_wind = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_magnetic);
  p->_magnetic = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_o_solref);
  p->_o_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_o_solimp);
  p->_o_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_timestep(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8timestep_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_timestep(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8timestep_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_apirate(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7apirate_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_apirate(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7apirate_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_impratio(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8impratio_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_impratio(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8impratio_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_tolerance(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9tolerance_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_tolerance(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9tolerance_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_noslip_tolerance(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_noslip_tolerance(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_16noslip_tolerance_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_mpr_tolerance(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_mpr_tolerance(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_13mpr_tolerance_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_density(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7density_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_density(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7density_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_viscosity(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9viscosity_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_viscosity(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9viscosity_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_o_margin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_margin_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_o_margin(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_margin_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_integrator(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_10integrator_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_integrator(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_10integrator_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_collision(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9collision_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_collision(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9collision_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_impedance(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9impedance_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_impedance(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9impedance_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_reference(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9reference_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_reference(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_9reference_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_cone(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_4cone_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_cone(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_4cone_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_jacobian(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8jacobian_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_jacobian(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8jacobian_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_solver(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_6solver_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_solver(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_6solver_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_iterations(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_10iterations_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_iterations(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_10iterations_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_noslip_iterations(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_noslip_iterations(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_17noslip_iterations_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_mpr_iterations(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_mpr_iterations(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_14mpr_iterations_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_disableflags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_12disableflags_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_disableflags(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_12disableflags_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_enableflags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_11enableflags_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_enableflags(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_11enableflags_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_gravity(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_7gravity_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_wind(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_4wind_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_magnetic(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8magnetic_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_o_solref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_solref_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjOption_o_solimp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjOption_8o_solimp_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjOption[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10PyMjOption_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10PyMjOption_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjOption[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_uintptr, 0, (char *)0, 0},
  {(char *)"timestep", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_timestep, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_timestep, (char *)0, 0},
  {(char *)"apirate", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_apirate, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_apirate, (char *)0, 0},
  {(char *)"impratio", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_impratio, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_impratio, (char *)0, 0},
  {(char *)"tolerance", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_tolerance, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_tolerance, (char *)0, 0},
  {(char *)"noslip_tolerance", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_noslip_tolerance, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_noslip_tolerance, (char *)0, 0},
  {(char *)"mpr_tolerance", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_mpr_tolerance, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_mpr_tolerance, (char *)0, 0},
  {(char *)"density", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_density, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_density, (char *)0, 0},
  {(char *)"viscosity", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_viscosity, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_viscosity, (char *)0, 0},
  {(char *)"o_margin", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_o_margin, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_o_margin, (char *)0, 0},
  {(char *)"integrator", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_integrator, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_integrator, (char *)0, 0},
  {(char *)"collision", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_collision, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_collision, (char *)0, 0},
  {(char *)"impedance", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_impedance, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_impedance, (char *)0, 0},
  {(char *)"reference", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_reference, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_reference, (char *)0, 0},
  {(char *)"cone", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_cone, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_cone, (char *)0, 0},
  {(char *)"jacobian", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_jacobian, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_jacobian, (char *)0, 0},
  {(char *)"solver", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_solver, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_solver, (char *)0, 0},
  {(char *)"iterations", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_iterations, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_iterations, (char *)0, 0},
  {(char *)"noslip_iterations", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_noslip_iterations, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_noslip_iterations, (char *)0, 0},
  {(char *)"mpr_iterations", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_mpr_iterations, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_mpr_iterations, (char *)0, 0},
  {(char *)"disableflags", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_disableflags, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_disableflags, (char *)0, 0},
  {(char *)"enableflags", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_enableflags, __pyx_setprop_9mujoco_py_4cymj_10PyMjOption_enableflags, (char *)0, 0},
  {(char *)"gravity", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_gravity, 0, (char *)0, 0},
  {(char *)"wind", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_wind, 0, (char *)0, 0},
  {(char *)"magnetic", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_magnetic, 0, (char *)0, 0},
  {(char *)"o_solref", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_o_solref, 0, (char *)0, 0},
  {(char *)"o_solimp", __pyx_getprop_9mujoco_py_4cymj_10PyMjOption_o_solimp, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjOption = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjOption", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjOption, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjOption, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjOption, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjOption, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjOption, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjOption, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual __pyx_vtable_9mujoco_py_4cymj_PyMjVisual;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual;
  p->_global_ = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)Py_None); Py_INCREF(Py_None);
  p->_quality = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)Py_None); Py_INCREF(Py_None);
  p->_headlight = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)Py_None); Py_INCREF(Py_None);
  p->_map = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)Py_None); Py_INCREF(Py_None);
  p->_scale = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)Py_None); Py_INCREF(Py_None);
  p->_rgba = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_global_);
  Py_CLEAR(p->_quality);
  Py_CLEAR(p->_headlight);
  Py_CLEAR(p->_map);
  Py_CLEAR(p->_scale);
  Py_CLEAR(p->_rgba);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjVisual(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)o;
  if (p->_global_) {
    e = (*v)(((PyObject *)p->_global_), a); if (e) return e;
  }
  if (p->_quality) {
    e = (*v)(((PyObject *)p->_quality), a); if (e) return e;
  }
  if (p->_headlight) {
    e = (*v)(((PyObject *)p->_headlight), a); if (e) return e;
  }
  if (p->_map) {
    e = (*v)(((PyObject *)p->_map), a); if (e) return e;
  }
  if (p->_scale) {
    e = (*v)(((PyObject *)p->_scale), a); if (e) return e;
  }
  if (p->_rgba) {
    e = (*v)(((PyObject *)p->_rgba), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjVisual(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)o;
  tmp = ((PyObject*)p->_global_);
  p->_global_ = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_quality);
  p->_quality = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_headlight);
  p->_headlight = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_map);
  p->_map = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_scale);
  p->_scale = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_rgba);
  p->_rgba = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjVisual_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_global_(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjVisual_7global__1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_quality(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjVisual_7quality_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_headlight(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjVisual_9headlight_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_map(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjVisual_3map_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_scale(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjVisual_5scale_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_rgba(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjVisual_4rgba_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjVisual[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10PyMjVisual_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjVisual[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_uintptr, 0, (char *)0, 0},
  {(char *)"global_", __pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_global_, 0, (char *)0, 0},
  {(char *)"quality", __pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_quality, 0, (char *)0, 0},
  {(char *)"headlight", __pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_headlight, 0, (char *)0, 0},
  {(char *)"map", __pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_map, 0, (char *)0, 0},
  {(char *)"scale", __pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_scale, 0, (char *)0, 0},
  {(char *)"rgba", __pyx_getprop_9mujoco_py_4cymj_10PyMjVisual_rgba, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjVisual = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjVisual", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjVisual, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjVisual, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjVisual, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjVisual, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjVisual, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_global_ __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_global_;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_global_(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_global_;
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_global_(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__fovy(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4fovy_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__fovy(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4fovy_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__ipd(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__3ipd_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__ipd(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__3ipd_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__linewidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__linewidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9linewidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__glow(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4glow_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__glow(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__4glow_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__offwidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__offwidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__8offwidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__offheight(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9offheight_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__offheight(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__9offheight_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjVisual_global_[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_global__5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_global_[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__uintptr, 0, (char *)0, 0},
  {(char *)"fovy", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__fovy, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__fovy, (char *)0, 0},
  {(char *)"ipd", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__ipd, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__ipd, (char *)0, 0},
  {(char *)"linewidth", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__linewidth, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__linewidth, (char *)0, 0},
  {(char *)"glow", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__glow, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__glow, (char *)0, 0},
  {(char *)"offwidth", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__offwidth, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__offwidth, (char *)0, 0},
  {(char *)"offheight", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_global__offheight, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_global__offheight, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjVisual_global_ = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjVisual_global_", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_global_, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjVisual_global_, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_global_, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_global_, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_quality __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_quality;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_quality(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_quality;
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_quality(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_shadowsize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_shadowsize(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10shadowsize_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_offsamples(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_offsamples(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_10offsamples_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_numslices(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_numslices(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numslices_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_numstacks(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_numstacks(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numstacks_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_numarrows(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_numarrows(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_9numarrows_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_numquads(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_numquads(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_8numquads_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjVisual_quality[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_18PyMjVisual_quality_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_quality[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_uintptr, 0, (char *)0, 0},
  {(char *)"shadowsize", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_shadowsize, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_shadowsize, (char *)0, 0},
  {(char *)"offsamples", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_offsamples, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_offsamples, (char *)0, 0},
  {(char *)"numslices", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_numslices, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_numslices, (char *)0, 0},
  {(char *)"numstacks", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_numstacks, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_numstacks, (char *)0, 0},
  {(char *)"numarrows", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_numarrows, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_numarrows, (char *)0, 0},
  {(char *)"numquads", __pyx_getprop_9mujoco_py_4cymj_18PyMjVisual_quality_numquads, __pyx_setprop_9mujoco_py_4cymj_18PyMjVisual_quality_numquads, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjVisual_quality = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjVisual_quality", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_quality, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjVisual_quality, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_quality, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_quality, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_headlight __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_headlight;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_headlight(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_headlight;
  p->_ambient = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_diffuse = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_specular = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_headlight(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_ambient);
  Py_CLEAR(p->_diffuse);
  Py_CLEAR(p->_specular);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjVisual_headlight(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)o;
  if (p->_ambient) {
    e = (*v)(((PyObject *)p->_ambient), a); if (e) return e;
  }
  if (p->_diffuse) {
    e = (*v)(((PyObject *)p->_diffuse), a); if (e) return e;
  }
  if (p->_specular) {
    e = (*v)(((PyObject *)p->_specular), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjVisual_headlight(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *)o;
  tmp = ((PyObject*)p->_ambient);
  p->_ambient = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_diffuse);
  p->_diffuse = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_specular);
  p->_specular = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_active(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_6active_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_20PyMjVisual_headlight_active(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_6active_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_ambient(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_7ambient_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_diffuse(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_7diffuse_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_specular(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_8specular_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjVisual_headlight[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_20PyMjVisual_headlight_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_headlight[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_uintptr, 0, (char *)0, 0},
  {(char *)"active", __pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_active, __pyx_setprop_9mujoco_py_4cymj_20PyMjVisual_headlight_active, (char *)0, 0},
  {(char *)"ambient", __pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_ambient, 0, (char *)0, 0},
  {(char *)"diffuse", __pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_diffuse, 0, (char *)0, 0},
  {(char *)"specular", __pyx_getprop_9mujoco_py_4cymj_20PyMjVisual_headlight_specular, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjVisual_headlight = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjVisual_headlight", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_headlight, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjVisual_headlight, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjVisual_headlight, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjVisual_headlight, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_headlight, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_headlight, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_map __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_map;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_map(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_map;
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_map(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_stiffness(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_stiffness(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_9stiffness_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_stiffnessrot(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_stiffnessrot(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_12stiffnessrot_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_force(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5force_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_force(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5force_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_torque(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6torque_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_torque(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6torque_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_alpha(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5alpha_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_alpha(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5alpha_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_fogstart(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_fogstart(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_8fogstart_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_fogend(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6fogend_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_fogend(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_6fogend_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_znear(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5znear_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_znear(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5znear_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_zfar(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_4zfar_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_zfar(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_4zfar_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_shadowclip(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_shadowclip(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_10shadowclip_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_shadowscale(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_shadowscale(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_11shadowscale_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjVisual_map[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_14PyMjVisual_map_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_map[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_uintptr, 0, (char *)0, 0},
  {(char *)"stiffness", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_stiffness, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_stiffness, (char *)0, 0},
  {(char *)"stiffnessrot", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_stiffnessrot, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_stiffnessrot, (char *)0, 0},
  {(char *)"force", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_force, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_force, (char *)0, 0},
  {(char *)"torque", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_torque, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_torque, (char *)0, 0},
  {(char *)"alpha", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_alpha, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_alpha, (char *)0, 0},
  {(char *)"fogstart", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_fogstart, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_fogstart, (char *)0, 0},
  {(char *)"fogend", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_fogend, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_fogend, (char *)0, 0},
  {(char *)"znear", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_znear, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_znear, (char *)0, 0},
  {(char *)"zfar", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_zfar, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_zfar, (char *)0, 0},
  {(char *)"shadowclip", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_shadowclip, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_shadowclip, (char *)0, 0},
  {(char *)"shadowscale", __pyx_getprop_9mujoco_py_4cymj_14PyMjVisual_map_shadowscale, __pyx_setprop_9mujoco_py_4cymj_14PyMjVisual_map_shadowscale, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjVisual_map = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjVisual_map", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_map, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjVisual_map, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_map, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_map, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_scale __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_scale;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_scale(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_scale;
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_scale(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_forcewidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_forcewidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10forcewidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_contactwidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_contactwidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_12contactwidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_contactheight(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_contactheight(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13contactheight_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_connect(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_7connect_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_connect(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_7connect_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_com(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_3com_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_com(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_3com_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_camera(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_6camera_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_camera(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_6camera_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_light(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_5light_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_light(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_5light_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_selectpoint(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_selectpoint(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11selectpoint_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_jointlength(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_jointlength(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11jointlength_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_jointwidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_jointwidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10jointwidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_actuatorlength(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_actuatorlength(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_14actuatorlength_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_actuatorwidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_actuatorwidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_13actuatorwidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_framelength(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_framelength(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11framelength_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_framewidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_framewidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10framewidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_constraint(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_constraint(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_10constraint_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_slidercrank(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_slidercrank(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_11slidercrank_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjVisual_scale[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_16PyMjVisual_scale_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_scale[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_uintptr, 0, (char *)0, 0},
  {(char *)"forcewidth", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_forcewidth, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_forcewidth, (char *)0, 0},
  {(char *)"contactwidth", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_contactwidth, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_contactwidth, (char *)0, 0},
  {(char *)"contactheight", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_contactheight, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_contactheight, (char *)0, 0},
  {(char *)"connect", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_connect, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_connect, (char *)0, 0},
  {(char *)"com", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_com, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_com, (char *)0, 0},
  {(char *)"camera", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_camera, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_camera, (char *)0, 0},
  {(char *)"light", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_light, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_light, (char *)0, 0},
  {(char *)"selectpoint", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_selectpoint, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_selectpoint, (char *)0, 0},
  {(char *)"jointlength", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_jointlength, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_jointlength, (char *)0, 0},
  {(char *)"jointwidth", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_jointwidth, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_jointwidth, (char *)0, 0},
  {(char *)"actuatorlength", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_actuatorlength, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_actuatorlength, (char *)0, 0},
  {(char *)"actuatorwidth", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_actuatorwidth, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_actuatorwidth, (char *)0, 0},
  {(char *)"framelength", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_framelength, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_framelength, (char *)0, 0},
  {(char *)"framewidth", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_framewidth, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_framewidth, (char *)0, 0},
  {(char *)"constraint", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_constraint, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_constraint, (char *)0, 0},
  {(char *)"slidercrank", __pyx_getprop_9mujoco_py_4cymj_16PyMjVisual_scale_slidercrank, __pyx_setprop_9mujoco_py_4cymj_16PyMjVisual_scale_slidercrank, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjVisual_scale = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjVisual_scale", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_scale, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjVisual_scale, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_scale, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_scale, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjVisual_rgba __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_rgba;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_rgba(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_rgba;
  p->_fog = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_force = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_inertia = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_joint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_com = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_camera = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_selectpoint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_connect = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_contactpoint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_contactforce = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_contactfriction = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_contacttorque = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_constraint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_slidercrank = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_crankbroken = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_rgba(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_fog);
  Py_CLEAR(p->_force);
  Py_CLEAR(p->_inertia);
  Py_CLEAR(p->_joint);
  Py_CLEAR(p->_actuator);
  Py_CLEAR(p->_com);
  Py_CLEAR(p->_camera);
  Py_CLEAR(p->_light);
  Py_CLEAR(p->_selectpoint);
  Py_CLEAR(p->_connect);
  Py_CLEAR(p->_contactpoint);
  Py_CLEAR(p->_contactforce);
  Py_CLEAR(p->_contactfriction);
  Py_CLEAR(p->_contacttorque);
  Py_CLEAR(p->_constraint);
  Py_CLEAR(p->_slidercrank);
  Py_CLEAR(p->_crankbroken);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjVisual_rgba(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)o;
  if (p->_fog) {
    e = (*v)(((PyObject *)p->_fog), a); if (e) return e;
  }
  if (p->_force) {
    e = (*v)(((PyObject *)p->_force), a); if (e) return e;
  }
  if (p->_inertia) {
    e = (*v)(((PyObject *)p->_inertia), a); if (e) return e;
  }
  if (p->_joint) {
    e = (*v)(((PyObject *)p->_joint), a); if (e) return e;
  }
  if (p->_actuator) {
    e = (*v)(((PyObject *)p->_actuator), a); if (e) return e;
  }
  if (p->_com) {
    e = (*v)(((PyObject *)p->_com), a); if (e) return e;
  }
  if (p->_camera) {
    e = (*v)(((PyObject *)p->_camera), a); if (e) return e;
  }
  if (p->_light) {
    e = (*v)(((PyObject *)p->_light), a); if (e) return e;
  }
  if (p->_selectpoint) {
    e = (*v)(((PyObject *)p->_selectpoint), a); if (e) return e;
  }
  if (p->_connect) {
    e = (*v)(((PyObject *)p->_connect), a); if (e) return e;
  }
  if (p->_contactpoint) {
    e = (*v)(((PyObject *)p->_contactpoint), a); if (e) return e;
  }
  if (p->_contactforce) {
    e = (*v)(((PyObject *)p->_contactforce), a); if (e) return e;
  }
  if (p->_contactfriction) {
    e = (*v)(((PyObject *)p->_contactfriction), a); if (e) return e;
  }
  if (p->_contacttorque) {
    e = (*v)(((PyObject *)p->_contacttorque), a); if (e) return e;
  }
  if (p->_constraint) {
    e = (*v)(((PyObject *)p->_constraint), a); if (e) return e;
  }
  if (p->_slidercrank) {
    e = (*v)(((PyObject *)p->_slidercrank), a); if (e) return e;
  }
  if (p->_crankbroken) {
    e = (*v)(((PyObject *)p->_crankbroken), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjVisual_rgba(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *)o;
  tmp = ((PyObject*)p->_fog);
  p->_fog = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_force);
  p->_force = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_inertia);
  p->_inertia = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_joint);
  p->_joint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator);
  p->_actuator = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_com);
  p->_com = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_camera);
  p->_camera = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light);
  p->_light = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_selectpoint);
  p->_selectpoint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_connect);
  p->_connect = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_contactpoint);
  p->_contactpoint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_contactforce);
  p->_contactforce = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_contactfriction);
  p->_contactfriction = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_contacttorque);
  p->_contacttorque = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_constraint);
  p->_constraint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_slidercrank);
  p->_slidercrank = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_crankbroken);
  p->_crankbroken = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_fog(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_3fog_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_force(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5force_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_inertia(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_7inertia_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_joint(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5joint_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_actuator(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_8actuator_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_com(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_3com_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_camera(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_6camera_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_light(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5light_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_selectpoint(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_11selectpoint_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_connect(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_7connect_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_contactpoint(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactpoint_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_contactforce(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_12contactforce_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_contactfriction(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_15contactfriction_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_contacttorque(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_13contacttorque_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_constraint(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_10constraint_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_slidercrank(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_11slidercrank_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_crankbroken(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_11crankbroken_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjVisual_rgba[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15PyMjVisual_rgba_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_rgba[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_uintptr, 0, (char *)0, 0},
  {(char *)"fog", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_fog, 0, (char *)0, 0},
  {(char *)"force", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_force, 0, (char *)0, 0},
  {(char *)"inertia", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_inertia, 0, (char *)0, 0},
  {(char *)"joint", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_joint, 0, (char *)0, 0},
  {(char *)"actuator", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_actuator, 0, (char *)0, 0},
  {(char *)"com", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_com, 0, (char *)0, 0},
  {(char *)"camera", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_camera, 0, (char *)0, 0},
  {(char *)"light", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_light, 0, (char *)0, 0},
  {(char *)"selectpoint", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_selectpoint, 0, (char *)0, 0},
  {(char *)"connect", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_connect, 0, (char *)0, 0},
  {(char *)"contactpoint", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_contactpoint, 0, (char *)0, 0},
  {(char *)"contactforce", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_contactforce, 0, (char *)0, 0},
  {(char *)"contactfriction", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_contactfriction, 0, (char *)0, 0},
  {(char *)"contacttorque", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_contacttorque, 0, (char *)0, 0},
  {(char *)"constraint", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_constraint, 0, (char *)0, 0},
  {(char *)"slidercrank", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_slidercrank, 0, (char *)0, 0},
  {(char *)"crankbroken", __pyx_getprop_9mujoco_py_4cymj_15PyMjVisual_rgba_crankbroken, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjVisual_rgba = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjVisual_rgba", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjVisual_rgba, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjVisual_rgba, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjVisual_rgba, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjVisual_rgba, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjVisual_rgba, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjVisual_rgba, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjStatistic __pyx_vtable_9mujoco_py_4cymj_PyMjStatistic;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjStatistic(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjStatistic;
  p->_center = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjStatistic(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_center);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjStatistic(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)o;
  if (p->_center) {
    e = (*v)(((PyObject *)p->_center), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjStatistic(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)o;
  tmp = ((PyObject*)p->_center);
  p->_center = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_meaninertia(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjStatistic_meaninertia(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_11meaninertia_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_meanmass(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meanmass_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjStatistic_meanmass(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meanmass_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_meansize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meansize_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjStatistic_meansize(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_8meansize_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_extent(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_6extent_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjStatistic_extent(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_6extent_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_center(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_6center_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjStatistic[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_13PyMjStatistic_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjStatistic[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_uintptr, 0, (char *)0, 0},
  {(char *)"meaninertia", __pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_meaninertia, __pyx_setprop_9mujoco_py_4cymj_13PyMjStatistic_meaninertia, (char *)0, 0},
  {(char *)"meanmass", __pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_meanmass, __pyx_setprop_9mujoco_py_4cymj_13PyMjStatistic_meanmass, (char *)0, 0},
  {(char *)"meansize", __pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_meansize, __pyx_setprop_9mujoco_py_4cymj_13PyMjStatistic_meansize, (char *)0, 0},
  {(char *)"extent", __pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_extent, __pyx_setprop_9mujoco_py_4cymj_13PyMjStatistic_extent, (char *)0, 0},
  {(char *)"center", __pyx_getprop_9mujoco_py_4cymj_13PyMjStatistic_center, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjStatistic = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjStatistic", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjStatistic, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjStatistic, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjStatistic, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjStatistic, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjStatistic, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjStatistic, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjModel __pyx_vtable_9mujoco_py_4cymj_PyMjModel;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjModel(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjModel;
  p->_opt = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)Py_None); Py_INCREF(Py_None);
  p->_vis = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)Py_None); Py_INCREF(Py_None);
  p->_stat = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)Py_None); Py_INCREF(Py_None);
  p->_qpos0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qpos_spring = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_parentid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_rootid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_weldid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_mocapid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_jntnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_jntadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_dofnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_dofadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_geomnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_geomadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_ipos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_iquat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_mass = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_subtreemass = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_inertia = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_invweight0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_body_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_qposadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_dofadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_limited = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_axis = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_stiffness = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_range = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_jnt_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_jntid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_parentid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_Madr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_frictionloss = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_armature = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_damping = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dof_invweight0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_contype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_conaffinity = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_condim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_dataid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_matid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_group = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_solmix = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_rbound = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_friction = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_gap = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_matid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_group = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_mode = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_targetbodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_poscom0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_pos0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_mat0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_fovy = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_ipd = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_mode = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_targetbodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_directional = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_castshadow = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_active = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_dir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_poscom0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_pos0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_dir0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_attenuation = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_cutoff = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_exponent = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_ambient = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_diffuse = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_specular = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mesh_faceadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mesh_facenum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mesh_vertadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mesh_vertnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mesh_graphadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mesh_vert = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mesh_normal = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mesh_face = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mesh_graph = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_hfield_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_hfield_nrow = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_hfield_ncol = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_hfield_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_hfield_data = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tex_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tex_height = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tex_width = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tex_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tex_rgb = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mat_texid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mat_texuniform = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mat_texrepeat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mat_emission = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mat_specular = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mat_shininess = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mat_reflectance = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mat_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pair_dim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pair_geom1 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pair_geom2 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pair_signature = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pair_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pair_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pair_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pair_gap = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pair_friction = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_exclude_signature = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_eq_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_eq_obj1id = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_eq_obj2id = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_eq_active = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_eq_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_eq_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_eq_data = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_num = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_matid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_limited = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_width = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_solref_lim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_solimp_lim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_solref_fri = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_solimp_fri = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_range = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_stiffness = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_damping = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_frictionloss = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_lengthspring = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_length0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_invweight0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tendon_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_wrap_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_wrap_objid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_wrap_prm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_trntype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_dyntype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_gaintype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_biastype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_trnid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_ctrllimited = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_forcelimited = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_dynprm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_gainprm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_biasprm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_ctrlrange = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_forcerange = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_gear = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_cranklength = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_invweight0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_length0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_lengthrange = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_datatype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_needstage = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_objtype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_objid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_dim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_cutoff = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_noise = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensor_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_numeric_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_numeric_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_numeric_data = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_text_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_text_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_text_data = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tuple_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tuple_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tuple_objtype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tuple_objid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_tuple_objprm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_key_time = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_key_qpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_key_qvel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_key_act = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_bodyadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_jntadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_geomadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_siteadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_camadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_lightadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_meshadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_hfieldadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_texadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_matadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_eqadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_tendonadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_actuatoradr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_sensoradr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_numericadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_textadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_name_tupleadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_names = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->body_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->joint_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->geom_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->site_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->light_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->camera_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->actuator_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->sensor_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_body_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_joint_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_geom_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_site_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_light_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_camera_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_actuator_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_sensor_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_body_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_joint_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_geom_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_site_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_light_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_camera_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_actuator_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_sensor_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->userdata_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_userdata_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_userdata_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjModel(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_9mujoco_py_4cymj_9PyMjModel_43__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_opt);
  Py_CLEAR(p->_vis);
  Py_CLEAR(p->_stat);
  Py_CLEAR(p->_qpos0);
  Py_CLEAR(p->_qpos_spring);
  Py_CLEAR(p->_body_parentid);
  Py_CLEAR(p->_body_rootid);
  Py_CLEAR(p->_body_weldid);
  Py_CLEAR(p->_body_mocapid);
  Py_CLEAR(p->_body_jntnum);
  Py_CLEAR(p->_body_jntadr);
  Py_CLEAR(p->_body_dofnum);
  Py_CLEAR(p->_body_dofadr);
  Py_CLEAR(p->_body_geomnum);
  Py_CLEAR(p->_body_geomadr);
  Py_CLEAR(p->_body_pos);
  Py_CLEAR(p->_body_quat);
  Py_CLEAR(p->_body_ipos);
  Py_CLEAR(p->_body_iquat);
  Py_CLEAR(p->_body_mass);
  Py_CLEAR(p->_body_subtreemass);
  Py_CLEAR(p->_body_inertia);
  Py_CLEAR(p->_body_invweight0);
  Py_CLEAR(p->_body_user);
  Py_CLEAR(p->_jnt_type);
  Py_CLEAR(p->_jnt_qposadr);
  Py_CLEAR(p->_jnt_dofadr);
  Py_CLEAR(p->_jnt_bodyid);
  Py_CLEAR(p->_jnt_limited);
  Py_CLEAR(p->_jnt_solref);
  Py_CLEAR(p->_jnt_solimp);
  Py_CLEAR(p->_jnt_pos);
  Py_CLEAR(p->_jnt_axis);
  Py_CLEAR(p->_jnt_stiffness);
  Py_CLEAR(p->_jnt_range);
  Py_CLEAR(p->_jnt_margin);
  Py_CLEAR(p->_jnt_user);
  Py_CLEAR(p->_dof_bodyid);
  Py_CLEAR(p->_dof_jntid);
  Py_CLEAR(p->_dof_parentid);
  Py_CLEAR(p->_dof_Madr);
  Py_CLEAR(p->_dof_solref);
  Py_CLEAR(p->_dof_solimp);
  Py_CLEAR(p->_dof_frictionloss);
  Py_CLEAR(p->_dof_armature);
  Py_CLEAR(p->_dof_damping);
  Py_CLEAR(p->_dof_invweight0);
  Py_CLEAR(p->_geom_type);
  Py_CLEAR(p->_geom_contype);
  Py_CLEAR(p->_geom_conaffinity);
  Py_CLEAR(p->_geom_condim);
  Py_CLEAR(p->_geom_bodyid);
  Py_CLEAR(p->_geom_dataid);
  Py_CLEAR(p->_geom_matid);
  Py_CLEAR(p->_geom_group);
  Py_CLEAR(p->_geom_solmix);
  Py_CLEAR(p->_geom_solref);
  Py_CLEAR(p->_geom_solimp);
  Py_CLEAR(p->_geom_size);
  Py_CLEAR(p->_geom_rbound);
  Py_CLEAR(p->_geom_pos);
  Py_CLEAR(p->_geom_quat);
  Py_CLEAR(p->_geom_friction);
  Py_CLEAR(p->_geom_margin);
  Py_CLEAR(p->_geom_gap);
  Py_CLEAR(p->_geom_user);
  Py_CLEAR(p->_geom_rgba);
  Py_CLEAR(p->_site_type);
  Py_CLEAR(p->_site_bodyid);
  Py_CLEAR(p->_site_matid);
  Py_CLEAR(p->_site_group);
  Py_CLEAR(p->_site_size);
  Py_CLEAR(p->_site_pos);
  Py_CLEAR(p->_site_quat);
  Py_CLEAR(p->_site_user);
  Py_CLEAR(p->_site_rgba);
  Py_CLEAR(p->_cam_mode);
  Py_CLEAR(p->_cam_bodyid);
  Py_CLEAR(p->_cam_targetbodyid);
  Py_CLEAR(p->_cam_pos);
  Py_CLEAR(p->_cam_quat);
  Py_CLEAR(p->_cam_poscom0);
  Py_CLEAR(p->_cam_pos0);
  Py_CLEAR(p->_cam_mat0);
  Py_CLEAR(p->_cam_fovy);
  Py_CLEAR(p->_cam_ipd);
  Py_CLEAR(p->_cam_user);
  Py_CLEAR(p->_light_mode);
  Py_CLEAR(p->_light_bodyid);
  Py_CLEAR(p->_light_targetbodyid);
  Py_CLEAR(p->_light_directional);
  Py_CLEAR(p->_light_castshadow);
  Py_CLEAR(p->_light_active);
  Py_CLEAR(p->_light_pos);
  Py_CLEAR(p->_light_dir);
  Py_CLEAR(p->_light_poscom0);
  Py_CLEAR(p->_light_pos0);
  Py_CLEAR(p->_light_dir0);
  Py_CLEAR(p->_light_attenuation);
  Py_CLEAR(p->_light_cutoff);
  Py_CLEAR(p->_light_exponent);
  Py_CLEAR(p->_light_ambient);
  Py_CLEAR(p->_light_diffuse);
  Py_CLEAR(p->_light_specular);
  Py_CLEAR(p->_mesh_faceadr);
  Py_CLEAR(p->_mesh_facenum);
  Py_CLEAR(p->_mesh_vertadr);
  Py_CLEAR(p->_mesh_vertnum);
  Py_CLEAR(p->_mesh_graphadr);
  Py_CLEAR(p->_mesh_vert);
  Py_CLEAR(p->_mesh_normal);
  Py_CLEAR(p->_mesh_face);
  Py_CLEAR(p->_mesh_graph);
  Py_CLEAR(p->_hfield_size);
  Py_CLEAR(p->_hfield_nrow);
  Py_CLEAR(p->_hfield_ncol);
  Py_CLEAR(p->_hfield_adr);
  Py_CLEAR(p->_hfield_data);
  Py_CLEAR(p->_tex_type);
  Py_CLEAR(p->_tex_height);
  Py_CLEAR(p->_tex_width);
  Py_CLEAR(p->_tex_adr);
  Py_CLEAR(p->_tex_rgb);
  Py_CLEAR(p->_mat_texid);
  Py_CLEAR(p->_mat_texuniform);
  Py_CLEAR(p->_mat_texrepeat);
  Py_CLEAR(p->_mat_emission);
  Py_CLEAR(p->_mat_specular);
  Py_CLEAR(p->_mat_shininess);
  Py_CLEAR(p->_mat_reflectance);
  Py_CLEAR(p->_mat_rgba);
  Py_CLEAR(p->_pair_dim);
  Py_CLEAR(p->_pair_geom1);
  Py_CLEAR(p->_pair_geom2);
  Py_CLEAR(p->_pair_signature);
  Py_CLEAR(p->_pair_solref);
  Py_CLEAR(p->_pair_solimp);
  Py_CLEAR(p->_pair_margin);
  Py_CLEAR(p->_pair_gap);
  Py_CLEAR(p->_pair_friction);
  Py_CLEAR(p->_exclude_signature);
  Py_CLEAR(p->_eq_type);
  Py_CLEAR(p->_eq_obj1id);
  Py_CLEAR(p->_eq_obj2id);
  Py_CLEAR(p->_eq_active);
  Py_CLEAR(p->_eq_solref);
  Py_CLEAR(p->_eq_solimp);
  Py_CLEAR(p->_eq_data);
  Py_CLEAR(p->_tendon_adr);
  Py_CLEAR(p->_tendon_num);
  Py_CLEAR(p->_tendon_matid);
  Py_CLEAR(p->_tendon_limited);
  Py_CLEAR(p->_tendon_width);
  Py_CLEAR(p->_tendon_solref_lim);
  Py_CLEAR(p->_tendon_solimp_lim);
  Py_CLEAR(p->_tendon_solref_fri);
  Py_CLEAR(p->_tendon_solimp_fri);
  Py_CLEAR(p->_tendon_range);
  Py_CLEAR(p->_tendon_margin);
  Py_CLEAR(p->_tendon_stiffness);
  Py_CLEAR(p->_tendon_damping);
  Py_CLEAR(p->_tendon_frictionloss);
  Py_CLEAR(p->_tendon_lengthspring);
  Py_CLEAR(p->_tendon_length0);
  Py_CLEAR(p->_tendon_invweight0);
  Py_CLEAR(p->_tendon_user);
  Py_CLEAR(p->_tendon_rgba);
  Py_CLEAR(p->_wrap_type);
  Py_CLEAR(p->_wrap_objid);
  Py_CLEAR(p->_wrap_prm);
  Py_CLEAR(p->_actuator_trntype);
  Py_CLEAR(p->_actuator_dyntype);
  Py_CLEAR(p->_actuator_gaintype);
  Py_CLEAR(p->_actuator_biastype);
  Py_CLEAR(p->_actuator_trnid);
  Py_CLEAR(p->_actuator_ctrllimited);
  Py_CLEAR(p->_actuator_forcelimited);
  Py_CLEAR(p->_actuator_dynprm);
  Py_CLEAR(p->_actuator_gainprm);
  Py_CLEAR(p->_actuator_biasprm);
  Py_CLEAR(p->_actuator_ctrlrange);
  Py_CLEAR(p->_actuator_forcerange);
  Py_CLEAR(p->_actuator_gear);
  Py_CLEAR(p->_actuator_cranklength);
  Py_CLEAR(p->_actuator_invweight0);
  Py_CLEAR(p->_actuator_length0);
  Py_CLEAR(p->_actuator_lengthrange);
  Py_CLEAR(p->_actuator_user);
  Py_CLEAR(p->_sensor_type);
  Py_CLEAR(p->_sensor_datatype);
  Py_CLEAR(p->_sensor_needstage);
  Py_CLEAR(p->_sensor_objtype);
  Py_CLEAR(p->_sensor_objid);
  Py_CLEAR(p->_sensor_dim);
  Py_CLEAR(p->_sensor_adr);
  Py_CLEAR(p->_sensor_cutoff);
  Py_CLEAR(p->_sensor_noise);
  Py_CLEAR(p->_sensor_user);
  Py_CLEAR(p->_numeric_adr);
  Py_CLEAR(p->_numeric_size);
  Py_CLEAR(p->_numeric_data);
  Py_CLEAR(p->_text_adr);
  Py_CLEAR(p->_text_size);
  Py_CLEAR(p->_text_data);
  Py_CLEAR(p->_tuple_adr);
  Py_CLEAR(p->_tuple_size);
  Py_CLEAR(p->_tuple_objtype);
  Py_CLEAR(p->_tuple_objid);
  Py_CLEAR(p->_tuple_objprm);
  Py_CLEAR(p->_key_time);
  Py_CLEAR(p->_key_qpos);
  Py_CLEAR(p->_key_qvel);
  Py_CLEAR(p->_key_act);
  Py_CLEAR(p->_name_bodyadr);
  Py_CLEAR(p->_name_jntadr);
  Py_CLEAR(p->_name_geomadr);
  Py_CLEAR(p->_name_siteadr);
  Py_CLEAR(p->_name_camadr);
  Py_CLEAR(p->_name_lightadr);
  Py_CLEAR(p->_name_meshadr);
  Py_CLEAR(p->_name_hfieldadr);
  Py_CLEAR(p->_name_texadr);
  Py_CLEAR(p->_name_matadr);
  Py_CLEAR(p->_name_eqadr);
  Py_CLEAR(p->_name_tendonadr);
  Py_CLEAR(p->_name_actuatoradr);
  Py_CLEAR(p->_name_sensoradr);
  Py_CLEAR(p->_name_numericadr);
  Py_CLEAR(p->_name_textadr);
  Py_CLEAR(p->_name_tupleadr);
  Py_CLEAR(p->_names);
  Py_CLEAR(p->body_names);
  Py_CLEAR(p->joint_names);
  Py_CLEAR(p->geom_names);
  Py_CLEAR(p->site_names);
  Py_CLEAR(p->light_names);
  Py_CLEAR(p->camera_names);
  Py_CLEAR(p->actuator_names);
  Py_CLEAR(p->sensor_names);
  Py_CLEAR(p->_body_id2name);
  Py_CLEAR(p->_joint_id2name);
  Py_CLEAR(p->_geom_id2name);
  Py_CLEAR(p->_site_id2name);
  Py_CLEAR(p->_light_id2name);
  Py_CLEAR(p->_camera_id2name);
  Py_CLEAR(p->_actuator_id2name);
  Py_CLEAR(p->_sensor_id2name);
  Py_CLEAR(p->_body_name2id);
  Py_CLEAR(p->_joint_name2id);
  Py_CLEAR(p->_geom_name2id);
  Py_CLEAR(p->_site_name2id);
  Py_CLEAR(p->_light_name2id);
  Py_CLEAR(p->_camera_name2id);
  Py_CLEAR(p->_actuator_name2id);
  Py_CLEAR(p->_sensor_name2id);
  Py_CLEAR(p->userdata_names);
  Py_CLEAR(p->_userdata_id2name);
  Py_CLEAR(p->_userdata_name2id);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjModel(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)o;
  if (p->_opt) {
    e = (*v)(((PyObject *)p->_opt), a); if (e) return e;
  }
  if (p->_vis) {
    e = (*v)(((PyObject *)p->_vis), a); if (e) return e;
  }
  if (p->_stat) {
    e = (*v)(((PyObject *)p->_stat), a); if (e) return e;
  }
  if (p->_qpos0) {
    e = (*v)(((PyObject *)p->_qpos0), a); if (e) return e;
  }
  if (p->_qpos_spring) {
    e = (*v)(((PyObject *)p->_qpos_spring), a); if (e) return e;
  }
  if (p->_body_parentid) {
    e = (*v)(((PyObject *)p->_body_parentid), a); if (e) return e;
  }
  if (p->_body_rootid) {
    e = (*v)(((PyObject *)p->_body_rootid), a); if (e) return e;
  }
  if (p->_body_weldid) {
    e = (*v)(((PyObject *)p->_body_weldid), a); if (e) return e;
  }
  if (p->_body_mocapid) {
    e = (*v)(((PyObject *)p->_body_mocapid), a); if (e) return e;
  }
  if (p->_body_jntnum) {
    e = (*v)(((PyObject *)p->_body_jntnum), a); if (e) return e;
  }
  if (p->_body_jntadr) {
    e = (*v)(((PyObject *)p->_body_jntadr), a); if (e) return e;
  }
  if (p->_body_dofnum) {
    e = (*v)(((PyObject *)p->_body_dofnum), a); if (e) return e;
  }
  if (p->_body_dofadr) {
    e = (*v)(((PyObject *)p->_body_dofadr), a); if (e) return e;
  }
  if (p->_body_geomnum) {
    e = (*v)(((PyObject *)p->_body_geomnum), a); if (e) return e;
  }
  if (p->_body_geomadr) {
    e = (*v)(((PyObject *)p->_body_geomadr), a); if (e) return e;
  }
  if (p->_body_pos) {
    e = (*v)(((PyObject *)p->_body_pos), a); if (e) return e;
  }
  if (p->_body_quat) {
    e = (*v)(((PyObject *)p->_body_quat), a); if (e) return e;
  }
  if (p->_body_ipos) {
    e = (*v)(((PyObject *)p->_body_ipos), a); if (e) return e;
  }
  if (p->_body_iquat) {
    e = (*v)(((PyObject *)p->_body_iquat), a); if (e) return e;
  }
  if (p->_body_mass) {
    e = (*v)(((PyObject *)p->_body_mass), a); if (e) return e;
  }
  if (p->_body_subtreemass) {
    e = (*v)(((PyObject *)p->_body_subtreemass), a); if (e) return e;
  }
  if (p->_body_inertia) {
    e = (*v)(((PyObject *)p->_body_inertia), a); if (e) return e;
  }
  if (p->_body_invweight0) {
    e = (*v)(((PyObject *)p->_body_invweight0), a); if (e) return e;
  }
  if (p->_body_user) {
    e = (*v)(((PyObject *)p->_body_user), a); if (e) return e;
  }
  if (p->_jnt_type) {
    e = (*v)(((PyObject *)p->_jnt_type), a); if (e) return e;
  }
  if (p->_jnt_qposadr) {
    e = (*v)(((PyObject *)p->_jnt_qposadr), a); if (e) return e;
  }
  if (p->_jnt_dofadr) {
    e = (*v)(((PyObject *)p->_jnt_dofadr), a); if (e) return e;
  }
  if (p->_jnt_bodyid) {
    e = (*v)(((PyObject *)p->_jnt_bodyid), a); if (e) return e;
  }
  if (p->_jnt_limited) {
    e = (*v)(((PyObject *)p->_jnt_limited), a); if (e) return e;
  }
  if (p->_jnt_solref) {
    e = (*v)(((PyObject *)p->_jnt_solref), a); if (e) return e;
  }
  if (p->_jnt_solimp) {
    e = (*v)(((PyObject *)p->_jnt_solimp), a); if (e) return e;
  }
  if (p->_jnt_pos) {
    e = (*v)(((PyObject *)p->_jnt_pos), a); if (e) return e;
  }
  if (p->_jnt_axis) {
    e = (*v)(((PyObject *)p->_jnt_axis), a); if (e) return e;
  }
  if (p->_jnt_stiffness) {
    e = (*v)(((PyObject *)p->_jnt_stiffness), a); if (e) return e;
  }
  if (p->_jnt_range) {
    e = (*v)(((PyObject *)p->_jnt_range), a); if (e) return e;
  }
  if (p->_jnt_margin) {
    e = (*v)(((PyObject *)p->_jnt_margin), a); if (e) return e;
  }
  if (p->_jnt_user) {
    e = (*v)(((PyObject *)p->_jnt_user), a); if (e) return e;
  }
  if (p->_dof_bodyid) {
    e = (*v)(((PyObject *)p->_dof_bodyid), a); if (e) return e;
  }
  if (p->_dof_jntid) {
    e = (*v)(((PyObject *)p->_dof_jntid), a); if (e) return e;
  }
  if (p->_dof_parentid) {
    e = (*v)(((PyObject *)p->_dof_parentid), a); if (e) return e;
  }
  if (p->_dof_Madr) {
    e = (*v)(((PyObject *)p->_dof_Madr), a); if (e) return e;
  }
  if (p->_dof_solref) {
    e = (*v)(((PyObject *)p->_dof_solref), a); if (e) return e;
  }
  if (p->_dof_solimp) {
    e = (*v)(((PyObject *)p->_dof_solimp), a); if (e) return e;
  }
  if (p->_dof_frictionloss) {
    e = (*v)(((PyObject *)p->_dof_frictionloss), a); if (e) return e;
  }
  if (p->_dof_armature) {
    e = (*v)(((PyObject *)p->_dof_armature), a); if (e) return e;
  }
  if (p->_dof_damping) {
    e = (*v)(((PyObject *)p->_dof_damping), a); if (e) return e;
  }
  if (p->_dof_invweight0) {
    e = (*v)(((PyObject *)p->_dof_invweight0), a); if (e) return e;
  }
  if (p->_geom_type) {
    e = (*v)(((PyObject *)p->_geom_type), a); if (e) return e;
  }
  if (p->_geom_contype) {
    e = (*v)(((PyObject *)p->_geom_contype), a); if (e) return e;
  }
  if (p->_geom_conaffinity) {
    e = (*v)(((PyObject *)p->_geom_conaffinity), a); if (e) return e;
  }
  if (p->_geom_condim) {
    e = (*v)(((PyObject *)p->_geom_condim), a); if (e) return e;
  }
  if (p->_geom_bodyid) {
    e = (*v)(((PyObject *)p->_geom_bodyid), a); if (e) return e;
  }
  if (p->_geom_dataid) {
    e = (*v)(((PyObject *)p->_geom_dataid), a); if (e) return e;
  }
  if (p->_geom_matid) {
    e = (*v)(((PyObject *)p->_geom_matid), a); if (e) return e;
  }
  if (p->_geom_group) {
    e = (*v)(((PyObject *)p->_geom_group), a); if (e) return e;
  }
  if (p->_geom_solmix) {
    e = (*v)(((PyObject *)p->_geom_solmix), a); if (e) return e;
  }
  if (p->_geom_solref) {
    e = (*v)(((PyObject *)p->_geom_solref), a); if (e) return e;
  }
  if (p->_geom_solimp) {
    e = (*v)(((PyObject *)p->_geom_solimp), a); if (e) return e;
  }
  if (p->_geom_size) {
    e = (*v)(((PyObject *)p->_geom_size), a); if (e) return e;
  }
  if (p->_geom_rbound) {
    e = (*v)(((PyObject *)p->_geom_rbound), a); if (e) return e;
  }
  if (p->_geom_pos) {
    e = (*v)(((PyObject *)p->_geom_pos), a); if (e) return e;
  }
  if (p->_geom_quat) {
    e = (*v)(((PyObject *)p->_geom_quat), a); if (e) return e;
  }
  if (p->_geom_friction) {
    e = (*v)(((PyObject *)p->_geom_friction), a); if (e) return e;
  }
  if (p->_geom_margin) {
    e = (*v)(((PyObject *)p->_geom_margin), a); if (e) return e;
  }
  if (p->_geom_gap) {
    e = (*v)(((PyObject *)p->_geom_gap), a); if (e) return e;
  }
  if (p->_geom_user) {
    e = (*v)(((PyObject *)p->_geom_user), a); if (e) return e;
  }
  if (p->_geom_rgba) {
    e = (*v)(((PyObject *)p->_geom_rgba), a); if (e) return e;
  }
  if (p->_site_type) {
    e = (*v)(((PyObject *)p->_site_type), a); if (e) return e;
  }
  if (p->_site_bodyid) {
    e = (*v)(((PyObject *)p->_site_bodyid), a); if (e) return e;
  }
  if (p->_site_matid) {
    e = (*v)(((PyObject *)p->_site_matid), a); if (e) return e;
  }
  if (p->_site_group) {
    e = (*v)(((PyObject *)p->_site_group), a); if (e) return e;
  }
  if (p->_site_size) {
    e = (*v)(((PyObject *)p->_site_size), a); if (e) return e;
  }
  if (p->_site_pos) {
    e = (*v)(((PyObject *)p->_site_pos), a); if (e) return e;
  }
  if (p->_site_quat) {
    e = (*v)(((PyObject *)p->_site_quat), a); if (e) return e;
  }
  if (p->_site_user) {
    e = (*v)(((PyObject *)p->_site_user), a); if (e) return e;
  }
  if (p->_site_rgba) {
    e = (*v)(((PyObject *)p->_site_rgba), a); if (e) return e;
  }
  if (p->_cam_mode) {
    e = (*v)(((PyObject *)p->_cam_mode), a); if (e) return e;
  }
  if (p->_cam_bodyid) {
    e = (*v)(((PyObject *)p->_cam_bodyid), a); if (e) return e;
  }
  if (p->_cam_targetbodyid) {
    e = (*v)(((PyObject *)p->_cam_targetbodyid), a); if (e) return e;
  }
  if (p->_cam_pos) {
    e = (*v)(((PyObject *)p->_cam_pos), a); if (e) return e;
  }
  if (p->_cam_quat) {
    e = (*v)(((PyObject *)p->_cam_quat), a); if (e) return e;
  }
  if (p->_cam_poscom0) {
    e = (*v)(((PyObject *)p->_cam_poscom0), a); if (e) return e;
  }
  if (p->_cam_pos0) {
    e = (*v)(((PyObject *)p->_cam_pos0), a); if (e) return e;
  }
  if (p->_cam_mat0) {
    e = (*v)(((PyObject *)p->_cam_mat0), a); if (e) return e;
  }
  if (p->_cam_fovy) {
    e = (*v)(((PyObject *)p->_cam_fovy), a); if (e) return e;
  }
  if (p->_cam_ipd) {
    e = (*v)(((PyObject *)p->_cam_ipd), a); if (e) return e;
  }
  if (p->_cam_user) {
    e = (*v)(((PyObject *)p->_cam_user), a); if (e) return e;
  }
  if (p->_light_mode) {
    e = (*v)(((PyObject *)p->_light_mode), a); if (e) return e;
  }
  if (p->_light_bodyid) {
    e = (*v)(((PyObject *)p->_light_bodyid), a); if (e) return e;
  }
  if (p->_light_targetbodyid) {
    e = (*v)(((PyObject *)p->_light_targetbodyid), a); if (e) return e;
  }
  if (p->_light_directional) {
    e = (*v)(((PyObject *)p->_light_directional), a); if (e) return e;
  }
  if (p->_light_castshadow) {
    e = (*v)(((PyObject *)p->_light_castshadow), a); if (e) return e;
  }
  if (p->_light_active) {
    e = (*v)(((PyObject *)p->_light_active), a); if (e) return e;
  }
  if (p->_light_pos) {
    e = (*v)(((PyObject *)p->_light_pos), a); if (e) return e;
  }
  if (p->_light_dir) {
    e = (*v)(((PyObject *)p->_light_dir), a); if (e) return e;
  }
  if (p->_light_poscom0) {
    e = (*v)(((PyObject *)p->_light_poscom0), a); if (e) return e;
  }
  if (p->_light_pos0) {
    e = (*v)(((PyObject *)p->_light_pos0), a); if (e) return e;
  }
  if (p->_light_dir0) {
    e = (*v)(((PyObject *)p->_light_dir0), a); if (e) return e;
  }
  if (p->_light_attenuation) {
    e = (*v)(((PyObject *)p->_light_attenuation), a); if (e) return e;
  }
  if (p->_light_cutoff) {
    e = (*v)(((PyObject *)p->_light_cutoff), a); if (e) return e;
  }
  if (p->_light_exponent) {
    e = (*v)(((PyObject *)p->_light_exponent), a); if (e) return e;
  }
  if (p->_light_ambient) {
    e = (*v)(((PyObject *)p->_light_ambient), a); if (e) return e;
  }
  if (p->_light_diffuse) {
    e = (*v)(((PyObject *)p->_light_diffuse), a); if (e) return e;
  }
  if (p->_light_specular) {
    e = (*v)(((PyObject *)p->_light_specular), a); if (e) return e;
  }
  if (p->_mesh_faceadr) {
    e = (*v)(((PyObject *)p->_mesh_faceadr), a); if (e) return e;
  }
  if (p->_mesh_facenum) {
    e = (*v)(((PyObject *)p->_mesh_facenum), a); if (e) return e;
  }
  if (p->_mesh_vertadr) {
    e = (*v)(((PyObject *)p->_mesh_vertadr), a); if (e) return e;
  }
  if (p->_mesh_vertnum) {
    e = (*v)(((PyObject *)p->_mesh_vertnum), a); if (e) return e;
  }
  if (p->_mesh_graphadr) {
    e = (*v)(((PyObject *)p->_mesh_graphadr), a); if (e) return e;
  }
  if (p->_mesh_vert) {
    e = (*v)(((PyObject *)p->_mesh_vert), a); if (e) return e;
  }
  if (p->_mesh_normal) {
    e = (*v)(((PyObject *)p->_mesh_normal), a); if (e) return e;
  }
  if (p->_mesh_face) {
    e = (*v)(((PyObject *)p->_mesh_face), a); if (e) return e;
  }
  if (p->_mesh_graph) {
    e = (*v)(((PyObject *)p->_mesh_graph), a); if (e) return e;
  }
  if (p->_hfield_size) {
    e = (*v)(((PyObject *)p->_hfield_size), a); if (e) return e;
  }
  if (p->_hfield_nrow) {
    e = (*v)(((PyObject *)p->_hfield_nrow), a); if (e) return e;
  }
  if (p->_hfield_ncol) {
    e = (*v)(((PyObject *)p->_hfield_ncol), a); if (e) return e;
  }
  if (p->_hfield_adr) {
    e = (*v)(((PyObject *)p->_hfield_adr), a); if (e) return e;
  }
  if (p->_hfield_data) {
    e = (*v)(((PyObject *)p->_hfield_data), a); if (e) return e;
  }
  if (p->_tex_type) {
    e = (*v)(((PyObject *)p->_tex_type), a); if (e) return e;
  }
  if (p->_tex_height) {
    e = (*v)(((PyObject *)p->_tex_height), a); if (e) return e;
  }
  if (p->_tex_width) {
    e = (*v)(((PyObject *)p->_tex_width), a); if (e) return e;
  }
  if (p->_tex_adr) {
    e = (*v)(((PyObject *)p->_tex_adr), a); if (e) return e;
  }
  if (p->_tex_rgb) {
    e = (*v)(((PyObject *)p->_tex_rgb), a); if (e) return e;
  }
  if (p->_mat_texid) {
    e = (*v)(((PyObject *)p->_mat_texid), a); if (e) return e;
  }
  if (p->_mat_texuniform) {
    e = (*v)(((PyObject *)p->_mat_texuniform), a); if (e) return e;
  }
  if (p->_mat_texrepeat) {
    e = (*v)(((PyObject *)p->_mat_texrepeat), a); if (e) return e;
  }
  if (p->_mat_emission) {
    e = (*v)(((PyObject *)p->_mat_emission), a); if (e) return e;
  }
  if (p->_mat_specular) {
    e = (*v)(((PyObject *)p->_mat_specular), a); if (e) return e;
  }
  if (p->_mat_shininess) {
    e = (*v)(((PyObject *)p->_mat_shininess), a); if (e) return e;
  }
  if (p->_mat_reflectance) {
    e = (*v)(((PyObject *)p->_mat_reflectance), a); if (e) return e;
  }
  if (p->_mat_rgba) {
    e = (*v)(((PyObject *)p->_mat_rgba), a); if (e) return e;
  }
  if (p->_pair_dim) {
    e = (*v)(((PyObject *)p->_pair_dim), a); if (e) return e;
  }
  if (p->_pair_geom1) {
    e = (*v)(((PyObject *)p->_pair_geom1), a); if (e) return e;
  }
  if (p->_pair_geom2) {
    e = (*v)(((PyObject *)p->_pair_geom2), a); if (e) return e;
  }
  if (p->_pair_signature) {
    e = (*v)(((PyObject *)p->_pair_signature), a); if (e) return e;
  }
  if (p->_pair_solref) {
    e = (*v)(((PyObject *)p->_pair_solref), a); if (e) return e;
  }
  if (p->_pair_solimp) {
    e = (*v)(((PyObject *)p->_pair_solimp), a); if (e) return e;
  }
  if (p->_pair_margin) {
    e = (*v)(((PyObject *)p->_pair_margin), a); if (e) return e;
  }
  if (p->_pair_gap) {
    e = (*v)(((PyObject *)p->_pair_gap), a); if (e) return e;
  }
  if (p->_pair_friction) {
    e = (*v)(((PyObject *)p->_pair_friction), a); if (e) return e;
  }
  if (p->_exclude_signature) {
    e = (*v)(((PyObject *)p->_exclude_signature), a); if (e) return e;
  }
  if (p->_eq_type) {
    e = (*v)(((PyObject *)p->_eq_type), a); if (e) return e;
  }
  if (p->_eq_obj1id) {
    e = (*v)(((PyObject *)p->_eq_obj1id), a); if (e) return e;
  }
  if (p->_eq_obj2id) {
    e = (*v)(((PyObject *)p->_eq_obj2id), a); if (e) return e;
  }
  if (p->_eq_active) {
    e = (*v)(((PyObject *)p->_eq_active), a); if (e) return e;
  }
  if (p->_eq_solref) {
    e = (*v)(((PyObject *)p->_eq_solref), a); if (e) return e;
  }
  if (p->_eq_solimp) {
    e = (*v)(((PyObject *)p->_eq_solimp), a); if (e) return e;
  }
  if (p->_eq_data) {
    e = (*v)(((PyObject *)p->_eq_data), a); if (e) return e;
  }
  if (p->_tendon_adr) {
    e = (*v)(((PyObject *)p->_tendon_adr), a); if (e) return e;
  }
  if (p->_tendon_num) {
    e = (*v)(((PyObject *)p->_tendon_num), a); if (e) return e;
  }
  if (p->_tendon_matid) {
    e = (*v)(((PyObject *)p->_tendon_matid), a); if (e) return e;
  }
  if (p->_tendon_limited) {
    e = (*v)(((PyObject *)p->_tendon_limited), a); if (e) return e;
  }
  if (p->_tendon_width) {
    e = (*v)(((PyObject *)p->_tendon_width), a); if (e) return e;
  }
  if (p->_tendon_solref_lim) {
    e = (*v)(((PyObject *)p->_tendon_solref_lim), a); if (e) return e;
  }
  if (p->_tendon_solimp_lim) {
    e = (*v)(((PyObject *)p->_tendon_solimp_lim), a); if (e) return e;
  }
  if (p->_tendon_solref_fri) {
    e = (*v)(((PyObject *)p->_tendon_solref_fri), a); if (e) return e;
  }
  if (p->_tendon_solimp_fri) {
    e = (*v)(((PyObject *)p->_tendon_solimp_fri), a); if (e) return e;
  }
  if (p->_tendon_range) {
    e = (*v)(((PyObject *)p->_tendon_range), a); if (e) return e;
  }
  if (p->_tendon_margin) {
    e = (*v)(((PyObject *)p->_tendon_margin), a); if (e) return e;
  }
  if (p->_tendon_stiffness) {
    e = (*v)(((PyObject *)p->_tendon_stiffness), a); if (e) return e;
  }
  if (p->_tendon_damping) {
    e = (*v)(((PyObject *)p->_tendon_damping), a); if (e) return e;
  }
  if (p->_tendon_frictionloss) {
    e = (*v)(((PyObject *)p->_tendon_frictionloss), a); if (e) return e;
  }
  if (p->_tendon_lengthspring) {
    e = (*v)(((PyObject *)p->_tendon_lengthspring), a); if (e) return e;
  }
  if (p->_tendon_length0) {
    e = (*v)(((PyObject *)p->_tendon_length0), a); if (e) return e;
  }
  if (p->_tendon_invweight0) {
    e = (*v)(((PyObject *)p->_tendon_invweight0), a); if (e) return e;
  }
  if (p->_tendon_user) {
    e = (*v)(((PyObject *)p->_tendon_user), a); if (e) return e;
  }
  if (p->_tendon_rgba) {
    e = (*v)(((PyObject *)p->_tendon_rgba), a); if (e) return e;
  }
  if (p->_wrap_type) {
    e = (*v)(((PyObject *)p->_wrap_type), a); if (e) return e;
  }
  if (p->_wrap_objid) {
    e = (*v)(((PyObject *)p->_wrap_objid), a); if (e) return e;
  }
  if (p->_wrap_prm) {
    e = (*v)(((PyObject *)p->_wrap_prm), a); if (e) return e;
  }
  if (p->_actuator_trntype) {
    e = (*v)(((PyObject *)p->_actuator_trntype), a); if (e) return e;
  }
  if (p->_actuator_dyntype) {
    e = (*v)(((PyObject *)p->_actuator_dyntype), a); if (e) return e;
  }
  if (p->_actuator_gaintype) {
    e = (*v)(((PyObject *)p->_actuator_gaintype), a); if (e) return e;
  }
  if (p->_actuator_biastype) {
    e = (*v)(((PyObject *)p->_actuator_biastype), a); if (e) return e;
  }
  if (p->_actuator_trnid) {
    e = (*v)(((PyObject *)p->_actuator_trnid), a); if (e) return e;
  }
  if (p->_actuator_ctrllimited) {
    e = (*v)(((PyObject *)p->_actuator_ctrllimited), a); if (e) return e;
  }
  if (p->_actuator_forcelimited) {
    e = (*v)(((PyObject *)p->_actuator_forcelimited), a); if (e) return e;
  }
  if (p->_actuator_dynprm) {
    e = (*v)(((PyObject *)p->_actuator_dynprm), a); if (e) return e;
  }
  if (p->_actuator_gainprm) {
    e = (*v)(((PyObject *)p->_actuator_gainprm), a); if (e) return e;
  }
  if (p->_actuator_biasprm) {
    e = (*v)(((PyObject *)p->_actuator_biasprm), a); if (e) return e;
  }
  if (p->_actuator_ctrlrange) {
    e = (*v)(((PyObject *)p->_actuator_ctrlrange), a); if (e) return e;
  }
  if (p->_actuator_forcerange) {
    e = (*v)(((PyObject *)p->_actuator_forcerange), a); if (e) return e;
  }
  if (p->_actuator_gear) {
    e = (*v)(((PyObject *)p->_actuator_gear), a); if (e) return e;
  }
  if (p->_actuator_cranklength) {
    e = (*v)(((PyObject *)p->_actuator_cranklength), a); if (e) return e;
  }
  if (p->_actuator_invweight0) {
    e = (*v)(((PyObject *)p->_actuator_invweight0), a); if (e) return e;
  }
  if (p->_actuator_length0) {
    e = (*v)(((PyObject *)p->_actuator_length0), a); if (e) return e;
  }
  if (p->_actuator_lengthrange) {
    e = (*v)(((PyObject *)p->_actuator_lengthrange), a); if (e) return e;
  }
  if (p->_actuator_user) {
    e = (*v)(((PyObject *)p->_actuator_user), a); if (e) return e;
  }
  if (p->_sensor_type) {
    e = (*v)(((PyObject *)p->_sensor_type), a); if (e) return e;
  }
  if (p->_sensor_datatype) {
    e = (*v)(((PyObject *)p->_sensor_datatype), a); if (e) return e;
  }
  if (p->_sensor_needstage) {
    e = (*v)(((PyObject *)p->_sensor_needstage), a); if (e) return e;
  }
  if (p->_sensor_objtype) {
    e = (*v)(((PyObject *)p->_sensor_objtype), a); if (e) return e;
  }
  if (p->_sensor_objid) {
    e = (*v)(((PyObject *)p->_sensor_objid), a); if (e) return e;
  }
  if (p->_sensor_dim) {
    e = (*v)(((PyObject *)p->_sensor_dim), a); if (e) return e;
  }
  if (p->_sensor_adr) {
    e = (*v)(((PyObject *)p->_sensor_adr), a); if (e) return e;
  }
  if (p->_sensor_cutoff) {
    e = (*v)(((PyObject *)p->_sensor_cutoff), a); if (e) return e;
  }
  if (p->_sensor_noise) {
    e = (*v)(((PyObject *)p->_sensor_noise), a); if (e) return e;
  }
  if (p->_sensor_user) {
    e = (*v)(((PyObject *)p->_sensor_user), a); if (e) return e;
  }
  if (p->_numeric_adr) {
    e = (*v)(((PyObject *)p->_numeric_adr), a); if (e) return e;
  }
  if (p->_numeric_size) {
    e = (*v)(((PyObject *)p->_numeric_size), a); if (e) return e;
  }
  if (p->_numeric_data) {
    e = (*v)(((PyObject *)p->_numeric_data), a); if (e) return e;
  }
  if (p->_text_adr) {
    e = (*v)(((PyObject *)p->_text_adr), a); if (e) return e;
  }
  if (p->_text_size) {
    e = (*v)(((PyObject *)p->_text_size), a); if (e) return e;
  }
  if (p->_text_data) {
    e = (*v)(((PyObject *)p->_text_data), a); if (e) return e;
  }
  if (p->_tuple_adr) {
    e = (*v)(((PyObject *)p->_tuple_adr), a); if (e) return e;
  }
  if (p->_tuple_size) {
    e = (*v)(((PyObject *)p->_tuple_size), a); if (e) return e;
  }
  if (p->_tuple_objtype) {
    e = (*v)(((PyObject *)p->_tuple_objtype), a); if (e) return e;
  }
  if (p->_tuple_objid) {
    e = (*v)(((PyObject *)p->_tuple_objid), a); if (e) return e;
  }
  if (p->_tuple_objprm) {
    e = (*v)(((PyObject *)p->_tuple_objprm), a); if (e) return e;
  }
  if (p->_key_time) {
    e = (*v)(((PyObject *)p->_key_time), a); if (e) return e;
  }
  if (p->_key_qpos) {
    e = (*v)(((PyObject *)p->_key_qpos), a); if (e) return e;
  }
  if (p->_key_qvel) {
    e = (*v)(((PyObject *)p->_key_qvel), a); if (e) return e;
  }
  if (p->_key_act) {
    e = (*v)(((PyObject *)p->_key_act), a); if (e) return e;
  }
  if (p->_name_bodyadr) {
    e = (*v)(((PyObject *)p->_name_bodyadr), a); if (e) return e;
  }
  if (p->_name_jntadr) {
    e = (*v)(((PyObject *)p->_name_jntadr), a); if (e) return e;
  }
  if (p->_name_geomadr) {
    e = (*v)(((PyObject *)p->_name_geomadr), a); if (e) return e;
  }
  if (p->_name_siteadr) {
    e = (*v)(((PyObject *)p->_name_siteadr), a); if (e) return e;
  }
  if (p->_name_camadr) {
    e = (*v)(((PyObject *)p->_name_camadr), a); if (e) return e;
  }
  if (p->_name_lightadr) {
    e = (*v)(((PyObject *)p->_name_lightadr), a); if (e) return e;
  }
  if (p->_name_meshadr) {
    e = (*v)(((PyObject *)p->_name_meshadr), a); if (e) return e;
  }
  if (p->_name_hfieldadr) {
    e = (*v)(((PyObject *)p->_name_hfieldadr), a); if (e) return e;
  }
  if (p->_name_texadr) {
    e = (*v)(((PyObject *)p->_name_texadr), a); if (e) return e;
  }
  if (p->_name_matadr) {
    e = (*v)(((PyObject *)p->_name_matadr), a); if (e) return e;
  }
  if (p->_name_eqadr) {
    e = (*v)(((PyObject *)p->_name_eqadr), a); if (e) return e;
  }
  if (p->_name_tendonadr) {
    e = (*v)(((PyObject *)p->_name_tendonadr), a); if (e) return e;
  }
  if (p->_name_actuatoradr) {
    e = (*v)(((PyObject *)p->_name_actuatoradr), a); if (e) return e;
  }
  if (p->_name_sensoradr) {
    e = (*v)(((PyObject *)p->_name_sensoradr), a); if (e) return e;
  }
  if (p->_name_numericadr) {
    e = (*v)(((PyObject *)p->_name_numericadr), a); if (e) return e;
  }
  if (p->_name_textadr) {
    e = (*v)(((PyObject *)p->_name_textadr), a); if (e) return e;
  }
  if (p->_name_tupleadr) {
    e = (*v)(((PyObject *)p->_name_tupleadr), a); if (e) return e;
  }
  if (p->_names) {
    e = (*v)(((PyObject *)p->_names), a); if (e) return e;
  }
  if (p->body_names) {
    e = (*v)(p->body_names, a); if (e) return e;
  }
  if (p->joint_names) {
    e = (*v)(p->joint_names, a); if (e) return e;
  }
  if (p->geom_names) {
    e = (*v)(p->geom_names, a); if (e) return e;
  }
  if (p->site_names) {
    e = (*v)(p->site_names, a); if (e) return e;
  }
  if (p->light_names) {
    e = (*v)(p->light_names, a); if (e) return e;
  }
  if (p->camera_names) {
    e = (*v)(p->camera_names, a); if (e) return e;
  }
  if (p->actuator_names) {
    e = (*v)(p->actuator_names, a); if (e) return e;
  }
  if (p->sensor_names) {
    e = (*v)(p->sensor_names, a); if (e) return e;
  }
  if (p->_body_id2name) {
    e = (*v)(p->_body_id2name, a); if (e) return e;
  }
  if (p->_joint_id2name) {
    e = (*v)(p->_joint_id2name, a); if (e) return e;
  }
  if (p->_geom_id2name) {
    e = (*v)(p->_geom_id2name, a); if (e) return e;
  }
  if (p->_site_id2name) {
    e = (*v)(p->_site_id2name, a); if (e) return e;
  }
  if (p->_light_id2name) {
    e = (*v)(p->_light_id2name, a); if (e) return e;
  }
  if (p->_camera_id2name) {
    e = (*v)(p->_camera_id2name, a); if (e) return e;
  }
  if (p->_actuator_id2name) {
    e = (*v)(p->_actuator_id2name, a); if (e) return e;
  }
  if (p->_sensor_id2name) {
    e = (*v)(p->_sensor_id2name, a); if (e) return e;
  }
  if (p->_body_name2id) {
    e = (*v)(p->_body_name2id, a); if (e) return e;
  }
  if (p->_joint_name2id) {
    e = (*v)(p->_joint_name2id, a); if (e) return e;
  }
  if (p->_geom_name2id) {
    e = (*v)(p->_geom_name2id, a); if (e) return e;
  }
  if (p->_site_name2id) {
    e = (*v)(p->_site_name2id, a); if (e) return e;
  }
  if (p->_light_name2id) {
    e = (*v)(p->_light_name2id, a); if (e) return e;
  }
  if (p->_camera_name2id) {
    e = (*v)(p->_camera_name2id, a); if (e) return e;
  }
  if (p->_actuator_name2id) {
    e = (*v)(p->_actuator_name2id, a); if (e) return e;
  }
  if (p->_sensor_name2id) {
    e = (*v)(p->_sensor_name2id, a); if (e) return e;
  }
  if (p->userdata_names) {
    e = (*v)(p->userdata_names, a); if (e) return e;
  }
  if (p->_userdata_id2name) {
    e = (*v)(p->_userdata_id2name, a); if (e) return e;
  }
  if (p->_userdata_name2id) {
    e = (*v)(p->_userdata_name2id, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjModel(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)o;
  tmp = ((PyObject*)p->_opt);
  p->_opt = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_vis);
  p->_vis = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_stat);
  p->_stat = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qpos0);
  p->_qpos0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qpos_spring);
  p->_qpos_spring = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_parentid);
  p->_body_parentid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_rootid);
  p->_body_rootid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_weldid);
  p->_body_weldid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_mocapid);
  p->_body_mocapid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_jntnum);
  p->_body_jntnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_jntadr);
  p->_body_jntadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_dofnum);
  p->_body_dofnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_dofadr);
  p->_body_dofadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_geomnum);
  p->_body_geomnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_geomadr);
  p->_body_geomadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_pos);
  p->_body_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_quat);
  p->_body_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_ipos);
  p->_body_ipos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_iquat);
  p->_body_iquat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_mass);
  p->_body_mass = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_subtreemass);
  p->_body_subtreemass = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_inertia);
  p->_body_inertia = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_invweight0);
  p->_body_invweight0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_user);
  p->_body_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_type);
  p->_jnt_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_qposadr);
  p->_jnt_qposadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_dofadr);
  p->_jnt_dofadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_bodyid);
  p->_jnt_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_limited);
  p->_jnt_limited = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_solref);
  p->_jnt_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_solimp);
  p->_jnt_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_pos);
  p->_jnt_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_axis);
  p->_jnt_axis = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_stiffness);
  p->_jnt_stiffness = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_range);
  p->_jnt_range = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_margin);
  p->_jnt_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_jnt_user);
  p->_jnt_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_bodyid);
  p->_dof_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_jntid);
  p->_dof_jntid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_parentid);
  p->_dof_parentid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_Madr);
  p->_dof_Madr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_solref);
  p->_dof_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_solimp);
  p->_dof_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_frictionloss);
  p->_dof_frictionloss = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_armature);
  p->_dof_armature = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_damping);
  p->_dof_damping = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dof_invweight0);
  p->_dof_invweight0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_type);
  p->_geom_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_contype);
  p->_geom_contype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_conaffinity);
  p->_geom_conaffinity = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_condim);
  p->_geom_condim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_bodyid);
  p->_geom_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_dataid);
  p->_geom_dataid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_matid);
  p->_geom_matid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_group);
  p->_geom_group = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_solmix);
  p->_geom_solmix = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_solref);
  p->_geom_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_solimp);
  p->_geom_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_size);
  p->_geom_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_rbound);
  p->_geom_rbound = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_pos);
  p->_geom_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_quat);
  p->_geom_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_friction);
  p->_geom_friction = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_margin);
  p->_geom_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_gap);
  p->_geom_gap = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_user);
  p->_geom_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_rgba);
  p->_geom_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_type);
  p->_site_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_bodyid);
  p->_site_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_matid);
  p->_site_matid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_group);
  p->_site_group = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_size);
  p->_site_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_pos);
  p->_site_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_quat);
  p->_site_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_user);
  p->_site_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_rgba);
  p->_site_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_mode);
  p->_cam_mode = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_bodyid);
  p->_cam_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_targetbodyid);
  p->_cam_targetbodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_pos);
  p->_cam_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_quat);
  p->_cam_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_poscom0);
  p->_cam_poscom0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_pos0);
  p->_cam_pos0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_mat0);
  p->_cam_mat0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_fovy);
  p->_cam_fovy = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_ipd);
  p->_cam_ipd = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_user);
  p->_cam_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_mode);
  p->_light_mode = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_bodyid);
  p->_light_bodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_targetbodyid);
  p->_light_targetbodyid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_directional);
  p->_light_directional = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_castshadow);
  p->_light_castshadow = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_active);
  p->_light_active = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_pos);
  p->_light_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_dir);
  p->_light_dir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_poscom0);
  p->_light_poscom0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_pos0);
  p->_light_pos0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_dir0);
  p->_light_dir0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_attenuation);
  p->_light_attenuation = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_cutoff);
  p->_light_cutoff = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_exponent);
  p->_light_exponent = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_ambient);
  p->_light_ambient = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_diffuse);
  p->_light_diffuse = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_specular);
  p->_light_specular = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mesh_faceadr);
  p->_mesh_faceadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mesh_facenum);
  p->_mesh_facenum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mesh_vertadr);
  p->_mesh_vertadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mesh_vertnum);
  p->_mesh_vertnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mesh_graphadr);
  p->_mesh_graphadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mesh_vert);
  p->_mesh_vert = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mesh_normal);
  p->_mesh_normal = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mesh_face);
  p->_mesh_face = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mesh_graph);
  p->_mesh_graph = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_hfield_size);
  p->_hfield_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_hfield_nrow);
  p->_hfield_nrow = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_hfield_ncol);
  p->_hfield_ncol = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_hfield_adr);
  p->_hfield_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_hfield_data);
  p->_hfield_data = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tex_type);
  p->_tex_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tex_height);
  p->_tex_height = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tex_width);
  p->_tex_width = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tex_adr);
  p->_tex_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tex_rgb);
  p->_tex_rgb = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mat_texid);
  p->_mat_texid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mat_texuniform);
  p->_mat_texuniform = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mat_texrepeat);
  p->_mat_texrepeat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mat_emission);
  p->_mat_emission = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mat_specular);
  p->_mat_specular = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mat_shininess);
  p->_mat_shininess = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mat_reflectance);
  p->_mat_reflectance = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mat_rgba);
  p->_mat_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pair_dim);
  p->_pair_dim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pair_geom1);
  p->_pair_geom1 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pair_geom2);
  p->_pair_geom2 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pair_signature);
  p->_pair_signature = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pair_solref);
  p->_pair_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pair_solimp);
  p->_pair_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pair_margin);
  p->_pair_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pair_gap);
  p->_pair_gap = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pair_friction);
  p->_pair_friction = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_exclude_signature);
  p->_exclude_signature = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_eq_type);
  p->_eq_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_eq_obj1id);
  p->_eq_obj1id = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_eq_obj2id);
  p->_eq_obj2id = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_eq_active);
  p->_eq_active = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_eq_solref);
  p->_eq_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_eq_solimp);
  p->_eq_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_eq_data);
  p->_eq_data = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_adr);
  p->_tendon_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_num);
  p->_tendon_num = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_matid);
  p->_tendon_matid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_limited);
  p->_tendon_limited = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_width);
  p->_tendon_width = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_solref_lim);
  p->_tendon_solref_lim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_solimp_lim);
  p->_tendon_solimp_lim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_solref_fri);
  p->_tendon_solref_fri = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_solimp_fri);
  p->_tendon_solimp_fri = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_range);
  p->_tendon_range = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_margin);
  p->_tendon_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_stiffness);
  p->_tendon_stiffness = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_damping);
  p->_tendon_damping = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_frictionloss);
  p->_tendon_frictionloss = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_lengthspring);
  p->_tendon_lengthspring = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_length0);
  p->_tendon_length0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_invweight0);
  p->_tendon_invweight0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_user);
  p->_tendon_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tendon_rgba);
  p->_tendon_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_wrap_type);
  p->_wrap_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_wrap_objid);
  p->_wrap_objid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_wrap_prm);
  p->_wrap_prm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_trntype);
  p->_actuator_trntype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_dyntype);
  p->_actuator_dyntype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_gaintype);
  p->_actuator_gaintype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_biastype);
  p->_actuator_biastype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_trnid);
  p->_actuator_trnid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_ctrllimited);
  p->_actuator_ctrllimited = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_forcelimited);
  p->_actuator_forcelimited = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_dynprm);
  p->_actuator_dynprm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_gainprm);
  p->_actuator_gainprm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_biasprm);
  p->_actuator_biasprm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_ctrlrange);
  p->_actuator_ctrlrange = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_forcerange);
  p->_actuator_forcerange = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_gear);
  p->_actuator_gear = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_cranklength);
  p->_actuator_cranklength = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_invweight0);
  p->_actuator_invweight0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_length0);
  p->_actuator_length0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_lengthrange);
  p->_actuator_lengthrange = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_user);
  p->_actuator_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_type);
  p->_sensor_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_datatype);
  p->_sensor_datatype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_needstage);
  p->_sensor_needstage = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_objtype);
  p->_sensor_objtype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_objid);
  p->_sensor_objid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_dim);
  p->_sensor_dim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_adr);
  p->_sensor_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_cutoff);
  p->_sensor_cutoff = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_noise);
  p->_sensor_noise = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_user);
  p->_sensor_user = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_numeric_adr);
  p->_numeric_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_numeric_size);
  p->_numeric_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_numeric_data);
  p->_numeric_data = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_text_adr);
  p->_text_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_text_size);
  p->_text_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_text_data);
  p->_text_data = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tuple_adr);
  p->_tuple_adr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tuple_size);
  p->_tuple_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tuple_objtype);
  p->_tuple_objtype = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tuple_objid);
  p->_tuple_objid = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tuple_objprm);
  p->_tuple_objprm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_key_time);
  p->_key_time = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_key_qpos);
  p->_key_qpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_key_qvel);
  p->_key_qvel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_key_act);
  p->_key_act = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_bodyadr);
  p->_name_bodyadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_jntadr);
  p->_name_jntadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_geomadr);
  p->_name_geomadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_siteadr);
  p->_name_siteadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_camadr);
  p->_name_camadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_lightadr);
  p->_name_lightadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_meshadr);
  p->_name_meshadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_hfieldadr);
  p->_name_hfieldadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_texadr);
  p->_name_texadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_matadr);
  p->_name_matadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_eqadr);
  p->_name_eqadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_tendonadr);
  p->_name_tendonadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_actuatoradr);
  p->_name_actuatoradr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_sensoradr);
  p->_name_sensoradr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_numericadr);
  p->_name_numericadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_textadr);
  p->_name_textadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name_tupleadr);
  p->_name_tupleadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_names);
  p->_names = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->body_names);
  p->body_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->joint_names);
  p->joint_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->geom_names);
  p->geom_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->site_names);
  p->site_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->light_names);
  p->light_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->camera_names);
  p->camera_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->actuator_names);
  p->actuator_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->sensor_names);
  p->sensor_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_id2name);
  p->_body_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_joint_id2name);
  p->_joint_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_id2name);
  p->_geom_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_id2name);
  p->_site_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_id2name);
  p->_light_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_camera_id2name);
  p->_camera_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_id2name);
  p->_actuator_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_id2name);
  p->_sensor_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_body_name2id);
  p->_body_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_joint_name2id);
  p->_joint_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_name2id);
  p->_geom_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_name2id);
  p->_site_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_name2id);
  p->_light_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_camera_name2id);
  p->_camera_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_name2id);
  p->_actuator_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensor_name2id);
  p->_sensor_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->userdata_names);
  p->userdata_names = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_userdata_id2name);
  p->_userdata_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_userdata_name2id);
  p->_userdata_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nq(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nq_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nq(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nq_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nv(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nv_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nv(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nv_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nu(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nu_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nu(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nu_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_na(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2na_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_na(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2na_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nbody(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nbody_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nbody(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nbody_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_njnt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4njnt_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_njnt(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4njnt_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ngeom(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ngeom_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ngeom(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ngeom_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nsite(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nsite_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nsite(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nsite_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ncam(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ncam_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ncam(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ncam_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nlight(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nlight_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nlight(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nlight_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmesh(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nmesh_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmesh(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nmesh_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmeshvert(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshvert_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmeshvert(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshvert_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmeshface(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshface_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmeshface(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nmeshface_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmeshgraph(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmeshgraph(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nmeshgraph_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nhfield(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nhfield_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nhfield(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nhfield_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nhfielddata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nhfielddata_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nhfielddata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nhfielddata_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntex(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ntex_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntex(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4ntex_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntexdata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8ntexdata_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntexdata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8ntexdata_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nmat_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmat(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nmat_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_npair(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5npair_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_npair(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5npair_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nexclude(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nexclude_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nexclude(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nexclude_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_neq(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_3neq_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_neq(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_3neq_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntendon(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7ntendon_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntendon(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7ntendon_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nwrap(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nwrap_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nwrap(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nwrap_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nsensor(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nsensor_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nsensor(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nsensor_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nnumeric(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nnumeric_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nnumeric(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8nnumeric_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nnumericdata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nnumericdata_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nnumericdata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nnumericdata_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntext(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ntext_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntext(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5ntext_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntextdata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9ntextdata_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntextdata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9ntextdata_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntuple(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6ntuple_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntuple(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6ntuple_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntupledata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10ntupledata_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntupledata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10ntupledata_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nkey(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nkey_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nkey(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4nkey_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_body(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_body_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_body(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_body_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_jnt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_jnt(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_jnt_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_geom(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_geom_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_geom(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_geom_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_site(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_site_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_site(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10nuser_site_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_cam(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_cam_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_cam(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuser_cam_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_tendon(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_tendon(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_tendon_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_actuator(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_actuator(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14nuser_actuator_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_sensor(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_sensor(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12nuser_sensor_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nnames(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nnames_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nnames(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nnames_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nM(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nM_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nM(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_2nM_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nemax(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nemax_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nemax(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5nemax_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_njmax(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5njmax_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_njmax(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5njmax_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nconmax(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nconmax_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nconmax(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nconmax_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nstack(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nstack_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nstack(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nstack_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuserdata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuserdata_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuserdata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9nuserdata_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmocap(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nmocap_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmocap(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_6nmocap_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nsensordata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nsensordata_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nsensordata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11nsensordata_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nbuffer(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nbuffer_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nbuffer(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7nbuffer_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_opt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_3opt_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_vis(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_3vis_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_stat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_4stat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_qpos0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5qpos0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_qpos_spring(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11qpos_spring_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_parentid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13body_parentid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_rootid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_rootid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_weldid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_weldid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_mocapid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_mocapid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_jntnum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_jntnum_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_jntadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_jntadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_dofnum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_dofnum_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_dofadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11body_dofadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_geomnum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_geomnum_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_geomadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_geomadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8body_pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_quat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_quat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_ipos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_ipos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_iquat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10body_iquat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_mass(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_mass_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_subtreemass(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16body_subtreemass_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_inertia(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12body_inertia_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_invweight0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_15body_invweight0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_user(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9body_user_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8jnt_type_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_qposadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11jnt_qposadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_dofadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_dofadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_bodyid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_bodyid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_limited(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11jnt_limited_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_solref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_solref_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_solimp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_solimp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7jnt_pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_axis(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8jnt_axis_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_stiffness(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13jnt_stiffness_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_range(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9jnt_range_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_margin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10jnt_margin_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_user(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8jnt_user_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_bodyid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10dof_bodyid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_jntid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9dof_jntid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_parentid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12dof_parentid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_Madr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8dof_Madr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_solref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10dof_solref_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_solimp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10dof_solimp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_frictionloss(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16dof_frictionloss_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_armature(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12dof_armature_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_damping(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11dof_damping_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_invweight0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14dof_invweight0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_type_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_contype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12geom_contype_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_conaffinity(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16geom_conaffinity_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_condim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_condim_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_bodyid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_bodyid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_dataid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_dataid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_matid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10geom_matid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_group(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10geom_group_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_solmix(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_solmix_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_solref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_solref_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_solimp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_solimp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_size_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_rbound(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_rbound_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8geom_pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_quat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_quat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_friction(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13geom_friction_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_margin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_margin_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_gap(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8geom_gap_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_user(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_user_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_rgba(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_rgba_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_type_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_bodyid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11site_bodyid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_matid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10site_matid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_group(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10site_group_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_size_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8site_pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_quat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_quat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_user(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_user_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_rgba(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9site_rgba_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_mode(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_mode_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_bodyid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10cam_bodyid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_targetbodyid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16cam_targetbodyid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7cam_pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_quat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_quat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_poscom0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11cam_poscom0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_pos0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_pos0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_mat0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_mat0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_fovy(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_fovy_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_ipd(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7cam_ipd_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_user(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8cam_user_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_mode(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10light_mode_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_bodyid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12light_bodyid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_targetbodyid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_18light_targetbodyid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_directional(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17light_directional_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_castshadow(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16light_castshadow_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_active(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12light_active_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9light_pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_dir(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9light_dir_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_poscom0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13light_poscom0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_pos0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10light_pos0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_dir0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10light_dir0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_attenuation(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17light_attenuation_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_cutoff(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12light_cutoff_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_exponent(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14light_exponent_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_ambient(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13light_ambient_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_diffuse(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13light_diffuse_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_specular(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14light_specular_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_faceadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_faceadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_facenum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_facenum_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_vertadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_vertadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_vertnum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mesh_vertnum_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_graphadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13mesh_graphadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_vert(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9mesh_vert_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_normal(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11mesh_normal_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_face(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9mesh_face_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_graph(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10mesh_graph_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_size_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_nrow(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_nrow_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_ncol(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_ncol_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_adr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10hfield_adr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_data(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11hfield_data_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8tex_type_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_height(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tex_height_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_width(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9tex_width_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_adr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7tex_adr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_rgb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7tex_rgb_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_texid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9mat_texid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_texuniform(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14mat_texuniform_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_texrepeat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13mat_texrepeat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_emission(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mat_emission_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_specular(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12mat_specular_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_shininess(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13mat_shininess_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_reflectance(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_15mat_reflectance_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_rgba(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8mat_rgba_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_dim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8pair_dim_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_geom1(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10pair_geom1_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_geom2(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10pair_geom2_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_signature(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14pair_signature_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_solref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11pair_solref_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_solimp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11pair_solimp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_margin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11pair_margin_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_gap(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8pair_gap_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_friction(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13pair_friction_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_exclude_signature(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17exclude_signature_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7eq_type_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_obj1id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_obj1id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_obj2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_obj2id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_active(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_active_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_solref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_solref_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_solimp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9eq_solimp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_data(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7eq_data_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_adr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tendon_adr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_num(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tendon_num_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_matid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tendon_matid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_limited(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14tendon_limited_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_width(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tendon_width_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_solref_lim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_lim_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_solimp_lim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_lim_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_solref_fri(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solref_fri_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_solimp_fri(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_solimp_fri_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_range(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tendon_range_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_margin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13tendon_margin_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_stiffness(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16tendon_stiffness_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_damping(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14tendon_damping_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_frictionloss(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_19tendon_frictionloss_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_lengthspring(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_19tendon_lengthspring_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_length0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14tendon_length0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_invweight0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17tendon_invweight0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_user(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11tendon_user_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_rgba(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11tendon_rgba_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_wrap_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9wrap_type_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_wrap_objid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10wrap_objid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_wrap_prm(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8wrap_prm_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_trntype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_trntype_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_dyntype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_dyntype_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_gaintype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17actuator_gaintype_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_biastype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17actuator_biastype_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_trnid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14actuator_trnid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_ctrllimited(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_20actuator_ctrllimited_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_forcelimited(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_21actuator_forcelimited_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_dynprm(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_15actuator_dynprm_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_gainprm(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_gainprm_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_biasprm(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_biasprm_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_ctrlrange(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_18actuator_ctrlrange_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_forcerange(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_19actuator_forcerange_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_gear(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13actuator_gear_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_cranklength(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_20actuator_cranklength_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_invweight0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_19actuator_invweight0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_length0(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16actuator_length0_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_lengthrange(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_20actuator_lengthrange_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_user(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13actuator_user_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11sensor_type_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_datatype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_15sensor_datatype_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_needstage(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16sensor_needstage_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_objtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14sensor_objtype_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_objid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12sensor_objid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_dim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10sensor_dim_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_adr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10sensor_adr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_cutoff(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13sensor_cutoff_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_noise(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12sensor_noise_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_user(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11sensor_user_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_numeric_adr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11numeric_adr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_numeric_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12numeric_size_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_numeric_data(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12numeric_data_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_text_adr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8text_adr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_text_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9text_size_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_text_data(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9text_data_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_adr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_9tuple_adr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10tuple_size_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_objtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13tuple_objtype_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_objid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11tuple_objid_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_objprm(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12tuple_objprm_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_key_time(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8key_time_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_key_qpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8key_qpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_key_qvel(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_8key_qvel_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_key_act(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_7key_act_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_bodyadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_bodyadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_jntadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_jntadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_geomadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_geomadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_siteadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_siteadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_camadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_camadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_lightadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13name_lightadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_meshadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_meshadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_hfieldadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14name_hfieldadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_texadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_texadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_matadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11name_matadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_eqadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10name_eqadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_tendonadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14name_tendonadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_actuatoradr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_16name_actuatoradr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_sensoradr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14name_sensoradr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_numericadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_15name_numericadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_textadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12name_textadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_tupleadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13name_tupleadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_5names_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10body_names_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_joint_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11joint_names_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10geom_names_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_10site_names_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_11light_names_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_camera_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12camera_names_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14actuator_names_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_12sensor_names_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__body_id2name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_body_id2name_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__joint_id2name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_joint_id2name_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__geom_id2name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_geom_id2name_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__site_id2name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_site_id2name_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__light_id2name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_light_id2name_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__camera_id2name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_camera_id2name_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__actuator_id2name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_actuator_id2name_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__sensor_id2name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_sensor_id2name_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__body_name2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_body_name2id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__joint_name2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_joint_name2id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__geom_name2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_geom_name2id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__site_name2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_13_site_name2id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__light_name2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14_light_name2id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__camera_name2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_camera_name2id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__actuator_name2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_actuator_name2id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__sensor_name2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_15_sensor_name2id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel_userdata_names(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14userdata_names_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_userdata_names(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14userdata_names_3__set__(o, v);
  }
  else {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_14userdata_names_5__del__(o);
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__userdata_id2name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel__userdata_id2name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_3__set__(o, v);
  }
  else {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_id2name_5__del__(o);
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjModel__userdata_name2id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjModel__userdata_name2id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_3__set__(o, v);
  }
  else {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjModel_17_userdata_name2id_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjModel[] = {
  {"body_id2name", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_1body_id2name, METH_O, 0},
  {"body_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_3body_name2id, METH_O, 0},
  {"joint_id2name", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_5joint_id2name, METH_O, 0},
  {"joint_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_7joint_name2id, METH_O, 0},
  {"geom_id2name", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_9geom_id2name, METH_O, 0},
  {"geom_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_11geom_name2id, METH_O, 0},
  {"site_id2name", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_13site_id2name, METH_O, 0},
  {"site_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_15site_name2id, METH_O, 0},
  {"light_id2name", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_17light_id2name, METH_O, 0},
  {"light_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_19light_name2id, METH_O, 0},
  {"camera_id2name", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_21camera_id2name, METH_O, 0},
  {"camera_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_23camera_name2id, METH_O, 0},
  {"actuator_id2name", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_25actuator_id2name, METH_O, 0},
  {"actuator_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_27actuator_name2id, METH_O, 0},
  {"sensor_id2name", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_29sensor_id2name, METH_O, 0},
  {"sensor_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_31sensor_name2id, METH_O, 0},
  {"userdata_id2name", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_33userdata_id2name, METH_O, 0},
  {"userdata_name2id", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_35userdata_name2id, METH_O, 0},
  {"get_xml", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_37get_xml, METH_NOARGS, 0},
  {"get_mjb", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_39get_mjb, METH_NOARGS, 0},
  {"set_userdata_names", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_41set_userdata_names, METH_O, 0},
  {"get_joint_qpos_addr", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_45get_joint_qpos_addr, METH_O, __pyx_doc_9mujoco_py_4cymj_9PyMjModel_44get_joint_qpos_addr},
  {"get_joint_qvel_addr", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_47get_joint_qvel_addr, METH_O, __pyx_doc_9mujoco_py_4cymj_9PyMjModel_46get_joint_qvel_addr},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_49__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjModel_51__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjModel[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_uintptr, 0, (char *)0, 0},
  {(char *)"nq", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nq, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nq, (char *)0, 0},
  {(char *)"nv", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nv, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nv, (char *)0, 0},
  {(char *)"nu", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nu, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nu, (char *)0, 0},
  {(char *)"na", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_na, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_na, (char *)0, 0},
  {(char *)"nbody", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nbody, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nbody, (char *)0, 0},
  {(char *)"njnt", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_njnt, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_njnt, (char *)0, 0},
  {(char *)"ngeom", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ngeom, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ngeom, (char *)0, 0},
  {(char *)"nsite", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nsite, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nsite, (char *)0, 0},
  {(char *)"ncam", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ncam, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ncam, (char *)0, 0},
  {(char *)"nlight", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nlight, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nlight, (char *)0, 0},
  {(char *)"nmesh", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmesh, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmesh, (char *)0, 0},
  {(char *)"nmeshvert", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmeshvert, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmeshvert, (char *)0, 0},
  {(char *)"nmeshface", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmeshface, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmeshface, (char *)0, 0},
  {(char *)"nmeshgraph", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmeshgraph, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmeshgraph, (char *)0, 0},
  {(char *)"nhfield", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nhfield, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nhfield, (char *)0, 0},
  {(char *)"nhfielddata", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nhfielddata, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nhfielddata, (char *)0, 0},
  {(char *)"ntex", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntex, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntex, (char *)0, 0},
  {(char *)"ntexdata", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntexdata, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntexdata, (char *)0, 0},
  {(char *)"nmat", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmat, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmat, (char *)0, 0},
  {(char *)"npair", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_npair, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_npair, (char *)0, 0},
  {(char *)"nexclude", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nexclude, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nexclude, (char *)0, 0},
  {(char *)"neq", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_neq, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_neq, (char *)0, 0},
  {(char *)"ntendon", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntendon, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntendon, (char *)0, 0},
  {(char *)"nwrap", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nwrap, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nwrap, (char *)0, 0},
  {(char *)"nsensor", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nsensor, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nsensor, (char *)0, 0},
  {(char *)"nnumeric", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nnumeric, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nnumeric, (char *)0, 0},
  {(char *)"nnumericdata", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nnumericdata, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nnumericdata, (char *)0, 0},
  {(char *)"ntext", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntext, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntext, (char *)0, 0},
  {(char *)"ntextdata", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntextdata, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntextdata, (char *)0, 0},
  {(char *)"ntuple", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntuple, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntuple, (char *)0, 0},
  {(char *)"ntupledata", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_ntupledata, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_ntupledata, (char *)0, 0},
  {(char *)"nkey", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nkey, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nkey, (char *)0, 0},
  {(char *)"nuser_body", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_body, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_body, (char *)0, 0},
  {(char *)"nuser_jnt", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_jnt, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_jnt, (char *)0, 0},
  {(char *)"nuser_geom", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_geom, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_geom, (char *)0, 0},
  {(char *)"nuser_site", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_site, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_site, (char *)0, 0},
  {(char *)"nuser_cam", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_cam, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_cam, (char *)0, 0},
  {(char *)"nuser_tendon", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_tendon, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_tendon, (char *)0, 0},
  {(char *)"nuser_actuator", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_actuator, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_actuator, (char *)0, 0},
  {(char *)"nuser_sensor", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuser_sensor, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuser_sensor, (char *)0, 0},
  {(char *)"nnames", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nnames, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nnames, (char *)0, 0},
  {(char *)"nM", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nM, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nM, (char *)0, 0},
  {(char *)"nemax", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nemax, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nemax, (char *)0, 0},
  {(char *)"njmax", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_njmax, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_njmax, (char *)0, 0},
  {(char *)"nconmax", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nconmax, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nconmax, (char *)0, 0},
  {(char *)"nstack", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nstack, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nstack, (char *)0, 0},
  {(char *)"nuserdata", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nuserdata, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nuserdata, (char *)0, 0},
  {(char *)"nmocap", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nmocap, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nmocap, (char *)0, 0},
  {(char *)"nsensordata", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nsensordata, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nsensordata, (char *)0, 0},
  {(char *)"nbuffer", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_nbuffer, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_nbuffer, (char *)0, 0},
  {(char *)"opt", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_opt, 0, (char *)0, 0},
  {(char *)"vis", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_vis, 0, (char *)0, 0},
  {(char *)"stat", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_stat, 0, (char *)0, 0},
  {(char *)"qpos0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_qpos0, 0, (char *)0, 0},
  {(char *)"qpos_spring", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_qpos_spring, 0, (char *)0, 0},
  {(char *)"body_parentid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_parentid, 0, (char *)0, 0},
  {(char *)"body_rootid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_rootid, 0, (char *)0, 0},
  {(char *)"body_weldid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_weldid, 0, (char *)0, 0},
  {(char *)"body_mocapid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_mocapid, 0, (char *)0, 0},
  {(char *)"body_jntnum", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_jntnum, 0, (char *)0, 0},
  {(char *)"body_jntadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_jntadr, 0, (char *)0, 0},
  {(char *)"body_dofnum", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_dofnum, 0, (char *)0, 0},
  {(char *)"body_dofadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_dofadr, 0, (char *)0, 0},
  {(char *)"body_geomnum", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_geomnum, 0, (char *)0, 0},
  {(char *)"body_geomadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_geomadr, 0, (char *)0, 0},
  {(char *)"body_pos", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_pos, 0, (char *)0, 0},
  {(char *)"body_quat", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_quat, 0, (char *)0, 0},
  {(char *)"body_ipos", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_ipos, 0, (char *)0, 0},
  {(char *)"body_iquat", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_iquat, 0, (char *)0, 0},
  {(char *)"body_mass", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_mass, 0, (char *)0, 0},
  {(char *)"body_subtreemass", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_subtreemass, 0, (char *)0, 0},
  {(char *)"body_inertia", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_inertia, 0, (char *)0, 0},
  {(char *)"body_invweight0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_invweight0, 0, (char *)0, 0},
  {(char *)"body_user", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_user, 0, (char *)0, 0},
  {(char *)"jnt_type", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_type, 0, (char *)0, 0},
  {(char *)"jnt_qposadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_qposadr, 0, (char *)0, 0},
  {(char *)"jnt_dofadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_dofadr, 0, (char *)0, 0},
  {(char *)"jnt_bodyid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_bodyid, 0, (char *)0, 0},
  {(char *)"jnt_limited", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_limited, 0, (char *)0, 0},
  {(char *)"jnt_solref", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_solref, 0, (char *)0, 0},
  {(char *)"jnt_solimp", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_solimp, 0, (char *)0, 0},
  {(char *)"jnt_pos", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_pos, 0, (char *)0, 0},
  {(char *)"jnt_axis", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_axis, 0, (char *)0, 0},
  {(char *)"jnt_stiffness", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_stiffness, 0, (char *)0, 0},
  {(char *)"jnt_range", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_range, 0, (char *)0, 0},
  {(char *)"jnt_margin", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_margin, 0, (char *)0, 0},
  {(char *)"jnt_user", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_jnt_user, 0, (char *)0, 0},
  {(char *)"dof_bodyid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_bodyid, 0, (char *)0, 0},
  {(char *)"dof_jntid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_jntid, 0, (char *)0, 0},
  {(char *)"dof_parentid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_parentid, 0, (char *)0, 0},
  {(char *)"dof_Madr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_Madr, 0, (char *)0, 0},
  {(char *)"dof_solref", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_solref, 0, (char *)0, 0},
  {(char *)"dof_solimp", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_solimp, 0, (char *)0, 0},
  {(char *)"dof_frictionloss", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_frictionloss, 0, (char *)0, 0},
  {(char *)"dof_armature", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_armature, 0, (char *)0, 0},
  {(char *)"dof_damping", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_damping, 0, (char *)0, 0},
  {(char *)"dof_invweight0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_dof_invweight0, 0, (char *)0, 0},
  {(char *)"geom_type", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_type, 0, (char *)0, 0},
  {(char *)"geom_contype", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_contype, 0, (char *)0, 0},
  {(char *)"geom_conaffinity", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_conaffinity, 0, (char *)0, 0},
  {(char *)"geom_condim", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_condim, 0, (char *)0, 0},
  {(char *)"geom_bodyid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_bodyid, 0, (char *)0, 0},
  {(char *)"geom_dataid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_dataid, 0, (char *)0, 0},
  {(char *)"geom_matid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_matid, 0, (char *)0, 0},
  {(char *)"geom_group", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_group, 0, (char *)0, 0},
  {(char *)"geom_solmix", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_solmix, 0, (char *)0, 0},
  {(char *)"geom_solref", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_solref, 0, (char *)0, 0},
  {(char *)"geom_solimp", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_solimp, 0, (char *)0, 0},
  {(char *)"geom_size", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_size, 0, (char *)0, 0},
  {(char *)"geom_rbound", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_rbound, 0, (char *)0, 0},
  {(char *)"geom_pos", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_pos, 0, (char *)0, 0},
  {(char *)"geom_quat", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_quat, 0, (char *)0, 0},
  {(char *)"geom_friction", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_friction, 0, (char *)0, 0},
  {(char *)"geom_margin", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_margin, 0, (char *)0, 0},
  {(char *)"geom_gap", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_gap, 0, (char *)0, 0},
  {(char *)"geom_user", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_user, 0, (char *)0, 0},
  {(char *)"geom_rgba", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_rgba, 0, (char *)0, 0},
  {(char *)"site_type", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_type, 0, (char *)0, 0},
  {(char *)"site_bodyid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_bodyid, 0, (char *)0, 0},
  {(char *)"site_matid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_matid, 0, (char *)0, 0},
  {(char *)"site_group", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_group, 0, (char *)0, 0},
  {(char *)"site_size", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_size, 0, (char *)0, 0},
  {(char *)"site_pos", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_pos, 0, (char *)0, 0},
  {(char *)"site_quat", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_quat, 0, (char *)0, 0},
  {(char *)"site_user", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_user, 0, (char *)0, 0},
  {(char *)"site_rgba", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_rgba, 0, (char *)0, 0},
  {(char *)"cam_mode", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_mode, 0, (char *)0, 0},
  {(char *)"cam_bodyid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_bodyid, 0, (char *)0, 0},
  {(char *)"cam_targetbodyid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_targetbodyid, 0, (char *)0, 0},
  {(char *)"cam_pos", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_pos, 0, (char *)0, 0},
  {(char *)"cam_quat", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_quat, 0, (char *)0, 0},
  {(char *)"cam_poscom0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_poscom0, 0, (char *)0, 0},
  {(char *)"cam_pos0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_pos0, 0, (char *)0, 0},
  {(char *)"cam_mat0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_mat0, 0, (char *)0, 0},
  {(char *)"cam_fovy", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_fovy, 0, (char *)0, 0},
  {(char *)"cam_ipd", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_ipd, 0, (char *)0, 0},
  {(char *)"cam_user", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_cam_user, 0, (char *)0, 0},
  {(char *)"light_mode", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_mode, 0, (char *)0, 0},
  {(char *)"light_bodyid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_bodyid, 0, (char *)0, 0},
  {(char *)"light_targetbodyid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_targetbodyid, 0, (char *)0, 0},
  {(char *)"light_directional", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_directional, 0, (char *)0, 0},
  {(char *)"light_castshadow", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_castshadow, 0, (char *)0, 0},
  {(char *)"light_active", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_active, 0, (char *)0, 0},
  {(char *)"light_pos", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_pos, 0, (char *)0, 0},
  {(char *)"light_dir", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_dir, 0, (char *)0, 0},
  {(char *)"light_poscom0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_poscom0, 0, (char *)0, 0},
  {(char *)"light_pos0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_pos0, 0, (char *)0, 0},
  {(char *)"light_dir0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_dir0, 0, (char *)0, 0},
  {(char *)"light_attenuation", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_attenuation, 0, (char *)0, 0},
  {(char *)"light_cutoff", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_cutoff, 0, (char *)0, 0},
  {(char *)"light_exponent", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_exponent, 0, (char *)0, 0},
  {(char *)"light_ambient", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_ambient, 0, (char *)0, 0},
  {(char *)"light_diffuse", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_diffuse, 0, (char *)0, 0},
  {(char *)"light_specular", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_specular, 0, (char *)0, 0},
  {(char *)"mesh_faceadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_faceadr, 0, (char *)0, 0},
  {(char *)"mesh_facenum", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_facenum, 0, (char *)0, 0},
  {(char *)"mesh_vertadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_vertadr, 0, (char *)0, 0},
  {(char *)"mesh_vertnum", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_vertnum, 0, (char *)0, 0},
  {(char *)"mesh_graphadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_graphadr, 0, (char *)0, 0},
  {(char *)"mesh_vert", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_vert, 0, (char *)0, 0},
  {(char *)"mesh_normal", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_normal, 0, (char *)0, 0},
  {(char *)"mesh_face", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_face, 0, (char *)0, 0},
  {(char *)"mesh_graph", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mesh_graph, 0, (char *)0, 0},
  {(char *)"hfield_size", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_size, 0, (char *)0, 0},
  {(char *)"hfield_nrow", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_nrow, 0, (char *)0, 0},
  {(char *)"hfield_ncol", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_ncol, 0, (char *)0, 0},
  {(char *)"hfield_adr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_adr, 0, (char *)0, 0},
  {(char *)"hfield_data", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_hfield_data, 0, (char *)0, 0},
  {(char *)"tex_type", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_type, 0, (char *)0, 0},
  {(char *)"tex_height", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_height, 0, (char *)0, 0},
  {(char *)"tex_width", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_width, 0, (char *)0, 0},
  {(char *)"tex_adr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_adr, 0, (char *)0, 0},
  {(char *)"tex_rgb", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tex_rgb, 0, (char *)0, 0},
  {(char *)"mat_texid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_texid, 0, (char *)0, 0},
  {(char *)"mat_texuniform", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_texuniform, 0, (char *)0, 0},
  {(char *)"mat_texrepeat", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_texrepeat, 0, (char *)0, 0},
  {(char *)"mat_emission", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_emission, 0, (char *)0, 0},
  {(char *)"mat_specular", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_specular, 0, (char *)0, 0},
  {(char *)"mat_shininess", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_shininess, 0, (char *)0, 0},
  {(char *)"mat_reflectance", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_reflectance, 0, (char *)0, 0},
  {(char *)"mat_rgba", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_mat_rgba, 0, (char *)0, 0},
  {(char *)"pair_dim", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_dim, 0, (char *)0, 0},
  {(char *)"pair_geom1", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_geom1, 0, (char *)0, 0},
  {(char *)"pair_geom2", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_geom2, 0, (char *)0, 0},
  {(char *)"pair_signature", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_signature, 0, (char *)0, 0},
  {(char *)"pair_solref", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_solref, 0, (char *)0, 0},
  {(char *)"pair_solimp", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_solimp, 0, (char *)0, 0},
  {(char *)"pair_margin", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_margin, 0, (char *)0, 0},
  {(char *)"pair_gap", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_gap, 0, (char *)0, 0},
  {(char *)"pair_friction", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_pair_friction, 0, (char *)0, 0},
  {(char *)"exclude_signature", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_exclude_signature, 0, (char *)0, 0},
  {(char *)"eq_type", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_type, 0, (char *)0, 0},
  {(char *)"eq_obj1id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_obj1id, 0, (char *)0, 0},
  {(char *)"eq_obj2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_obj2id, 0, (char *)0, 0},
  {(char *)"eq_active", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_active, 0, (char *)0, 0},
  {(char *)"eq_solref", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_solref, 0, (char *)0, 0},
  {(char *)"eq_solimp", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_solimp, 0, (char *)0, 0},
  {(char *)"eq_data", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_eq_data, 0, (char *)0, 0},
  {(char *)"tendon_adr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_adr, 0, (char *)0, 0},
  {(char *)"tendon_num", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_num, 0, (char *)0, 0},
  {(char *)"tendon_matid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_matid, 0, (char *)0, 0},
  {(char *)"tendon_limited", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_limited, 0, (char *)0, 0},
  {(char *)"tendon_width", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_width, 0, (char *)0, 0},
  {(char *)"tendon_solref_lim", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_solref_lim, 0, (char *)0, 0},
  {(char *)"tendon_solimp_lim", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_solimp_lim, 0, (char *)0, 0},
  {(char *)"tendon_solref_fri", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_solref_fri, 0, (char *)0, 0},
  {(char *)"tendon_solimp_fri", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_solimp_fri, 0, (char *)0, 0},
  {(char *)"tendon_range", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_range, 0, (char *)0, 0},
  {(char *)"tendon_margin", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_margin, 0, (char *)0, 0},
  {(char *)"tendon_stiffness", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_stiffness, 0, (char *)0, 0},
  {(char *)"tendon_damping", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_damping, 0, (char *)0, 0},
  {(char *)"tendon_frictionloss", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_frictionloss, 0, (char *)0, 0},
  {(char *)"tendon_lengthspring", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_lengthspring, 0, (char *)0, 0},
  {(char *)"tendon_length0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_length0, 0, (char *)0, 0},
  {(char *)"tendon_invweight0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_invweight0, 0, (char *)0, 0},
  {(char *)"tendon_user", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_user, 0, (char *)0, 0},
  {(char *)"tendon_rgba", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tendon_rgba, 0, (char *)0, 0},
  {(char *)"wrap_type", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_wrap_type, 0, (char *)0, 0},
  {(char *)"wrap_objid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_wrap_objid, 0, (char *)0, 0},
  {(char *)"wrap_prm", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_wrap_prm, 0, (char *)0, 0},
  {(char *)"actuator_trntype", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_trntype, 0, (char *)0, 0},
  {(char *)"actuator_dyntype", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_dyntype, 0, (char *)0, 0},
  {(char *)"actuator_gaintype", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_gaintype, 0, (char *)0, 0},
  {(char *)"actuator_biastype", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_biastype, 0, (char *)0, 0},
  {(char *)"actuator_trnid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_trnid, 0, (char *)0, 0},
  {(char *)"actuator_ctrllimited", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_ctrllimited, 0, (char *)0, 0},
  {(char *)"actuator_forcelimited", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_forcelimited, 0, (char *)0, 0},
  {(char *)"actuator_dynprm", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_dynprm, 0, (char *)0, 0},
  {(char *)"actuator_gainprm", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_gainprm, 0, (char *)0, 0},
  {(char *)"actuator_biasprm", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_biasprm, 0, (char *)0, 0},
  {(char *)"actuator_ctrlrange", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_ctrlrange, 0, (char *)0, 0},
  {(char *)"actuator_forcerange", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_forcerange, 0, (char *)0, 0},
  {(char *)"actuator_gear", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_gear, 0, (char *)0, 0},
  {(char *)"actuator_cranklength", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_cranklength, 0, (char *)0, 0},
  {(char *)"actuator_invweight0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_invweight0, 0, (char *)0, 0},
  {(char *)"actuator_length0", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_length0, 0, (char *)0, 0},
  {(char *)"actuator_lengthrange", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_lengthrange, 0, (char *)0, 0},
  {(char *)"actuator_user", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_user, 0, (char *)0, 0},
  {(char *)"sensor_type", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_type, 0, (char *)0, 0},
  {(char *)"sensor_datatype", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_datatype, 0, (char *)0, 0},
  {(char *)"sensor_needstage", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_needstage, 0, (char *)0, 0},
  {(char *)"sensor_objtype", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_objtype, 0, (char *)0, 0},
  {(char *)"sensor_objid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_objid, 0, (char *)0, 0},
  {(char *)"sensor_dim", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_dim, 0, (char *)0, 0},
  {(char *)"sensor_adr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_adr, 0, (char *)0, 0},
  {(char *)"sensor_cutoff", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_cutoff, 0, (char *)0, 0},
  {(char *)"sensor_noise", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_noise, 0, (char *)0, 0},
  {(char *)"sensor_user", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_user, 0, (char *)0, 0},
  {(char *)"numeric_adr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_numeric_adr, 0, (char *)0, 0},
  {(char *)"numeric_size", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_numeric_size, 0, (char *)0, 0},
  {(char *)"numeric_data", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_numeric_data, 0, (char *)0, 0},
  {(char *)"text_adr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_text_adr, 0, (char *)0, 0},
  {(char *)"text_size", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_text_size, 0, (char *)0, 0},
  {(char *)"text_data", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_text_data, 0, (char *)0, 0},
  {(char *)"tuple_adr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_adr, 0, (char *)0, 0},
  {(char *)"tuple_size", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_size, 0, (char *)0, 0},
  {(char *)"tuple_objtype", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_objtype, 0, (char *)0, 0},
  {(char *)"tuple_objid", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_objid, 0, (char *)0, 0},
  {(char *)"tuple_objprm", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_tuple_objprm, 0, (char *)0, 0},
  {(char *)"key_time", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_key_time, 0, (char *)0, 0},
  {(char *)"key_qpos", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_key_qpos, 0, (char *)0, 0},
  {(char *)"key_qvel", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_key_qvel, 0, (char *)0, 0},
  {(char *)"key_act", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_key_act, 0, (char *)0, 0},
  {(char *)"name_bodyadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_bodyadr, 0, (char *)0, 0},
  {(char *)"name_jntadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_jntadr, 0, (char *)0, 0},
  {(char *)"name_geomadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_geomadr, 0, (char *)0, 0},
  {(char *)"name_siteadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_siteadr, 0, (char *)0, 0},
  {(char *)"name_camadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_camadr, 0, (char *)0, 0},
  {(char *)"name_lightadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_lightadr, 0, (char *)0, 0},
  {(char *)"name_meshadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_meshadr, 0, (char *)0, 0},
  {(char *)"name_hfieldadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_hfieldadr, 0, (char *)0, 0},
  {(char *)"name_texadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_texadr, 0, (char *)0, 0},
  {(char *)"name_matadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_matadr, 0, (char *)0, 0},
  {(char *)"name_eqadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_eqadr, 0, (char *)0, 0},
  {(char *)"name_tendonadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_tendonadr, 0, (char *)0, 0},
  {(char *)"name_actuatoradr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_actuatoradr, 0, (char *)0, 0},
  {(char *)"name_sensoradr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_sensoradr, 0, (char *)0, 0},
  {(char *)"name_numericadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_numericadr, 0, (char *)0, 0},
  {(char *)"name_textadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_textadr, 0, (char *)0, 0},
  {(char *)"name_tupleadr", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_name_tupleadr, 0, (char *)0, 0},
  {(char *)"names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_names, 0, (char *)0, 0},
  {(char *)"body_names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_body_names, 0, (char *)0, 0},
  {(char *)"joint_names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_joint_names, 0, (char *)0, 0},
  {(char *)"geom_names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_geom_names, 0, (char *)0, 0},
  {(char *)"site_names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_site_names, 0, (char *)0, 0},
  {(char *)"light_names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_light_names, 0, (char *)0, 0},
  {(char *)"camera_names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_camera_names, 0, (char *)0, 0},
  {(char *)"actuator_names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_actuator_names, 0, (char *)0, 0},
  {(char *)"sensor_names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_sensor_names, 0, (char *)0, 0},
  {(char *)"_body_id2name", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__body_id2name, 0, (char *)0, 0},
  {(char *)"_joint_id2name", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__joint_id2name, 0, (char *)0, 0},
  {(char *)"_geom_id2name", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__geom_id2name, 0, (char *)0, 0},
  {(char *)"_site_id2name", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__site_id2name, 0, (char *)0, 0},
  {(char *)"_light_id2name", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__light_id2name, 0, (char *)0, 0},
  {(char *)"_camera_id2name", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__camera_id2name, 0, (char *)0, 0},
  {(char *)"_actuator_id2name", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__actuator_id2name, 0, (char *)0, 0},
  {(char *)"_sensor_id2name", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__sensor_id2name, 0, (char *)0, 0},
  {(char *)"_body_name2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__body_name2id, 0, (char *)0, 0},
  {(char *)"_joint_name2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__joint_name2id, 0, (char *)0, 0},
  {(char *)"_geom_name2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__geom_name2id, 0, (char *)0, 0},
  {(char *)"_site_name2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__site_name2id, 0, (char *)0, 0},
  {(char *)"_light_name2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__light_name2id, 0, (char *)0, 0},
  {(char *)"_camera_name2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__camera_name2id, 0, (char *)0, 0},
  {(char *)"_actuator_name2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__actuator_name2id, 0, (char *)0, 0},
  {(char *)"_sensor_name2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__sensor_name2id, 0, (char *)0, 0},
  {(char *)"userdata_names", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel_userdata_names, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel_userdata_names, (char *)0, 0},
  {(char *)"_userdata_id2name", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__userdata_id2name, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel__userdata_id2name, (char *)0, 0},
  {(char *)"_userdata_name2id", __pyx_getprop_9mujoco_py_4cymj_9PyMjModel__userdata_name2id, __pyx_setprop_9mujoco_py_4cymj_9PyMjModel__userdata_name2id, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjModel = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjModel", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjModel, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjModel, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjModel, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjModel, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjModel, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjModel, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjContact __pyx_vtable_9mujoco_py_4cymj_PyMjContact;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjContact(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjContact;
  p->_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_frame = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_friction = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_H = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_11PyMjContact_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjContact(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_pos);
  Py_CLEAR(p->_frame);
  Py_CLEAR(p->_friction);
  Py_CLEAR(p->_solref);
  Py_CLEAR(p->_solimp);
  Py_CLEAR(p->_H);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjContact(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)o;
  if (p->_pos) {
    e = (*v)(((PyObject *)p->_pos), a); if (e) return e;
  }
  if (p->_frame) {
    e = (*v)(((PyObject *)p->_frame), a); if (e) return e;
  }
  if (p->_friction) {
    e = (*v)(((PyObject *)p->_friction), a); if (e) return e;
  }
  if (p->_solref) {
    e = (*v)(((PyObject *)p->_solref), a); if (e) return e;
  }
  if (p->_solimp) {
    e = (*v)(((PyObject *)p->_solimp), a); if (e) return e;
  }
  if (p->_H) {
    e = (*v)(((PyObject *)p->_H), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjContact(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *)o;
  tmp = ((PyObject*)p->_pos);
  p->_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_frame);
  p->_frame = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_friction);
  p->_friction = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_solref);
  p->_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_solimp);
  p->_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_H);
  p->_H = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_dist(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_4dist_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_dist(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_4dist_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_includemargin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_13includemargin_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_includemargin(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_13includemargin_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_mu(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_2mu_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_mu(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_2mu_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_dim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_3dim_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_dim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_3dim_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_geom1(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom1_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_geom1(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom1_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_geom2(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom2_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_geom2(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_5geom2_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_exclude(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_7exclude_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_exclude(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_7exclude_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_efc_address(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_11efc_address_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_efc_address(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_11efc_address_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_3pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_frame(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_5frame_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_friction(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_8friction_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_solref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_6solref_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_solimp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_6solimp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjContact_H(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjContact_1H_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjContact[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11PyMjContact_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11PyMjContact_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjContact[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_uintptr, 0, (char *)0, 0},
  {(char *)"dist", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_dist, __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_dist, (char *)0, 0},
  {(char *)"includemargin", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_includemargin, __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_includemargin, (char *)0, 0},
  {(char *)"mu", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_mu, __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_mu, (char *)0, 0},
  {(char *)"dim", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_dim, __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_dim, (char *)0, 0},
  {(char *)"geom1", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_geom1, __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_geom1, (char *)0, 0},
  {(char *)"geom2", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_geom2, __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_geom2, (char *)0, 0},
  {(char *)"exclude", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_exclude, __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_exclude, (char *)0, 0},
  {(char *)"efc_address", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_efc_address, __pyx_setprop_9mujoco_py_4cymj_11PyMjContact_efc_address, (char *)0, 0},
  {(char *)"pos", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_pos, 0, (char *)0, 0},
  {(char *)"frame", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_frame, 0, (char *)0, 0},
  {(char *)"friction", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_friction, 0, (char *)0, 0},
  {(char *)"solref", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_solref, 0, (char *)0, 0},
  {(char *)"solimp", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_solimp, 0, (char *)0, 0},
  {(char *)"H", __pyx_getprop_9mujoco_py_4cymj_11PyMjContact_H, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjContact = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjContact", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjContact, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjContact, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjContact, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjContact, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjContact, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjContact, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjWarningStat __pyx_vtable_9mujoco_py_4cymj_PyMjWarningStat;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjWarningStat(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjWarningStat;
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjWarningStat(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjWarningStat_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjWarningStat_lastinfo(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_15PyMjWarningStat_lastinfo(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_8lastinfo_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15PyMjWarningStat_number(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_6number_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_15PyMjWarningStat_number(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_6number_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjWarningStat[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15PyMjWarningStat_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjWarningStat[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_15PyMjWarningStat_uintptr, 0, (char *)0, 0},
  {(char *)"lastinfo", __pyx_getprop_9mujoco_py_4cymj_15PyMjWarningStat_lastinfo, __pyx_setprop_9mujoco_py_4cymj_15PyMjWarningStat_lastinfo, (char *)0, 0},
  {(char *)"number", __pyx_getprop_9mujoco_py_4cymj_15PyMjWarningStat_number, __pyx_setprop_9mujoco_py_4cymj_15PyMjWarningStat_number, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjWarningStat = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjWarningStat", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjWarningStat, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjWarningStat, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjWarningStat, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjWarningStat, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjTimerStat __pyx_vtable_9mujoco_py_4cymj_PyMjTimerStat;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjTimerStat(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjTimerStat;
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjTimerStat(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjTimerStat_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjTimerStat_duration(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_8duration_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjTimerStat_duration(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_8duration_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjTimerStat_number(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_6number_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjTimerStat_number(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_6number_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjTimerStat[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_13PyMjTimerStat_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjTimerStat[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_13PyMjTimerStat_uintptr, 0, (char *)0, 0},
  {(char *)"duration", __pyx_getprop_9mujoco_py_4cymj_13PyMjTimerStat_duration, __pyx_setprop_9mujoco_py_4cymj_13PyMjTimerStat_duration, (char *)0, 0},
  {(char *)"number", __pyx_getprop_9mujoco_py_4cymj_13PyMjTimerStat_number, __pyx_setprop_9mujoco_py_4cymj_13PyMjTimerStat_number, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjTimerStat = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjTimerStat", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjTimerStat, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjTimerStat, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjTimerStat, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjTimerStat, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjSolverStat __pyx_vtable_9mujoco_py_4cymj_PyMjSolverStat;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjSolverStat(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjSolverStat;
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjSolverStat(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_improvement(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_11improvement_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_improvement(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_11improvement_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_gradient(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_8gradient_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_gradient(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_8gradient_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_lineslope(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_lineslope(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_9lineslope_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_nactive(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nactive_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_nactive(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nactive_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_nchange(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nchange_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_nchange(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nchange_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_neval(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_5neval_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_neval(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_5neval_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_nupdate(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_nupdate(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_7nupdate_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjSolverStat[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_14PyMjSolverStat_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjSolverStat[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_uintptr, 0, (char *)0, 0},
  {(char *)"improvement", __pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_improvement, __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_improvement, (char *)0, 0},
  {(char *)"gradient", __pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_gradient, __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_gradient, (char *)0, 0},
  {(char *)"lineslope", __pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_lineslope, __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_lineslope, (char *)0, 0},
  {(char *)"nactive", __pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_nactive, __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_nactive, (char *)0, 0},
  {(char *)"nchange", __pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_nchange, __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_nchange, (char *)0, 0},
  {(char *)"neval", __pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_neval, __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_neval, (char *)0, 0},
  {(char *)"nupdate", __pyx_getprop_9mujoco_py_4cymj_14PyMjSolverStat_nupdate, __pyx_setprop_9mujoco_py_4cymj_14PyMjSolverStat_nupdate, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjSolverStat = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjSolverStat", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjSolverStat, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjSolverStat, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjSolverStat, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjSolverStat, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjData __pyx_vtable_9mujoco_py_4cymj_PyMjData;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjData(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjData;
  p->_model = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)Py_None); Py_INCREF(Py_None);
  p->_qpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qvel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_act = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_ctrl = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qfrc_applied = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_xfrc_applied = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qacc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_act_dot = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mocap_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mocap_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_userdata = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sensordata = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_xquat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_xmat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_xipos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_ximat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_xanchor = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_xaxis = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_geom_xmat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_site_xmat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cam_xmat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_light_xdir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_subtree_com = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cdof = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cinert = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_ten_wrapadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_ten_wrapnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_ten_length = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_ten_moment = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_wrap_obj = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_wrap_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_length = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_moment = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_crb = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qLD = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qLDiagInv = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qLDiagSqrtInv = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_contact = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_efc_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_id = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_J_rownnz = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_J_rowadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_J_colind = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_JT_rownnz = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_JT_rowadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_JT_colind = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_frictionloss = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_J = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_JT = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_diagApprox = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_D = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_R = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_AR_rownnz = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_AR_rowadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_AR_colind = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_AR = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_ten_velocity = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_velocity = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cvel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cdof_dot = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qfrc_bias = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qfrc_passive = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_vel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_aref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_subtree_linvel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_subtree_angmom = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_actuator_force = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qfrc_actuator = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qfrc_unc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qacc_unc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_b = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_force = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_efc_state = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qfrc_constraint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qacc_warmstart = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_qfrc_inverse = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cacc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cfrc_int = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_cfrc_ext = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_warning = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_timer = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_solver = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_solver_fwdinv = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_energy = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjData(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_9mujoco_py_4cymj_8PyMjData_1__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_model);
  Py_CLEAR(p->_qpos);
  Py_CLEAR(p->_qvel);
  Py_CLEAR(p->_act);
  Py_CLEAR(p->_ctrl);
  Py_CLEAR(p->_qfrc_applied);
  Py_CLEAR(p->_xfrc_applied);
  Py_CLEAR(p->_qacc);
  Py_CLEAR(p->_act_dot);
  Py_CLEAR(p->_mocap_pos);
  Py_CLEAR(p->_mocap_quat);
  Py_CLEAR(p->_userdata);
  Py_CLEAR(p->_sensordata);
  Py_CLEAR(p->_xpos);
  Py_CLEAR(p->_xquat);
  Py_CLEAR(p->_xmat);
  Py_CLEAR(p->_xipos);
  Py_CLEAR(p->_ximat);
  Py_CLEAR(p->_xanchor);
  Py_CLEAR(p->_xaxis);
  Py_CLEAR(p->_geom_xpos);
  Py_CLEAR(p->_geom_xmat);
  Py_CLEAR(p->_site_xpos);
  Py_CLEAR(p->_site_xmat);
  Py_CLEAR(p->_cam_xpos);
  Py_CLEAR(p->_cam_xmat);
  Py_CLEAR(p->_light_xpos);
  Py_CLEAR(p->_light_xdir);
  Py_CLEAR(p->_subtree_com);
  Py_CLEAR(p->_cdof);
  Py_CLEAR(p->_cinert);
  Py_CLEAR(p->_ten_wrapadr);
  Py_CLEAR(p->_ten_wrapnum);
  Py_CLEAR(p->_ten_length);
  Py_CLEAR(p->_ten_moment);
  Py_CLEAR(p->_wrap_obj);
  Py_CLEAR(p->_wrap_xpos);
  Py_CLEAR(p->_actuator_length);
  Py_CLEAR(p->_actuator_moment);
  Py_CLEAR(p->_crb);
  Py_CLEAR(p->_qM);
  Py_CLEAR(p->_qLD);
  Py_CLEAR(p->_qLDiagInv);
  Py_CLEAR(p->_qLDiagSqrtInv);
  Py_CLEAR(p->_contact);
  Py_CLEAR(p->_efc_type);
  Py_CLEAR(p->_efc_id);
  Py_CLEAR(p->_efc_J_rownnz);
  Py_CLEAR(p->_efc_J_rowadr);
  Py_CLEAR(p->_efc_J_colind);
  Py_CLEAR(p->_efc_JT_rownnz);
  Py_CLEAR(p->_efc_JT_rowadr);
  Py_CLEAR(p->_efc_JT_colind);
  Py_CLEAR(p->_efc_solref);
  Py_CLEAR(p->_efc_solimp);
  Py_CLEAR(p->_efc_margin);
  Py_CLEAR(p->_efc_frictionloss);
  Py_CLEAR(p->_efc_pos);
  Py_CLEAR(p->_efc_J);
  Py_CLEAR(p->_efc_JT);
  Py_CLEAR(p->_efc_diagApprox);
  Py_CLEAR(p->_efc_D);
  Py_CLEAR(p->_efc_R);
  Py_CLEAR(p->_efc_AR_rownnz);
  Py_CLEAR(p->_efc_AR_rowadr);
  Py_CLEAR(p->_efc_AR_colind);
  Py_CLEAR(p->_efc_AR);
  Py_CLEAR(p->_ten_velocity);
  Py_CLEAR(p->_actuator_velocity);
  Py_CLEAR(p->_cvel);
  Py_CLEAR(p->_cdof_dot);
  Py_CLEAR(p->_qfrc_bias);
  Py_CLEAR(p->_qfrc_passive);
  Py_CLEAR(p->_efc_vel);
  Py_CLEAR(p->_efc_aref);
  Py_CLEAR(p->_subtree_linvel);
  Py_CLEAR(p->_subtree_angmom);
  Py_CLEAR(p->_actuator_force);
  Py_CLEAR(p->_qfrc_actuator);
  Py_CLEAR(p->_qfrc_unc);
  Py_CLEAR(p->_qacc_unc);
  Py_CLEAR(p->_efc_b);
  Py_CLEAR(p->_efc_force);
  Py_CLEAR(p->_efc_state);
  Py_CLEAR(p->_qfrc_constraint);
  Py_CLEAR(p->_qacc_warmstart);
  Py_CLEAR(p->_qfrc_inverse);
  Py_CLEAR(p->_cacc);
  Py_CLEAR(p->_cfrc_int);
  Py_CLEAR(p->_cfrc_ext);
  Py_CLEAR(p->_warning);
  Py_CLEAR(p->_timer);
  Py_CLEAR(p->_solver);
  Py_CLEAR(p->_solver_fwdinv);
  Py_CLEAR(p->_energy);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjData(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)o;
  if (p->_model) {
    e = (*v)(((PyObject *)p->_model), a); if (e) return e;
  }
  if (p->_qpos) {
    e = (*v)(((PyObject *)p->_qpos), a); if (e) return e;
  }
  if (p->_qvel) {
    e = (*v)(((PyObject *)p->_qvel), a); if (e) return e;
  }
  if (p->_act) {
    e = (*v)(((PyObject *)p->_act), a); if (e) return e;
  }
  if (p->_ctrl) {
    e = (*v)(((PyObject *)p->_ctrl), a); if (e) return e;
  }
  if (p->_qfrc_applied) {
    e = (*v)(((PyObject *)p->_qfrc_applied), a); if (e) return e;
  }
  if (p->_xfrc_applied) {
    e = (*v)(((PyObject *)p->_xfrc_applied), a); if (e) return e;
  }
  if (p->_qacc) {
    e = (*v)(((PyObject *)p->_qacc), a); if (e) return e;
  }
  if (p->_act_dot) {
    e = (*v)(((PyObject *)p->_act_dot), a); if (e) return e;
  }
  if (p->_mocap_pos) {
    e = (*v)(((PyObject *)p->_mocap_pos), a); if (e) return e;
  }
  if (p->_mocap_quat) {
    e = (*v)(((PyObject *)p->_mocap_quat), a); if (e) return e;
  }
  if (p->_userdata) {
    e = (*v)(((PyObject *)p->_userdata), a); if (e) return e;
  }
  if (p->_sensordata) {
    e = (*v)(((PyObject *)p->_sensordata), a); if (e) return e;
  }
  if (p->_xpos) {
    e = (*v)(((PyObject *)p->_xpos), a); if (e) return e;
  }
  if (p->_xquat) {
    e = (*v)(((PyObject *)p->_xquat), a); if (e) return e;
  }
  if (p->_xmat) {
    e = (*v)(((PyObject *)p->_xmat), a); if (e) return e;
  }
  if (p->_xipos) {
    e = (*v)(((PyObject *)p->_xipos), a); if (e) return e;
  }
  if (p->_ximat) {
    e = (*v)(((PyObject *)p->_ximat), a); if (e) return e;
  }
  if (p->_xanchor) {
    e = (*v)(((PyObject *)p->_xanchor), a); if (e) return e;
  }
  if (p->_xaxis) {
    e = (*v)(((PyObject *)p->_xaxis), a); if (e) return e;
  }
  if (p->_geom_xpos) {
    e = (*v)(((PyObject *)p->_geom_xpos), a); if (e) return e;
  }
  if (p->_geom_xmat) {
    e = (*v)(((PyObject *)p->_geom_xmat), a); if (e) return e;
  }
  if (p->_site_xpos) {
    e = (*v)(((PyObject *)p->_site_xpos), a); if (e) return e;
  }
  if (p->_site_xmat) {
    e = (*v)(((PyObject *)p->_site_xmat), a); if (e) return e;
  }
  if (p->_cam_xpos) {
    e = (*v)(((PyObject *)p->_cam_xpos), a); if (e) return e;
  }
  if (p->_cam_xmat) {
    e = (*v)(((PyObject *)p->_cam_xmat), a); if (e) return e;
  }
  if (p->_light_xpos) {
    e = (*v)(((PyObject *)p->_light_xpos), a); if (e) return e;
  }
  if (p->_light_xdir) {
    e = (*v)(((PyObject *)p->_light_xdir), a); if (e) return e;
  }
  if (p->_subtree_com) {
    e = (*v)(((PyObject *)p->_subtree_com), a); if (e) return e;
  }
  if (p->_cdof) {
    e = (*v)(((PyObject *)p->_cdof), a); if (e) return e;
  }
  if (p->_cinert) {
    e = (*v)(((PyObject *)p->_cinert), a); if (e) return e;
  }
  if (p->_ten_wrapadr) {
    e = (*v)(((PyObject *)p->_ten_wrapadr), a); if (e) return e;
  }
  if (p->_ten_wrapnum) {
    e = (*v)(((PyObject *)p->_ten_wrapnum), a); if (e) return e;
  }
  if (p->_ten_length) {
    e = (*v)(((PyObject *)p->_ten_length), a); if (e) return e;
  }
  if (p->_ten_moment) {
    e = (*v)(((PyObject *)p->_ten_moment), a); if (e) return e;
  }
  if (p->_wrap_obj) {
    e = (*v)(((PyObject *)p->_wrap_obj), a); if (e) return e;
  }
  if (p->_wrap_xpos) {
    e = (*v)(((PyObject *)p->_wrap_xpos), a); if (e) return e;
  }
  if (p->_actuator_length) {
    e = (*v)(((PyObject *)p->_actuator_length), a); if (e) return e;
  }
  if (p->_actuator_moment) {
    e = (*v)(((PyObject *)p->_actuator_moment), a); if (e) return e;
  }
  if (p->_crb) {
    e = (*v)(((PyObject *)p->_crb), a); if (e) return e;
  }
  if (p->_qM) {
    e = (*v)(((PyObject *)p->_qM), a); if (e) return e;
  }
  if (p->_qLD) {
    e = (*v)(((PyObject *)p->_qLD), a); if (e) return e;
  }
  if (p->_qLDiagInv) {
    e = (*v)(((PyObject *)p->_qLDiagInv), a); if (e) return e;
  }
  if (p->_qLDiagSqrtInv) {
    e = (*v)(((PyObject *)p->_qLDiagSqrtInv), a); if (e) return e;
  }
  if (p->_contact) {
    e = (*v)(p->_contact, a); if (e) return e;
  }
  if (p->_efc_type) {
    e = (*v)(((PyObject *)p->_efc_type), a); if (e) return e;
  }
  if (p->_efc_id) {
    e = (*v)(((PyObject *)p->_efc_id), a); if (e) return e;
  }
  if (p->_efc_J_rownnz) {
    e = (*v)(((PyObject *)p->_efc_J_rownnz), a); if (e) return e;
  }
  if (p->_efc_J_rowadr) {
    e = (*v)(((PyObject *)p->_efc_J_rowadr), a); if (e) return e;
  }
  if (p->_efc_J_colind) {
    e = (*v)(((PyObject *)p->_efc_J_colind), a); if (e) return e;
  }
  if (p->_efc_JT_rownnz) {
    e = (*v)(((PyObject *)p->_efc_JT_rownnz), a); if (e) return e;
  }
  if (p->_efc_JT_rowadr) {
    e = (*v)(((PyObject *)p->_efc_JT_rowadr), a); if (e) return e;
  }
  if (p->_efc_JT_colind) {
    e = (*v)(((PyObject *)p->_efc_JT_colind), a); if (e) return e;
  }
  if (p->_efc_solref) {
    e = (*v)(((PyObject *)p->_efc_solref), a); if (e) return e;
  }
  if (p->_efc_solimp) {
    e = (*v)(((PyObject *)p->_efc_solimp), a); if (e) return e;
  }
  if (p->_efc_margin) {
    e = (*v)(((PyObject *)p->_efc_margin), a); if (e) return e;
  }
  if (p->_efc_frictionloss) {
    e = (*v)(((PyObject *)p->_efc_frictionloss), a); if (e) return e;
  }
  if (p->_efc_pos) {
    e = (*v)(((PyObject *)p->_efc_pos), a); if (e) return e;
  }
  if (p->_efc_J) {
    e = (*v)(((PyObject *)p->_efc_J), a); if (e) return e;
  }
  if (p->_efc_JT) {
    e = (*v)(((PyObject *)p->_efc_JT), a); if (e) return e;
  }
  if (p->_efc_diagApprox) {
    e = (*v)(((PyObject *)p->_efc_diagApprox), a); if (e) return e;
  }
  if (p->_efc_D) {
    e = (*v)(((PyObject *)p->_efc_D), a); if (e) return e;
  }
  if (p->_efc_R) {
    e = (*v)(((PyObject *)p->_efc_R), a); if (e) return e;
  }
  if (p->_efc_AR_rownnz) {
    e = (*v)(((PyObject *)p->_efc_AR_rownnz), a); if (e) return e;
  }
  if (p->_efc_AR_rowadr) {
    e = (*v)(((PyObject *)p->_efc_AR_rowadr), a); if (e) return e;
  }
  if (p->_efc_AR_colind) {
    e = (*v)(((PyObject *)p->_efc_AR_colind), a); if (e) return e;
  }
  if (p->_efc_AR) {
    e = (*v)(((PyObject *)p->_efc_AR), a); if (e) return e;
  }
  if (p->_ten_velocity) {
    e = (*v)(((PyObject *)p->_ten_velocity), a); if (e) return e;
  }
  if (p->_actuator_velocity) {
    e = (*v)(((PyObject *)p->_actuator_velocity), a); if (e) return e;
  }
  if (p->_cvel) {
    e = (*v)(((PyObject *)p->_cvel), a); if (e) return e;
  }
  if (p->_cdof_dot) {
    e = (*v)(((PyObject *)p->_cdof_dot), a); if (e) return e;
  }
  if (p->_qfrc_bias) {
    e = (*v)(((PyObject *)p->_qfrc_bias), a); if (e) return e;
  }
  if (p->_qfrc_passive) {
    e = (*v)(((PyObject *)p->_qfrc_passive), a); if (e) return e;
  }
  if (p->_efc_vel) {
    e = (*v)(((PyObject *)p->_efc_vel), a); if (e) return e;
  }
  if (p->_efc_aref) {
    e = (*v)(((PyObject *)p->_efc_aref), a); if (e) return e;
  }
  if (p->_subtree_linvel) {
    e = (*v)(((PyObject *)p->_subtree_linvel), a); if (e) return e;
  }
  if (p->_subtree_angmom) {
    e = (*v)(((PyObject *)p->_subtree_angmom), a); if (e) return e;
  }
  if (p->_actuator_force) {
    e = (*v)(((PyObject *)p->_actuator_force), a); if (e) return e;
  }
  if (p->_qfrc_actuator) {
    e = (*v)(((PyObject *)p->_qfrc_actuator), a); if (e) return e;
  }
  if (p->_qfrc_unc) {
    e = (*v)(((PyObject *)p->_qfrc_unc), a); if (e) return e;
  }
  if (p->_qacc_unc) {
    e = (*v)(((PyObject *)p->_qacc_unc), a); if (e) return e;
  }
  if (p->_efc_b) {
    e = (*v)(((PyObject *)p->_efc_b), a); if (e) return e;
  }
  if (p->_efc_force) {
    e = (*v)(((PyObject *)p->_efc_force), a); if (e) return e;
  }
  if (p->_efc_state) {
    e = (*v)(((PyObject *)p->_efc_state), a); if (e) return e;
  }
  if (p->_qfrc_constraint) {
    e = (*v)(((PyObject *)p->_qfrc_constraint), a); if (e) return e;
  }
  if (p->_qacc_warmstart) {
    e = (*v)(((PyObject *)p->_qacc_warmstart), a); if (e) return e;
  }
  if (p->_qfrc_inverse) {
    e = (*v)(((PyObject *)p->_qfrc_inverse), a); if (e) return e;
  }
  if (p->_cacc) {
    e = (*v)(((PyObject *)p->_cacc), a); if (e) return e;
  }
  if (p->_cfrc_int) {
    e = (*v)(((PyObject *)p->_cfrc_int), a); if (e) return e;
  }
  if (p->_cfrc_ext) {
    e = (*v)(((PyObject *)p->_cfrc_ext), a); if (e) return e;
  }
  if (p->_warning) {
    e = (*v)(p->_warning, a); if (e) return e;
  }
  if (p->_timer) {
    e = (*v)(p->_timer, a); if (e) return e;
  }
  if (p->_solver) {
    e = (*v)(p->_solver, a); if (e) return e;
  }
  if (p->_solver_fwdinv) {
    e = (*v)(((PyObject *)p->_solver_fwdinv), a); if (e) return e;
  }
  if (p->_energy) {
    e = (*v)(((PyObject *)p->_energy), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjData(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjData *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)o;
  tmp = ((PyObject*)p->_model);
  p->_model = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qpos);
  p->_qpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qvel);
  p->_qvel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_act);
  p->_act = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ctrl);
  p->_ctrl = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qfrc_applied);
  p->_qfrc_applied = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xfrc_applied);
  p->_xfrc_applied = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qacc);
  p->_qacc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_act_dot);
  p->_act_dot = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mocap_pos);
  p->_mocap_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mocap_quat);
  p->_mocap_quat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_userdata);
  p->_userdata = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sensordata);
  p->_sensordata = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xpos);
  p->_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xquat);
  p->_xquat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xmat);
  p->_xmat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xipos);
  p->_xipos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ximat);
  p->_ximat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xanchor);
  p->_xanchor = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xaxis);
  p->_xaxis = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_xpos);
  p->_geom_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_geom_xmat);
  p->_geom_xmat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_xpos);
  p->_site_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_site_xmat);
  p->_site_xmat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_xpos);
  p->_cam_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cam_xmat);
  p->_cam_xmat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_xpos);
  p->_light_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_light_xdir);
  p->_light_xdir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_subtree_com);
  p->_subtree_com = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cdof);
  p->_cdof = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cinert);
  p->_cinert = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ten_wrapadr);
  p->_ten_wrapadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ten_wrapnum);
  p->_ten_wrapnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ten_length);
  p->_ten_length = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ten_moment);
  p->_ten_moment = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_wrap_obj);
  p->_wrap_obj = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_wrap_xpos);
  p->_wrap_xpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_length);
  p->_actuator_length = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_moment);
  p->_actuator_moment = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_crb);
  p->_crb = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qM);
  p->_qM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qLD);
  p->_qLD = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qLDiagInv);
  p->_qLDiagInv = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qLDiagSqrtInv);
  p->_qLDiagSqrtInv = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_contact);
  p->_contact = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_type);
  p->_efc_type = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_id);
  p->_efc_id = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_J_rownnz);
  p->_efc_J_rownnz = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_J_rowadr);
  p->_efc_J_rowadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_J_colind);
  p->_efc_J_colind = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_JT_rownnz);
  p->_efc_JT_rownnz = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_JT_rowadr);
  p->_efc_JT_rowadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_JT_colind);
  p->_efc_JT_colind = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_solref);
  p->_efc_solref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_solimp);
  p->_efc_solimp = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_margin);
  p->_efc_margin = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_frictionloss);
  p->_efc_frictionloss = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_pos);
  p->_efc_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_J);
  p->_efc_J = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_JT);
  p->_efc_JT = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_diagApprox);
  p->_efc_diagApprox = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_D);
  p->_efc_D = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_R);
  p->_efc_R = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_AR_rownnz);
  p->_efc_AR_rownnz = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_AR_rowadr);
  p->_efc_AR_rowadr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_AR_colind);
  p->_efc_AR_colind = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_AR);
  p->_efc_AR = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ten_velocity);
  p->_ten_velocity = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_velocity);
  p->_actuator_velocity = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cvel);
  p->_cvel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cdof_dot);
  p->_cdof_dot = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qfrc_bias);
  p->_qfrc_bias = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qfrc_passive);
  p->_qfrc_passive = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_vel);
  p->_efc_vel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_aref);
  p->_efc_aref = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_subtree_linvel);
  p->_subtree_linvel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_subtree_angmom);
  p->_subtree_angmom = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_actuator_force);
  p->_actuator_force = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qfrc_actuator);
  p->_qfrc_actuator = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qfrc_unc);
  p->_qfrc_unc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qacc_unc);
  p->_qacc_unc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_b);
  p->_efc_b = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_force);
  p->_efc_force = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_efc_state);
  p->_efc_state = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qfrc_constraint);
  p->_qfrc_constraint = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qacc_warmstart);
  p->_qacc_warmstart = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_qfrc_inverse);
  p->_qfrc_inverse = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cacc);
  p->_cacc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cfrc_int);
  p->_cfrc_int = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cfrc_ext);
  p->_cfrc_ext = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_warning);
  p->_warning = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_timer);
  p->_timer = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_solver);
  p->_solver = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_solver_fwdinv);
  p->_solver_fwdinv = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_energy);
  p->_energy = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_xpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xquat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10body_xquat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xmat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_xmat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_active_contacts_efc_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_23active_contacts_efc_pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_nstack(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6nstack_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_nstack(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6nstack_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_nbuffer(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_7nbuffer_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_nbuffer(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_7nbuffer_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_pstack(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6pstack_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_pstack(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6pstack_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_maxuse_stack(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12maxuse_stack_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_maxuse_stack(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12maxuse_stack_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_maxuse_con(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_con_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_maxuse_con(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_con_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_maxuse_efc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_efc_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_maxuse_efc(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10maxuse_efc_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_solver_iter(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_11solver_iter_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_solver_iter(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_11solver_iter_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_solver_nnz(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10solver_nnz_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_solver_nnz(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10solver_nnz_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_ne(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_2ne_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_ne(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_2ne_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_nf(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_2nf_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_nf(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_2nf_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_nefc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4nefc_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_nefc(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4nefc_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_ncon(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4ncon_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_ncon(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4ncon_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_time(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4time_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_8PyMjData_time(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4time_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4qpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qvel(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4qvel_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_act(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_3act_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_ctrl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4ctrl_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_applied(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12qfrc_applied_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_xfrc_applied(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12xfrc_applied_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qacc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4qacc_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_act_dot(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_7act_dot_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_mocap_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9mocap_pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_mocap_quat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10mocap_quat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_userdata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8userdata_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_sensordata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10sensordata_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_xpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4xpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_xquat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_5xquat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_xmat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4xmat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_xipos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_5xipos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_ximat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_5ximat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_xanchor(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_7xanchor_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_xaxis(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_5xaxis_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_xpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_xpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_xmat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_xmat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_xpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_xpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_xmat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_xmat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_cam_xpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8cam_xpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_cam_xmat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8cam_xmat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_light_xpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10light_xpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_light_xdir(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10light_xdir_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_subtree_com(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_11subtree_com_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_cdof(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4cdof_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_cinert(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6cinert_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_wrapadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_11ten_wrapadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_wrapnum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_11ten_wrapnum_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_length(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10ten_length_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_moment(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10ten_moment_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_wrap_obj(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8wrap_obj_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_wrap_xpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9wrap_xpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_actuator_length(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_15actuator_length_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_actuator_moment(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_15actuator_moment_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_crb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_3crb_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qM(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_2qM_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qLD(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_3qLD_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qLDiagInv(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9qLDiagInv_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qLDiagSqrtInv(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_13qLDiagSqrtInv_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_contact(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_7contact_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8efc_type_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6efc_id_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_J_rownnz(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12efc_J_rownnz_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_J_rowadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12efc_J_rowadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_J_colind(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12efc_J_colind_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_JT_rownnz(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_JT_rownnz_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_JT_rowadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_JT_rowadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_JT_colind(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_JT_colind_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_solref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10efc_solref_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_solimp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10efc_solimp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_margin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10efc_margin_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_frictionloss(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_16efc_frictionloss_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_7efc_pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_J(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_J_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_JT(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6efc_JT_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_diagApprox(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_14efc_diagApprox_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_D(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_D_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_R(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_R_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_AR_rownnz(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_AR_rownnz_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_AR_rowadr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_AR_rowadr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_AR_colind(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_13efc_AR_colind_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_AR(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6efc_AR_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_velocity(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12ten_velocity_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_actuator_velocity(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_17actuator_velocity_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_cvel(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4cvel_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_cdof_dot(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8cdof_dot_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_bias(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9qfrc_bias_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_passive(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12qfrc_passive_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_vel(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_7efc_vel_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_aref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8efc_aref_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_subtree_linvel(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_14subtree_linvel_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_subtree_angmom(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_14subtree_angmom_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_actuator_force(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_14actuator_force_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_actuator(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_13qfrc_actuator_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_unc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8qfrc_unc_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qacc_unc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8qacc_unc_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_b(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_5efc_b_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_force(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9efc_force_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_state(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9efc_state_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_constraint(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_15qfrc_constraint_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qacc_warmstart(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_14qacc_warmstart_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_inverse(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_12qfrc_inverse_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_cacc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_4cacc_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_cfrc_int(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8cfrc_int_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_cfrc_ext(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_8cfrc_ext_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_warning(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_7warning_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_timer(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_5timer_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_solver(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6solver_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_solver_fwdinv(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_13solver_fwdinv_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_energy(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_6energy_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_jacp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_jacp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_jacr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9body_jacr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xvelp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10body_xvelp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xvelr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10body_xvelr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_jacp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_jacp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_jacr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9geom_jacr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_xvelp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10geom_xvelp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_xvelr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10geom_xvelr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_jacp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_jacp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_jacr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_9site_jacr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_xvelp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10site_xvelp_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_xvelr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_8PyMjData_10site_xvelr_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjData[] = {
  {"get_body_xpos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_3get_body_xpos, METH_O, 0},
  {"get_xpos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_5get_xpos, METH_O, 0},
  {"get_body_xquat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_7get_body_xquat, METH_O, 0},
  {"get_xquat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_9get_xquat, METH_O, 0},
  {"get_body_xmat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_11get_body_xmat, METH_O, 0},
  {"get_xmat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_13get_xmat, METH_O, 0},
  {"get_body_xipos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_15get_body_xipos, METH_O, 0},
  {"get_xipos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_17get_xipos, METH_O, 0},
  {"get_body_ximat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_19get_body_ximat, METH_O, 0},
  {"get_ximat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_21get_ximat, METH_O, 0},
  {"get_body_jacp", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_23get_body_jacp, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_body_jacr", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_25get_body_jacr, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_body_xvelp", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_27get_body_xvelp, METH_O, 0},
  {"get_body_xvelr", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_29get_body_xvelr, METH_O, 0},
  {"get_joint_xanchor", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_31get_joint_xanchor, METH_O, 0},
  {"get_xanchor", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_33get_xanchor, METH_O, 0},
  {"get_joint_xaxis", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_35get_joint_xaxis, METH_O, 0},
  {"get_xaxis", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_37get_xaxis, METH_O, 0},
  {"get_geom_xpos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_39get_geom_xpos, METH_O, 0},
  {"get_geom_xmat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_41get_geom_xmat, METH_O, 0},
  {"get_geom_jacp", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_43get_geom_jacp, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_geom_jacr", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_45get_geom_jacr, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_geom_xvelp", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_47get_geom_xvelp, METH_O, 0},
  {"get_geom_xvelr", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_49get_geom_xvelr, METH_O, 0},
  {"get_site_xpos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_51get_site_xpos, METH_O, 0},
  {"get_site_xmat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_53get_site_xmat, METH_O, 0},
  {"get_site_jacp", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_55get_site_jacp, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_site_jacr", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_57get_site_jacr, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_site_xvelp", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_59get_site_xvelp, METH_O, 0},
  {"get_site_xvelr", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_61get_site_xvelr, METH_O, 0},
  {"get_camera_xpos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_63get_camera_xpos, METH_O, 0},
  {"get_cam_xpos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_65get_cam_xpos, METH_O, 0},
  {"get_camera_xmat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_67get_camera_xmat, METH_O, 0},
  {"get_cam_xmat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_69get_cam_xmat, METH_O, 0},
  {"get_light_xpos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_71get_light_xpos, METH_O, 0},
  {"get_light_xdir", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_73get_light_xdir, METH_O, 0},
  {"get_sensor", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_75get_sensor, METH_O, 0},
  {"get_sensordata", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_77get_sensordata, METH_O, 0},
  {"get_userdata", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_79get_userdata, METH_O, 0},
  {"get_mocap_pos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_81get_mocap_pos, METH_O, 0},
  {"set_mocap_pos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_83set_mocap_pos, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_mocap_quat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_85get_mocap_quat, METH_O, 0},
  {"set_mocap_quat", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_87set_mocap_quat, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_joint_qpos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_89get_joint_qpos, METH_O, 0},
  {"set_joint_qpos", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_91set_joint_qpos, METH_VARARGS|METH_KEYWORDS, 0},
  {"get_joint_qvel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_93get_joint_qvel, METH_O, 0},
  {"set_joint_qvel", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_95set_joint_qvel, METH_VARARGS|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_97__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_8PyMjData_99__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjData[] = {
  {(char *)"body_xpos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xpos, 0, (char *)0, 0},
  {(char *)"body_xquat", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xquat, 0, (char *)0, 0},
  {(char *)"body_xmat", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xmat, 0, (char *)0, 0},
  {(char *)"active_contacts_efc_pos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_active_contacts_efc_pos, 0, (char *)0, 0},
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_uintptr, 0, (char *)0, 0},
  {(char *)"nstack", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_nstack, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_nstack, (char *)0, 0},
  {(char *)"nbuffer", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_nbuffer, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_nbuffer, (char *)0, 0},
  {(char *)"pstack", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_pstack, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_pstack, (char *)0, 0},
  {(char *)"maxuse_stack", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_maxuse_stack, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_maxuse_stack, (char *)0, 0},
  {(char *)"maxuse_con", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_maxuse_con, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_maxuse_con, (char *)0, 0},
  {(char *)"maxuse_efc", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_maxuse_efc, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_maxuse_efc, (char *)0, 0},
  {(char *)"solver_iter", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_solver_iter, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_solver_iter, (char *)0, 0},
  {(char *)"solver_nnz", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_solver_nnz, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_solver_nnz, (char *)0, 0},
  {(char *)"ne", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_ne, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_ne, (char *)0, 0},
  {(char *)"nf", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_nf, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_nf, (char *)0, 0},
  {(char *)"nefc", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_nefc, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_nefc, (char *)0, 0},
  {(char *)"ncon", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_ncon, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_ncon, (char *)0, 0},
  {(char *)"time", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_time, __pyx_setprop_9mujoco_py_4cymj_8PyMjData_time, (char *)0, 0},
  {(char *)"qpos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qpos, 0, (char *)0, 0},
  {(char *)"qvel", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qvel, 0, (char *)0, 0},
  {(char *)"act", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_act, 0, (char *)0, 0},
  {(char *)"ctrl", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_ctrl, 0, (char *)0, 0},
  {(char *)"qfrc_applied", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_applied, 0, (char *)0, 0},
  {(char *)"xfrc_applied", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_xfrc_applied, 0, (char *)0, 0},
  {(char *)"qacc", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qacc, 0, (char *)0, 0},
  {(char *)"act_dot", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_act_dot, 0, (char *)0, 0},
  {(char *)"mocap_pos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_mocap_pos, 0, (char *)0, 0},
  {(char *)"mocap_quat", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_mocap_quat, 0, (char *)0, 0},
  {(char *)"userdata", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_userdata, 0, (char *)0, 0},
  {(char *)"sensordata", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_sensordata, 0, (char *)0, 0},
  {(char *)"xpos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_xpos, 0, (char *)0, 0},
  {(char *)"xquat", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_xquat, 0, (char *)0, 0},
  {(char *)"xmat", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_xmat, 0, (char *)0, 0},
  {(char *)"xipos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_xipos, 0, (char *)0, 0},
  {(char *)"ximat", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_ximat, 0, (char *)0, 0},
  {(char *)"xanchor", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_xanchor, 0, (char *)0, 0},
  {(char *)"xaxis", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_xaxis, 0, (char *)0, 0},
  {(char *)"geom_xpos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_xpos, 0, (char *)0, 0},
  {(char *)"geom_xmat", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_xmat, 0, (char *)0, 0},
  {(char *)"site_xpos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_xpos, 0, (char *)0, 0},
  {(char *)"site_xmat", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_xmat, 0, (char *)0, 0},
  {(char *)"cam_xpos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_cam_xpos, 0, (char *)0, 0},
  {(char *)"cam_xmat", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_cam_xmat, 0, (char *)0, 0},
  {(char *)"light_xpos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_light_xpos, 0, (char *)0, 0},
  {(char *)"light_xdir", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_light_xdir, 0, (char *)0, 0},
  {(char *)"subtree_com", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_subtree_com, 0, (char *)0, 0},
  {(char *)"cdof", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_cdof, 0, (char *)0, 0},
  {(char *)"cinert", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_cinert, 0, (char *)0, 0},
  {(char *)"ten_wrapadr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_wrapadr, 0, (char *)0, 0},
  {(char *)"ten_wrapnum", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_wrapnum, 0, (char *)0, 0},
  {(char *)"ten_length", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_length, 0, (char *)0, 0},
  {(char *)"ten_moment", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_moment, 0, (char *)0, 0},
  {(char *)"wrap_obj", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_wrap_obj, 0, (char *)0, 0},
  {(char *)"wrap_xpos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_wrap_xpos, 0, (char *)0, 0},
  {(char *)"actuator_length", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_actuator_length, 0, (char *)0, 0},
  {(char *)"actuator_moment", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_actuator_moment, 0, (char *)0, 0},
  {(char *)"crb", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_crb, 0, (char *)0, 0},
  {(char *)"qM", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qM, 0, (char *)0, 0},
  {(char *)"qLD", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qLD, 0, (char *)0, 0},
  {(char *)"qLDiagInv", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qLDiagInv, 0, (char *)0, 0},
  {(char *)"qLDiagSqrtInv", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qLDiagSqrtInv, 0, (char *)0, 0},
  {(char *)"contact", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_contact, 0, (char *)0, 0},
  {(char *)"efc_type", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_type, 0, (char *)0, 0},
  {(char *)"efc_id", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_id, 0, (char *)0, 0},
  {(char *)"efc_J_rownnz", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_J_rownnz, 0, (char *)0, 0},
  {(char *)"efc_J_rowadr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_J_rowadr, 0, (char *)0, 0},
  {(char *)"efc_J_colind", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_J_colind, 0, (char *)0, 0},
  {(char *)"efc_JT_rownnz", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_JT_rownnz, 0, (char *)0, 0},
  {(char *)"efc_JT_rowadr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_JT_rowadr, 0, (char *)0, 0},
  {(char *)"efc_JT_colind", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_JT_colind, 0, (char *)0, 0},
  {(char *)"efc_solref", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_solref, 0, (char *)0, 0},
  {(char *)"efc_solimp", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_solimp, 0, (char *)0, 0},
  {(char *)"efc_margin", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_margin, 0, (char *)0, 0},
  {(char *)"efc_frictionloss", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_frictionloss, 0, (char *)0, 0},
  {(char *)"efc_pos", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_pos, 0, (char *)0, 0},
  {(char *)"efc_J", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_J, 0, (char *)0, 0},
  {(char *)"efc_JT", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_JT, 0, (char *)0, 0},
  {(char *)"efc_diagApprox", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_diagApprox, 0, (char *)0, 0},
  {(char *)"efc_D", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_D, 0, (char *)0, 0},
  {(char *)"efc_R", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_R, 0, (char *)0, 0},
  {(char *)"efc_AR_rownnz", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_AR_rownnz, 0, (char *)0, 0},
  {(char *)"efc_AR_rowadr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_AR_rowadr, 0, (char *)0, 0},
  {(char *)"efc_AR_colind", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_AR_colind, 0, (char *)0, 0},
  {(char *)"efc_AR", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_AR, 0, (char *)0, 0},
  {(char *)"ten_velocity", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_ten_velocity, 0, (char *)0, 0},
  {(char *)"actuator_velocity", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_actuator_velocity, 0, (char *)0, 0},
  {(char *)"cvel", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_cvel, 0, (char *)0, 0},
  {(char *)"cdof_dot", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_cdof_dot, 0, (char *)0, 0},
  {(char *)"qfrc_bias", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_bias, 0, (char *)0, 0},
  {(char *)"qfrc_passive", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_passive, 0, (char *)0, 0},
  {(char *)"efc_vel", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_vel, 0, (char *)0, 0},
  {(char *)"efc_aref", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_aref, 0, (char *)0, 0},
  {(char *)"subtree_linvel", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_subtree_linvel, 0, (char *)0, 0},
  {(char *)"subtree_angmom", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_subtree_angmom, 0, (char *)0, 0},
  {(char *)"actuator_force", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_actuator_force, 0, (char *)0, 0},
  {(char *)"qfrc_actuator", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_actuator, 0, (char *)0, 0},
  {(char *)"qfrc_unc", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_unc, 0, (char *)0, 0},
  {(char *)"qacc_unc", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qacc_unc, 0, (char *)0, 0},
  {(char *)"efc_b", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_b, 0, (char *)0, 0},
  {(char *)"efc_force", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_force, 0, (char *)0, 0},
  {(char *)"efc_state", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_efc_state, 0, (char *)0, 0},
  {(char *)"qfrc_constraint", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_constraint, 0, (char *)0, 0},
  {(char *)"qacc_warmstart", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qacc_warmstart, 0, (char *)0, 0},
  {(char *)"qfrc_inverse", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_qfrc_inverse, 0, (char *)0, 0},
  {(char *)"cacc", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_cacc, 0, (char *)0, 0},
  {(char *)"cfrc_int", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_cfrc_int, 0, (char *)0, 0},
  {(char *)"cfrc_ext", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_cfrc_ext, 0, (char *)0, 0},
  {(char *)"warning", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_warning, 0, (char *)0, 0},
  {(char *)"timer", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_timer, 0, (char *)0, 0},
  {(char *)"solver", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_solver, 0, (char *)0, 0},
  {(char *)"solver_fwdinv", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_solver_fwdinv, 0, (char *)0, 0},
  {(char *)"energy", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_energy, 0, (char *)0, 0},
  {(char *)"body_jacp", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_jacp, 0, (char *)0, 0},
  {(char *)"body_jacr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_jacr, 0, (char *)0, 0},
  {(char *)"body_xvelp", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xvelp, 0, (char *)0, 0},
  {(char *)"body_xvelr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_body_xvelr, 0, (char *)0, 0},
  {(char *)"geom_jacp", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_jacp, 0, (char *)0, 0},
  {(char *)"geom_jacr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_jacr, 0, (char *)0, 0},
  {(char *)"geom_xvelp", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_xvelp, 0, (char *)0, 0},
  {(char *)"geom_xvelr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_geom_xvelr, 0, (char *)0, 0},
  {(char *)"site_jacp", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_jacp, 0, (char *)0, 0},
  {(char *)"site_jacr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_jacr, 0, (char *)0, 0},
  {(char *)"site_xvelp", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_xvelp, 0, (char *)0, 0},
  {(char *)"site_xvelr", __pyx_getprop_9mujoco_py_4cymj_8PyMjData_site_xvelr, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjData = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjData", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjData), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjData, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjData, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjData, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjData, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjData, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjData, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvPerturb __pyx_vtable_9mujoco_py_4cymj_PyMjvPerturb;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvPerturb(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjvPerturb;
  p->_refpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_refquat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_localpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvPerturb(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_refpos);
  Py_CLEAR(p->_refquat);
  Py_CLEAR(p->_localpos);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvPerturb(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)o;
  if (p->_refpos) {
    e = (*v)(((PyObject *)p->_refpos), a); if (e) return e;
  }
  if (p->_refquat) {
    e = (*v)(((PyObject *)p->_refquat), a); if (e) return e;
  }
  if (p->_localpos) {
    e = (*v)(((PyObject *)p->_localpos), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjvPerturb(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)o;
  tmp = ((PyObject*)p->_refpos);
  p->_refpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_refquat);
  p->_refquat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_localpos);
  p->_localpos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_select(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6select_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjvPerturb_select(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6select_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_active(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6active_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjvPerturb_active(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6active_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_scale(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_5scale_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjvPerturb_scale(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_5scale_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_refpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_6refpos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_refquat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_7refquat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_localpos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_8localpos_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjvPerturb[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_12PyMjvPerturb_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjvPerturb[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_uintptr, 0, (char *)0, 0},
  {(char *)"select", __pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_select, __pyx_setprop_9mujoco_py_4cymj_12PyMjvPerturb_select, (char *)0, 0},
  {(char *)"active", __pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_active, __pyx_setprop_9mujoco_py_4cymj_12PyMjvPerturb_active, (char *)0, 0},
  {(char *)"scale", __pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_scale, __pyx_setprop_9mujoco_py_4cymj_12PyMjvPerturb_scale, (char *)0, 0},
  {(char *)"refpos", __pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_refpos, 0, (char *)0, 0},
  {(char *)"refquat", __pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_refquat, 0, (char *)0, 0},
  {(char *)"localpos", __pyx_getprop_9mujoco_py_4cymj_12PyMjvPerturb_localpos, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjvPerturb = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjvPerturb", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvPerturb, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvPerturb, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjvPerturb, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjvPerturb, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjvPerturb, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjvPerturb, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvCamera __pyx_vtable_9mujoco_py_4cymj_PyMjvCamera;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvCamera(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjvCamera;
  p->_lookat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvCamera(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_lookat);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvCamera(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)o;
  if (p->_lookat) {
    e = (*v)(((PyObject *)p->_lookat), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjvCamera(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)o;
  tmp = ((PyObject*)p->_lookat);
  p->_lookat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_4type_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_4type_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_fixedcamid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_fixedcamid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_10fixedcamid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_trackbodyid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_trackbodyid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_11trackbodyid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_distance(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_8distance_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_distance(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_8distance_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_azimuth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_7azimuth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_azimuth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_7azimuth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_elevation(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_9elevation_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_elevation(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_9elevation_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_lookat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_6lookat_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjvCamera[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11PyMjvCamera_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjvCamera[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_uintptr, 0, (char *)0, 0},
  {(char *)"type", __pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_type, __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_type, (char *)0, 0},
  {(char *)"fixedcamid", __pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_fixedcamid, __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_fixedcamid, (char *)0, 0},
  {(char *)"trackbodyid", __pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_trackbodyid, __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_trackbodyid, (char *)0, 0},
  {(char *)"distance", __pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_distance, __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_distance, (char *)0, 0},
  {(char *)"azimuth", __pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_azimuth, __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_azimuth, (char *)0, 0},
  {(char *)"elevation", __pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_elevation, __pyx_setprop_9mujoco_py_4cymj_11PyMjvCamera_elevation, (char *)0, 0},
  {(char *)"lookat", __pyx_getprop_9mujoco_py_4cymj_11PyMjvCamera_lookat, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjvCamera = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjvCamera", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvCamera, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvCamera, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjvCamera, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjvCamera, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjvCamera, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjvCamera, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGLCamera __pyx_vtable_9mujoco_py_4cymj_PyMjvGLCamera;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvGLCamera(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjvGLCamera;
  p->_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_forward = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_up = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvGLCamera(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_pos);
  Py_CLEAR(p->_forward);
  Py_CLEAR(p->_up);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvGLCamera(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)o;
  if (p->_pos) {
    e = (*v)(((PyObject *)p->_pos), a); if (e) return e;
  }
  if (p->_forward) {
    e = (*v)(((PyObject *)p->_forward), a); if (e) return e;
  }
  if (p->_up) {
    e = (*v)(((PyObject *)p->_up), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjvGLCamera(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *)o;
  tmp = ((PyObject*)p->_pos);
  p->_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_forward);
  p->_forward = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_up);
  p->_up = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_center(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_center(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_center_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_bottom(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_bottom(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_14frustum_bottom_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_top(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_top(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_top_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_near(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_near(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_12frustum_near_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_far(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_far(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_11frustum_far_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_3pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_forward(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_7forward_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_up(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_2up_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjvGLCamera[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_13PyMjvGLCamera_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjvGLCamera[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_uintptr, 0, (char *)0, 0},
  {(char *)"frustum_center", __pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_center, __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_center, (char *)0, 0},
  {(char *)"frustum_bottom", __pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_bottom, __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_bottom, (char *)0, 0},
  {(char *)"frustum_top", __pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_top, __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_top, (char *)0, 0},
  {(char *)"frustum_near", __pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_near, __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_near, (char *)0, 0},
  {(char *)"frustum_far", __pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_far, __pyx_setprop_9mujoco_py_4cymj_13PyMjvGLCamera_frustum_far, (char *)0, 0},
  {(char *)"pos", __pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_pos, 0, (char *)0, 0},
  {(char *)"forward", __pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_forward, 0, (char *)0, 0},
  {(char *)"up", __pyx_getprop_9mujoco_py_4cymj_13PyMjvGLCamera_up, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjvGLCamera = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjvGLCamera", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvGLCamera, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvGLCamera, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjvGLCamera, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjvGLCamera, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjvGLCamera, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjvGLCamera, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvGeom __pyx_vtable_9mujoco_py_4cymj_PyMjvGeom;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvGeom(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjvGeom;
  p->_texrepeat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_mat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_label = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvGeom(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_texrepeat);
  Py_CLEAR(p->_size);
  Py_CLEAR(p->_pos);
  Py_CLEAR(p->_mat);
  Py_CLEAR(p->_rgba);
  Py_CLEAR(p->_label);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvGeom(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)o;
  if (p->_texrepeat) {
    e = (*v)(((PyObject *)p->_texrepeat), a); if (e) return e;
  }
  if (p->_size) {
    e = (*v)(((PyObject *)p->_size), a); if (e) return e;
  }
  if (p->_pos) {
    e = (*v)(((PyObject *)p->_pos), a); if (e) return e;
  }
  if (p->_mat) {
    e = (*v)(((PyObject *)p->_mat), a); if (e) return e;
  }
  if (p->_rgba) {
    e = (*v)(((PyObject *)p->_rgba), a); if (e) return e;
  }
  if (p->_label) {
    e = (*v)(((PyObject *)p->_label), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjvGeom(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *)o;
  tmp = ((PyObject*)p->_texrepeat);
  p->_texrepeat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_size);
  p->_size = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pos);
  p->_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_mat);
  p->_mat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_rgba);
  p->_rgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_label);
  p->_label = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4type_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4type_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_dataid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_6dataid_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_dataid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_6dataid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_objtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7objtype_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_objtype(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7objtype_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_objid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5objid_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_objid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5objid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_category(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8category_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_category(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8category_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_texid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5texid_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_texid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5texid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_texuniform(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_10texuniform_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_texuniform(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_10texuniform_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_emission(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8emission_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_emission(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8emission_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_specular(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8specular_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_specular(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_8specular_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_shininess(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_9shininess_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_shininess(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_9shininess_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_reflectance(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11reflectance_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_reflectance(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11reflectance_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_camdist(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7camdist_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_camdist(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_7camdist_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_modelrbound(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_modelrbound(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11modelrbound_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_transparent(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11transparent_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_transparent(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_11transparent_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_texrepeat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_9texrepeat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4size_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_3pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_mat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_3mat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_rgba(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_4rgba_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_label(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5label_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjvGeom[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjvGeom_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjvGeom[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_uintptr, 0, (char *)0, 0},
  {(char *)"type", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_type, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_type, (char *)0, 0},
  {(char *)"dataid", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_dataid, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_dataid, (char *)0, 0},
  {(char *)"objtype", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_objtype, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_objtype, (char *)0, 0},
  {(char *)"objid", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_objid, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_objid, (char *)0, 0},
  {(char *)"category", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_category, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_category, (char *)0, 0},
  {(char *)"texid", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_texid, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_texid, (char *)0, 0},
  {(char *)"texuniform", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_texuniform, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_texuniform, (char *)0, 0},
  {(char *)"emission", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_emission, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_emission, (char *)0, 0},
  {(char *)"specular", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_specular, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_specular, (char *)0, 0},
  {(char *)"shininess", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_shininess, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_shininess, (char *)0, 0},
  {(char *)"reflectance", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_reflectance, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_reflectance, (char *)0, 0},
  {(char *)"camdist", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_camdist, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_camdist, (char *)0, 0},
  {(char *)"modelrbound", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_modelrbound, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_modelrbound, (char *)0, 0},
  {(char *)"transparent", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_transparent, __pyx_setprop_9mujoco_py_4cymj_9PyMjvGeom_transparent, (char *)0, 0},
  {(char *)"texrepeat", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_texrepeat, 0, (char *)0, 0},
  {(char *)"size", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_size, 0, (char *)0, 0},
  {(char *)"pos", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_pos, 0, (char *)0, 0},
  {(char *)"mat", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_mat, 0, (char *)0, 0},
  {(char *)"rgba", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_rgba, 0, (char *)0, 0},
  {(char *)"label", __pyx_getprop_9mujoco_py_4cymj_9PyMjvGeom_label, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjvGeom = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjvGeom", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvGeom, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvGeom, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjvGeom, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjvGeom, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjvGeom, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjvGeom, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvLight __pyx_vtable_9mujoco_py_4cymj_PyMjvLight;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvLight(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjvLight;
  p->_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_dir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_attenuation = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_ambient = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_diffuse = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_specular = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvLight(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_pos);
  Py_CLEAR(p->_dir);
  Py_CLEAR(p->_attenuation);
  Py_CLEAR(p->_ambient);
  Py_CLEAR(p->_diffuse);
  Py_CLEAR(p->_specular);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvLight(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)o;
  if (p->_pos) {
    e = (*v)(((PyObject *)p->_pos), a); if (e) return e;
  }
  if (p->_dir) {
    e = (*v)(((PyObject *)p->_dir), a); if (e) return e;
  }
  if (p->_attenuation) {
    e = (*v)(((PyObject *)p->_attenuation), a); if (e) return e;
  }
  if (p->_ambient) {
    e = (*v)(((PyObject *)p->_ambient), a); if (e) return e;
  }
  if (p->_diffuse) {
    e = (*v)(((PyObject *)p->_diffuse), a); if (e) return e;
  }
  if (p->_specular) {
    e = (*v)(((PyObject *)p->_specular), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjvLight(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *)o;
  tmp = ((PyObject*)p->_pos);
  p->_pos = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dir);
  p->_dir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_attenuation);
  p->_attenuation = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ambient);
  p->_ambient = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_diffuse);
  p->_diffuse = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_specular);
  p->_specular = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_cutoff(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_6cutoff_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_cutoff(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_6cutoff_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_exponent(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_8exponent_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_exponent(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_8exponent_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_headlight(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_9headlight_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_headlight(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_9headlight_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_directional(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_11directional_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_directional(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_11directional_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_castshadow(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_10castshadow_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_castshadow(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_10castshadow_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_pos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_3pos_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_dir(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_3dir_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_attenuation(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_11attenuation_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_ambient(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_7ambient_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_diffuse(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_7diffuse_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_specular(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvLight_8specular_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjvLight[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10PyMjvLight_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjvLight[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_uintptr, 0, (char *)0, 0},
  {(char *)"cutoff", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_cutoff, __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_cutoff, (char *)0, 0},
  {(char *)"exponent", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_exponent, __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_exponent, (char *)0, 0},
  {(char *)"headlight", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_headlight, __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_headlight, (char *)0, 0},
  {(char *)"directional", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_directional, __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_directional, (char *)0, 0},
  {(char *)"castshadow", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_castshadow, __pyx_setprop_9mujoco_py_4cymj_10PyMjvLight_castshadow, (char *)0, 0},
  {(char *)"pos", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_pos, 0, (char *)0, 0},
  {(char *)"dir", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_dir, 0, (char *)0, 0},
  {(char *)"attenuation", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_attenuation, 0, (char *)0, 0},
  {(char *)"ambient", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_ambient, 0, (char *)0, 0},
  {(char *)"diffuse", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_diffuse, 0, (char *)0, 0},
  {(char *)"specular", __pyx_getprop_9mujoco_py_4cymj_10PyMjvLight_specular, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjvLight = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjvLight", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvLight, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvLight, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjvLight, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjvLight, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjvLight, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjvLight, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvOption __pyx_vtable_9mujoco_py_4cymj_PyMjvOption;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvOption(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjvOption;
  p->_geomgroup = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_sitegroup = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_flags = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvOption(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_geomgroup);
  Py_CLEAR(p->_sitegroup);
  Py_CLEAR(p->_flags);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvOption(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)o;
  if (p->_geomgroup) {
    e = (*v)(((PyObject *)p->_geomgroup), a); if (e) return e;
  }
  if (p->_sitegroup) {
    e = (*v)(((PyObject *)p->_sitegroup), a); if (e) return e;
  }
  if (p->_flags) {
    e = (*v)(((PyObject *)p->_flags), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjvOption(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)o;
  tmp = ((PyObject*)p->_geomgroup);
  p->_geomgroup = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_sitegroup);
  p->_sitegroup = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_flags);
  p->_flags = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_label(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5label_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvOption_label(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5label_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_frame(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5frame_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvOption_frame(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5frame_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_geomgroup(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_9geomgroup_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_sitegroup(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_9sitegroup_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5flags_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjvOption[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11PyMjvOption_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjvOption[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_uintptr, 0, (char *)0, 0},
  {(char *)"label", __pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_label, __pyx_setprop_9mujoco_py_4cymj_11PyMjvOption_label, (char *)0, 0},
  {(char *)"frame", __pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_frame, __pyx_setprop_9mujoco_py_4cymj_11PyMjvOption_frame, (char *)0, 0},
  {(char *)"geomgroup", __pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_geomgroup, 0, (char *)0, 0},
  {(char *)"sitegroup", __pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_sitegroup, 0, (char *)0, 0},
  {(char *)"flags", __pyx_getprop_9mujoco_py_4cymj_11PyMjvOption_flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjvOption = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjvOption", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvOption, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvOption, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjvOption, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjvOption, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjvOption, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjvOption, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvScene __pyx_vtable_9mujoco_py_4cymj_PyMjvScene;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvScene(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjvScene;
  p->_lights = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_camera = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_translate = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_rotate = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_flags = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvScene(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_lights);
  Py_CLEAR(p->_camera);
  Py_CLEAR(p->_translate);
  Py_CLEAR(p->_rotate);
  Py_CLEAR(p->_flags);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvScene(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)o;
  if (p->_lights) {
    e = (*v)(p->_lights, a); if (e) return e;
  }
  if (p->_camera) {
    e = (*v)(p->_camera, a); if (e) return e;
  }
  if (p->_translate) {
    e = (*v)(((PyObject *)p->_translate), a); if (e) return e;
  }
  if (p->_rotate) {
    e = (*v)(((PyObject *)p->_rotate), a); if (e) return e;
  }
  if (p->_flags) {
    e = (*v)(((PyObject *)p->_flags), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjvScene(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)o;
  tmp = ((PyObject*)p->_lights);
  p->_lights = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_camera);
  p->_camera = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_translate);
  p->_translate = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_rotate);
  p->_rotate = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_flags);
  p->_flags = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_maxgeom(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_7maxgeom_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_maxgeom(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_7maxgeom_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_ngeom(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5ngeom_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_ngeom(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5ngeom_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_nlight(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6nlight_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_nlight(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6nlight_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_enabletransform(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_15enabletransform_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_enabletransform(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_15enabletransform_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_scale(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5scale_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_scale(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5scale_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_stereo(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6stereo_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_stereo(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6stereo_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_lights(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6lights_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_camera(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6camera_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_translate(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_9translate_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_rotate(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_6rotate_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5flags_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjvScene[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_10PyMjvScene_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjvScene[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_uintptr, 0, (char *)0, 0},
  {(char *)"maxgeom", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_maxgeom, __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_maxgeom, (char *)0, 0},
  {(char *)"ngeom", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_ngeom, __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_ngeom, (char *)0, 0},
  {(char *)"nlight", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_nlight, __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_nlight, (char *)0, 0},
  {(char *)"enabletransform", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_enabletransform, __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_enabletransform, (char *)0, 0},
  {(char *)"scale", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_scale, __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_scale, (char *)0, 0},
  {(char *)"stereo", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_stereo, __pyx_setprop_9mujoco_py_4cymj_10PyMjvScene_stereo, (char *)0, 0},
  {(char *)"lights", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_lights, 0, (char *)0, 0},
  {(char *)"camera", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_camera, 0, (char *)0, 0},
  {(char *)"translate", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_translate, 0, (char *)0, 0},
  {(char *)"rotate", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_rotate, 0, (char *)0, 0},
  {(char *)"flags", __pyx_getprop_9mujoco_py_4cymj_10PyMjvScene_flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjvScene = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjvScene", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvScene, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvScene, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjvScene, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjvScene, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjvScene, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjvScene, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjvFigure __pyx_vtable_9mujoco_py_4cymj_PyMjvFigure;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjvFigure(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjvFigure;
  p->_flg_ticklabel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_gridsize = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_gridrgb = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_figurergba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_legendrgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_textrgb = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_xlabel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_title = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_xformat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_yformat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_minwidth = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_linepnt = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_linewidth = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvFigure(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_flg_ticklabel);
  Py_CLEAR(p->_gridsize);
  Py_CLEAR(p->_gridrgb);
  Py_CLEAR(p->_figurergba);
  Py_CLEAR(p->_legendrgba);
  Py_CLEAR(p->_textrgb);
  Py_CLEAR(p->_xlabel);
  Py_CLEAR(p->_title);
  Py_CLEAR(p->_xformat);
  Py_CLEAR(p->_yformat);
  Py_CLEAR(p->_minwidth);
  Py_CLEAR(p->_linepnt);
  Py_CLEAR(p->_linewidth);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvFigure(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)o;
  if (p->_flg_ticklabel) {
    e = (*v)(((PyObject *)p->_flg_ticklabel), a); if (e) return e;
  }
  if (p->_gridsize) {
    e = (*v)(((PyObject *)p->_gridsize), a); if (e) return e;
  }
  if (p->_gridrgb) {
    e = (*v)(((PyObject *)p->_gridrgb), a); if (e) return e;
  }
  if (p->_figurergba) {
    e = (*v)(((PyObject *)p->_figurergba), a); if (e) return e;
  }
  if (p->_legendrgba) {
    e = (*v)(((PyObject *)p->_legendrgba), a); if (e) return e;
  }
  if (p->_textrgb) {
    e = (*v)(((PyObject *)p->_textrgb), a); if (e) return e;
  }
  if (p->_xlabel) {
    e = (*v)(((PyObject *)p->_xlabel), a); if (e) return e;
  }
  if (p->_title) {
    e = (*v)(((PyObject *)p->_title), a); if (e) return e;
  }
  if (p->_xformat) {
    e = (*v)(((PyObject *)p->_xformat), a); if (e) return e;
  }
  if (p->_yformat) {
    e = (*v)(((PyObject *)p->_yformat), a); if (e) return e;
  }
  if (p->_minwidth) {
    e = (*v)(((PyObject *)p->_minwidth), a); if (e) return e;
  }
  if (p->_linepnt) {
    e = (*v)(((PyObject *)p->_linepnt), a); if (e) return e;
  }
  if (p->_linewidth) {
    e = (*v)(((PyObject *)p->_linewidth), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjvFigure(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *)o;
  tmp = ((PyObject*)p->_flg_ticklabel);
  p->_flg_ticklabel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_gridsize);
  p->_gridsize = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_gridrgb);
  p->_gridrgb = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_figurergba);
  p->_figurergba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_legendrgba);
  p->_legendrgba = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_textrgb);
  p->_textrgb = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xlabel);
  p->_xlabel = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_title);
  p->_title = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xformat);
  p->_xformat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_yformat);
  p->_yformat = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_minwidth);
  p->_minwidth = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_linepnt);
  p->_linepnt = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_linewidth);
  p->_linewidth = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_flg_legend(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvFigure_flg_legend(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_legend_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_flg_extend(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvFigure_flg_extend(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10flg_extend_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_flg_barplot(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvFigure_flg_barplot(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_11flg_barplot_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_gridwidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_11PyMjvFigure_gridwidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_9gridwidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_flg_ticklabel(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_13flg_ticklabel_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_gridsize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_8gridsize_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_gridrgb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7gridrgb_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_figurergba(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10figurergba_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_legendrgba(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_10legendrgba_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_textrgb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7textrgb_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_xlabel(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_6xlabel_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_title(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_5title_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_xformat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7xformat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_yformat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7yformat_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_minwidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_8minwidth_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_linepnt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_7linepnt_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_linewidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_9linewidth_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjvFigure[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_11PyMjvFigure_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjvFigure[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_uintptr, 0, (char *)0, 0},
  {(char *)"flg_legend", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_flg_legend, __pyx_setprop_9mujoco_py_4cymj_11PyMjvFigure_flg_legend, (char *)0, 0},
  {(char *)"flg_extend", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_flg_extend, __pyx_setprop_9mujoco_py_4cymj_11PyMjvFigure_flg_extend, (char *)0, 0},
  {(char *)"flg_barplot", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_flg_barplot, __pyx_setprop_9mujoco_py_4cymj_11PyMjvFigure_flg_barplot, (char *)0, 0},
  {(char *)"gridwidth", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_gridwidth, __pyx_setprop_9mujoco_py_4cymj_11PyMjvFigure_gridwidth, (char *)0, 0},
  {(char *)"flg_ticklabel", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_flg_ticklabel, 0, (char *)0, 0},
  {(char *)"gridsize", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_gridsize, 0, (char *)0, 0},
  {(char *)"gridrgb", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_gridrgb, 0, (char *)0, 0},
  {(char *)"figurergba", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_figurergba, 0, (char *)0, 0},
  {(char *)"legendrgba", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_legendrgba, 0, (char *)0, 0},
  {(char *)"textrgb", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_textrgb, 0, (char *)0, 0},
  {(char *)"xlabel", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_xlabel, 0, (char *)0, 0},
  {(char *)"title", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_title, 0, (char *)0, 0},
  {(char *)"xformat", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_xformat, 0, (char *)0, 0},
  {(char *)"yformat", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_yformat, 0, (char *)0, 0},
  {(char *)"minwidth", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_minwidth, 0, (char *)0, 0},
  {(char *)"linepnt", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_linepnt, 0, (char *)0, 0},
  {(char *)"linewidth", __pyx_getprop_9mujoco_py_4cymj_11PyMjvFigure_linewidth, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjvFigure = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjvFigure", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjvFigure, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjvFigure, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjvFigure, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjvFigure, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjvFigure, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjvFigure, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrRect __pyx_vtable_9mujoco_py_4cymj_PyMjrRect;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjrRect(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjrRect;
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjrRect(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_3__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_left(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_4left_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjrRect_left(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_4left_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_bottom(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6bottom_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjrRect_bottom(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6bottom_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_width(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_5width_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjrRect_width(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_5width_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_height(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6height_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_9PyMjrRect_height(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_9PyMjrRect_6height_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjrRect[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_9PyMjrRect_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjrRect[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_uintptr, 0, (char *)0, 0},
  {(char *)"left", __pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_left, __pyx_setprop_9mujoco_py_4cymj_9PyMjrRect_left, (char *)0, 0},
  {(char *)"bottom", __pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_bottom, __pyx_setprop_9mujoco_py_4cymj_9PyMjrRect_bottom, (char *)0, 0},
  {(char *)"width", __pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_width, __pyx_setprop_9mujoco_py_4cymj_9PyMjrRect_width, (char *)0, 0},
  {(char *)"height", __pyx_getprop_9mujoco_py_4cymj_9PyMjrRect_height, __pyx_setprop_9mujoco_py_4cymj_9PyMjrRect_height, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjrRect = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjrRect", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjrRect, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjrRect, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjrRect, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjrRect, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_PyMjrContext __pyx_vtable_9mujoco_py_4cymj_PyMjrContext;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_PyMjrContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_PyMjrContext;
  p->_textureType = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_texture = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_charWidth = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  p->_charWidthBig = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjrContext(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_textureType);
  Py_CLEAR(p->_texture);
  Py_CLEAR(p->_charWidth);
  Py_CLEAR(p->_charWidthBig);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_PyMjrContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)o;
  if (p->_textureType) {
    e = (*v)(((PyObject *)p->_textureType), a); if (e) return e;
  }
  if (p->_texture) {
    e = (*v)(((PyObject *)p->_texture), a); if (e) return e;
  }
  if (p->_charWidth) {
    e = (*v)(((PyObject *)p->_charWidth), a); if (e) return e;
  }
  if (p->_charWidthBig) {
    e = (*v)(((PyObject *)p->_charWidthBig), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_PyMjrContext(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *p = (struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)o;
  tmp = ((PyObject*)p->_textureType);
  p->_textureType = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_texture);
  p->_texture = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_charWidth);
  p->_charWidth = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_charWidthBig);
  p->_charWidthBig = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_uintptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_7uintptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_lineWidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9lineWidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_lineWidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9lineWidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowClip(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowClip_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowClip(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowClip_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowScale(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11shadowScale_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowScale(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11shadowScale_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowSize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowSize_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowSize(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10shadowSize_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offWidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offWidth_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offWidth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offWidth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offHeight(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9offHeight_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offHeight(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9offHeight_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offSamples(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offSamples_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offSamples(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offSamples_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offFBO(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_6offFBO_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offFBO(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_6offFBO_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offFBO_r(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offFBO_r(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offFBO_r_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offColor(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offColor_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offColor(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8offColor_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offColor_r(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offColor_r_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offColor_r(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10offColor_r_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offDepthStencil(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offDepthStencil(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15offDepthStencil_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offDepthStencil_r(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offDepthStencil_r(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_17offDepthStencil_r_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowFBO(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowFBO(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowFBO_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowTex(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowTex_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowTex(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9shadowTex_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_ntexture(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8ntexture_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_ntexture(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8ntexture_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_basePlane(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9basePlane_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_basePlane(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9basePlane_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseMesh(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8baseMesh_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseMesh(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_8baseMesh_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseHField(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10baseHField_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseHField(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10baseHField_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseBuiltin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseBuiltin(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseBuiltin_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseFontNormal(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseFontNormal(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontNormal_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseFontShadow(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseFontShadow(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_14baseFontShadow_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseFontBig(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseFontBig(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11baseFontBig_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangePlane(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10rangePlane_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangePlane(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10rangePlane_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangeMesh(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangeMesh(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeMesh_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangeHField(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11rangeHField_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangeHField(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11rangeHField_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangeBuiltin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangeBuiltin(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12rangeBuiltin_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangeFont(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeFont_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangeFont(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9rangeFont_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_charHeight(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10charHeight_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_charHeight(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_10charHeight_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_charHeightBig(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_charHeightBig(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13charHeightBig_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_glewInitialized(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_glewInitialized(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15glewInitialized_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_windowAvailable(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_windowAvailable(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_15windowAvailable_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_windowSamples(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13windowSamples_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_windowSamples(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13windowSamples_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_windowStereo(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12windowStereo_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_windowStereo(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12windowStereo_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_windowDoublebuffer(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_windowDoublebuffer(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_18windowDoublebuffer_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_currentBuffer(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_currentBuffer(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_13currentBuffer_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_textureType(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_11textureType_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_texture(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_7texture_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_charWidth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_9charWidth_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_charWidthBig(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_12PyMjrContext_12charWidthBig_1__get__(o);
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_PyMjrContext[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_12PyMjrContext_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_PyMjrContext[] = {
  {(char *)"uintptr", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_uintptr, 0, (char *)0, 0},
  {(char *)"lineWidth", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_lineWidth, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_lineWidth, (char *)0, 0},
  {(char *)"shadowClip", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowClip, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowClip, (char *)0, 0},
  {(char *)"shadowScale", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowScale, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowScale, (char *)0, 0},
  {(char *)"shadowSize", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowSize, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowSize, (char *)0, 0},
  {(char *)"offWidth", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offWidth, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offWidth, (char *)0, 0},
  {(char *)"offHeight", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offHeight, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offHeight, (char *)0, 0},
  {(char *)"offSamples", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offSamples, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offSamples, (char *)0, 0},
  {(char *)"offFBO", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offFBO, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offFBO, (char *)0, 0},
  {(char *)"offFBO_r", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offFBO_r, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offFBO_r, (char *)0, 0},
  {(char *)"offColor", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offColor, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offColor, (char *)0, 0},
  {(char *)"offColor_r", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offColor_r, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offColor_r, (char *)0, 0},
  {(char *)"offDepthStencil", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offDepthStencil, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offDepthStencil, (char *)0, 0},
  {(char *)"offDepthStencil_r", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_offDepthStencil_r, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_offDepthStencil_r, (char *)0, 0},
  {(char *)"shadowFBO", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowFBO, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowFBO, (char *)0, 0},
  {(char *)"shadowTex", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_shadowTex, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_shadowTex, (char *)0, 0},
  {(char *)"ntexture", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_ntexture, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_ntexture, (char *)0, 0},
  {(char *)"basePlane", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_basePlane, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_basePlane, (char *)0, 0},
  {(char *)"baseMesh", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseMesh, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseMesh, (char *)0, 0},
  {(char *)"baseHField", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseHField, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseHField, (char *)0, 0},
  {(char *)"baseBuiltin", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseBuiltin, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseBuiltin, (char *)0, 0},
  {(char *)"baseFontNormal", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseFontNormal, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseFontNormal, (char *)0, 0},
  {(char *)"baseFontShadow", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseFontShadow, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseFontShadow, (char *)0, 0},
  {(char *)"baseFontBig", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_baseFontBig, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_baseFontBig, (char *)0, 0},
  {(char *)"rangePlane", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangePlane, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangePlane, (char *)0, 0},
  {(char *)"rangeMesh", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangeMesh, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangeMesh, (char *)0, 0},
  {(char *)"rangeHField", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangeHField, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangeHField, (char *)0, 0},
  {(char *)"rangeBuiltin", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangeBuiltin, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangeBuiltin, (char *)0, 0},
  {(char *)"rangeFont", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_rangeFont, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_rangeFont, (char *)0, 0},
  {(char *)"charHeight", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_charHeight, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_charHeight, (char *)0, 0},
  {(char *)"charHeightBig", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_charHeightBig, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_charHeightBig, (char *)0, 0},
  {(char *)"glewInitialized", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_glewInitialized, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_glewInitialized, (char *)0, 0},
  {(char *)"windowAvailable", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_windowAvailable, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_windowAvailable, (char *)0, 0},
  {(char *)"windowSamples", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_windowSamples, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_windowSamples, (char *)0, 0},
  {(char *)"windowStereo", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_windowStereo, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_windowStereo, (char *)0, 0},
  {(char *)"windowDoublebuffer", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_windowDoublebuffer, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_windowDoublebuffer, (char *)0, 0},
  {(char *)"currentBuffer", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_currentBuffer, __pyx_setprop_9mujoco_py_4cymj_12PyMjrContext_currentBuffer, (char *)0, 0},
  {(char *)"textureType", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_textureType, 0, (char *)0, 0},
  {(char *)"texture", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_texture, 0, (char *)0, 0},
  {(char *)"charWidth", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_charWidth, 0, (char *)0, 0},
  {(char *)"charWidthBig", __pyx_getprop_9mujoco_py_4cymj_12PyMjrContext_charWidthBig, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_PyMjrContext = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.PyMjrContext", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_PyMjrContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_PyMjrContext, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_PyMjrContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_PyMjrContext, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_PyMjrContext, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_PyMjrContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_9mujoco_py_4cymj_MjSim __pyx_vtable_9mujoco_py_4cymj_MjSim;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_MjSim(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_MjSim *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_MjSim *)o);
  p->__pyx_vtab = __pyx_vtabptr_9mujoco_py_4cymj_MjSim;
  p->render_contexts = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_render_context_window = Py_None; Py_INCREF(Py_None);
  p->_render_context_offscreen = Py_None; Py_INCREF(Py_None);
  p->model = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)Py_None); Py_INCREF(Py_None);
  p->data = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)Py_None); Py_INCREF(Py_None);
  p->udd_state = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_udd_callback = Py_None; Py_INCREF(Py_None);
  p->extras = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->render_callback = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_5MjSim_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_MjSim(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_MjSim *p = (struct __pyx_obj_9mujoco_py_4cymj_MjSim *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->render_contexts);
  Py_CLEAR(p->_render_context_window);
  Py_CLEAR(p->_render_context_offscreen);
  Py_CLEAR(p->model);
  Py_CLEAR(p->data);
  Py_CLEAR(p->udd_state);
  Py_CLEAR(p->_udd_callback);
  Py_CLEAR(p->extras);
  Py_CLEAR(p->render_callback);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_MjSim(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_MjSim *p = (struct __pyx_obj_9mujoco_py_4cymj_MjSim *)o;
  if (p->render_contexts) {
    e = (*v)(p->render_contexts, a); if (e) return e;
  }
  if (p->_render_context_window) {
    e = (*v)(p->_render_context_window, a); if (e) return e;
  }
  if (p->_render_context_offscreen) {
    e = (*v)(p->_render_context_offscreen, a); if (e) return e;
  }
  if (p->model) {
    e = (*v)(((PyObject *)p->model), a); if (e) return e;
  }
  if (p->data) {
    e = (*v)(((PyObject *)p->data), a); if (e) return e;
  }
  if (p->udd_state) {
    e = (*v)(p->udd_state, a); if (e) return e;
  }
  if (p->_udd_callback) {
    e = (*v)(p->_udd_callback, a); if (e) return e;
  }
  if (p->extras) {
    e = (*v)(p->extras, a); if (e) return e;
  }
  if (p->render_callback) {
    e = (*v)(p->render_callback, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_MjSim(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_MjSim *p = (struct __pyx_obj_9mujoco_py_4cymj_MjSim *)o;
  tmp = ((PyObject*)p->render_contexts);
  p->render_contexts = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_render_context_window);
  p->_render_context_window = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_render_context_offscreen);
  p->_render_context_offscreen = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->model);
  p->model = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->data);
  p->data = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjData *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->udd_state);
  p->udd_state = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_udd_callback);
  p->_udd_callback = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->extras);
  p->extras = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->render_callback);
  p->render_callback = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim_udd_callback(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_12udd_callback_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_5MjSim_udd_callback(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_5MjSim_12udd_callback_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim_render_contexts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_15render_contexts_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim__render_context_window(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_22_render_context_window_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim__render_context_offscreen(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_25_render_context_offscreen_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim_model(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_5model_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim_data(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_4data_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim_nsubsteps(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_9nsubsteps_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_5MjSim_nsubsteps(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_5MjSim_9nsubsteps_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim_udd_state(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_9udd_state_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_5MjSim_udd_state(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_5MjSim_9udd_state_3__set__(o, v);
  }
  else {
    return __pyx_pw_9mujoco_py_4cymj_5MjSim_9udd_state_5__del__(o);
  }
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim__udd_callback(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_13_udd_callback_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim_extras(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_6extras_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim_substep_callback_ptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_20substep_callback_ptr_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_5MjSim_render_callback(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_5MjSim_15render_callback_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_5MjSim_render_callback(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_5MjSim_15render_callback_3__set__(o, v);
  }
  else {
    return __pyx_pw_9mujoco_py_4cymj_5MjSim_15render_callback_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_MjSim[] = {
  {"reset", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_3reset, METH_NOARGS, __pyx_doc_9mujoco_py_4cymj_5MjSim_2reset},
  {"forward", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_5forward, METH_NOARGS, __pyx_doc_9mujoco_py_4cymj_5MjSim_4forward},
  {"step", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_7step, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_5MjSim_6step},
  {"render", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_9render, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_5MjSim_8render},
  {"add_render_context", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_11add_render_context, METH_O, 0},
  {"substep_callback", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_13substep_callback, METH_NOARGS, 0},
  {"set_substep_callback", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_15set_substep_callback, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_5MjSim_14set_substep_callback},
  {"step_udd", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_17step_udd, METH_NOARGS, 0},
  {"get_state", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_19get_state, METH_NOARGS, __pyx_doc_9mujoco_py_4cymj_5MjSim_18get_state},
  {"set_state", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_21set_state, METH_O, __pyx_doc_9mujoco_py_4cymj_5MjSim_20set_state},
  {"set_state_from_flattened", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_23set_state_from_flattened, METH_O, __pyx_doc_9mujoco_py_4cymj_5MjSim_22set_state_from_flattened},
  {"save", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_25save, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_5MjSim_24save},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_27__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_5MjSim_29__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_MjSim[] = {
  {(char *)"udd_callback", __pyx_getprop_9mujoco_py_4cymj_5MjSim_udd_callback, __pyx_setprop_9mujoco_py_4cymj_5MjSim_udd_callback, (char *)0, 0},
  {(char *)"render_contexts", __pyx_getprop_9mujoco_py_4cymj_5MjSim_render_contexts, 0, (char *)0, 0},
  {(char *)"_render_context_window", __pyx_getprop_9mujoco_py_4cymj_5MjSim__render_context_window, 0, (char *)0, 0},
  {(char *)"_render_context_offscreen", __pyx_getprop_9mujoco_py_4cymj_5MjSim__render_context_offscreen, 0, (char *)0, 0},
  {(char *)"model", __pyx_getprop_9mujoco_py_4cymj_5MjSim_model, 0, (char *)0, 0},
  {(char *)"data", __pyx_getprop_9mujoco_py_4cymj_5MjSim_data, 0, (char *)0, 0},
  {(char *)"nsubsteps", __pyx_getprop_9mujoco_py_4cymj_5MjSim_nsubsteps, __pyx_setprop_9mujoco_py_4cymj_5MjSim_nsubsteps, (char *)0, 0},
  {(char *)"udd_state", __pyx_getprop_9mujoco_py_4cymj_5MjSim_udd_state, __pyx_setprop_9mujoco_py_4cymj_5MjSim_udd_state, (char *)0, 0},
  {(char *)"_udd_callback", __pyx_getprop_9mujoco_py_4cymj_5MjSim__udd_callback, 0, (char *)0, 0},
  {(char *)"extras", __pyx_getprop_9mujoco_py_4cymj_5MjSim_extras, 0, (char *)0, 0},
  {(char *)"substep_callback_ptr", __pyx_getprop_9mujoco_py_4cymj_5MjSim_substep_callback_ptr, 0, (char *)0, 0},
  {(char *)"render_callback", __pyx_getprop_9mujoco_py_4cymj_5MjSim_render_callback, __pyx_setprop_9mujoco_py_4cymj_5MjSim_render_callback, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_MjSim = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.MjSim", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_MjSim), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_MjSim, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "MjSim represents a running simulation including its state.\n\n    Similar to Gym's ``MujocoEnv``, it internally wraps a :class:`.PyMjModel`\n    and a :class:`.PyMjData`.\n\n    Parameters\n    ----------\n    model : :class:`.PyMjModel`\n        The model to simulate.\n    data : :class:`.PyMjData`\n        Optional container for the simulation state. Will be created if ``None``.\n    nsubsteps : int\n        Optional number of MuJoCo steps to run for every call to :meth:`.step`.\n        Buffers will be swapped only once per step.\n    udd_callback : fn(:class:`.MjSim`) -> dict\n        Optional callback for user-defined dynamics. At every call to\n        :meth:`.step`, it receives an MjSim object ``sim`` containing the\n        current user-defined dynamics state in ``sim.udd_state``, and returns the\n        next ``udd_state`` after applying the user-defined dynamics. This is\n        useful e.g. for reward functions that operate over functions of historical\n        state.\n    substep_callback : str or int or None\n        This uses a compiled C function as user-defined dynamics in substeps.\n        If given as a string, it's compiled as a C function and set as pointer.\n        If given as int, it's interpreted as a function pointer.\n        See :meth:`.set_substep_callback` for detailed info.\n    userdata_names : list of strings or None\n        This is a convenience parameter which is just set on the model.\n        Equivalent to calling ``model.set_userdata_names``\n    render_callback : callback for rendering.\n    ", /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_MjSim, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_MjSim, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_MjSim, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_MjSim, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_MjSim, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_9mujoco_py_4cymj_MjRenderContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)o);
  p->scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)Py_None); Py_INCREF(Py_None);
  p->cam = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)Py_None); Py_INCREF(Py_None);
  p->vopt = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)Py_None); Py_INCREF(Py_None);
  p->pert = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)Py_None); Py_INCREF(Py_None);
  p->con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)Py_None); Py_INCREF(Py_None);
  p->opengl_context = Py_None; Py_INCREF(Py_None);
  p->_markers = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_overlay = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->sim = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj_MjRenderContext(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *p = (struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_31__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->scn);
  Py_CLEAR(p->cam);
  Py_CLEAR(p->vopt);
  Py_CLEAR(p->pert);
  Py_CLEAR(p->con);
  Py_CLEAR(p->opengl_context);
  Py_CLEAR(p->_markers);
  Py_CLEAR(p->_overlay);
  Py_CLEAR(p->sim);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9mujoco_py_4cymj_MjRenderContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *p = (struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)o;
  if (p->scn) {
    e = (*v)(((PyObject *)p->scn), a); if (e) return e;
  }
  if (p->cam) {
    e = (*v)(((PyObject *)p->cam), a); if (e) return e;
  }
  if (p->vopt) {
    e = (*v)(((PyObject *)p->vopt), a); if (e) return e;
  }
  if (p->pert) {
    e = (*v)(((PyObject *)p->pert), a); if (e) return e;
  }
  if (p->con) {
    e = (*v)(((PyObject *)p->con), a); if (e) return e;
  }
  if (p->opengl_context) {
    e = (*v)(p->opengl_context, a); if (e) return e;
  }
  if (p->_markers) {
    e = (*v)(p->_markers, a); if (e) return e;
  }
  if (p->_overlay) {
    e = (*v)(p->_overlay, a); if (e) return e;
  }
  if (p->sim) {
    e = (*v)(p->sim, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj_MjRenderContext(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *p = (struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext *)o;
  tmp = ((PyObject*)p->scn);
  p->scn = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->cam);
  p->cam = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->vopt);
  p->vopt = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->pert);
  p->pert = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->con);
  p->con = ((struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->opengl_context);
  p->opengl_context = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_markers);
  p->_markers = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_overlay);
  p->_overlay = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->sim);
  p->sim = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_scn(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3scn_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_cam(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3cam_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_vopt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_4vopt_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_pert(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_4pert_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_con(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3con_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_opengl_context(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_14opengl_context_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext__visible(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_8_visible_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext__markers(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_8_markers_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext__overlay(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_8_overlay_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_offscreen(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_9offscreen_1__get__(o);
}

static PyObject *__pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_sim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3sim_1__get__(o);
}

static int __pyx_setprop_9mujoco_py_4cymj_15MjRenderContext_sim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3sim_3__set__(o, v);
  }
  else {
    return __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3sim_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_9mujoco_py_4cymj_MjRenderContext[] = {
  {"update_sim", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_5update_sim, METH_O, 0},
  {"_set_mujoco_buffers", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_7_set_mujoco_buffers, METH_NOARGS, 0},
  {"_setup_opengl_context", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_9_setup_opengl_context, METH_VARARGS|METH_KEYWORDS, 0},
  {"_init_camera", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_11_init_camera, METH_O, 0},
  {"update_offscreen_size", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_13update_offscreen_size, METH_VARARGS|METH_KEYWORDS, 0},
  {"render", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_15render, METH_VARARGS|METH_KEYWORDS, 0},
  {"read_pixels", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_17read_pixels, METH_VARARGS|METH_KEYWORDS, 0},
  {"upload_texture", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_19upload_texture, METH_O, __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_18upload_texture},
  {"draw_pixels", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_21draw_pixels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_20draw_pixels},
  {"move_camera", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_23move_camera, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_22move_camera},
  {"add_overlay", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_25add_overlay, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_24add_overlay},
  {"add_marker", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_27add_marker, METH_VARARGS|METH_KEYWORDS, 0},
  {"_add_marker_to_scene", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_29_add_marker_to_scene, METH_O, __pyx_doc_9mujoco_py_4cymj_15MjRenderContext_28_add_marker_to_scene},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_33__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9mujoco_py_4cymj_15MjRenderContext_35__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9mujoco_py_4cymj_MjRenderContext[] = {
  {(char *)"scn", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_scn, 0, (char *)0, 0},
  {(char *)"cam", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_cam, 0, (char *)0, 0},
  {(char *)"vopt", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_vopt, 0, (char *)0, 0},
  {(char *)"pert", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_pert, 0, (char *)0, 0},
  {(char *)"con", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_con, 0, (char *)0, 0},
  {(char *)"opengl_context", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_opengl_context, 0, (char *)0, 0},
  {(char *)"_visible", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext__visible, 0, (char *)0, 0},
  {(char *)"_markers", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext__markers, 0, (char *)0, 0},
  {(char *)"_overlay", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext__overlay, 0, (char *)0, 0},
  {(char *)"offscreen", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_offscreen, 0, (char *)0, 0},
  {(char *)"sim", __pyx_getprop_9mujoco_py_4cymj_15MjRenderContext_sim, __pyx_setprop_9mujoco_py_4cymj_15MjRenderContext_sim, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9mujoco_py_4cymj_MjRenderContext = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.MjRenderContext", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj_MjRenderContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj_MjRenderContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "\n    Class that encapsulates rendering functionality for a\n    MuJoCo simulation.\n    ", /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj_MjRenderContext, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj_MjRenderContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9mujoco_py_4cymj_MjRenderContext, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9mujoco_py_4cymj_MjRenderContext, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9mujoco_py_4cymj_15MjRenderContext_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj_MjRenderContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *__pyx_freelist_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names[8];
static int __pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names = 0;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names)))) {
    o = (PyObject*)__pyx_freelist_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names[--__pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names];
    memset(o, 0, sizeof(struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *p = (struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_id2name);
  Py_CLEAR(p->__pyx_v_name2id);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names)))) {
    __pyx_freelist_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names[__pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names++] = ((struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *p = (struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *)o;
  if (p->__pyx_v_id2name) {
    e = (*v)(p->__pyx_v_id2name, a); if (e) return e;
  }
  if (p->__pyx_v_name2id) {
    e = (*v)(p->__pyx_v_name2id, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *p = (struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names *)o;
  tmp = ((PyObject*)p->__pyx_v_id2name);
  p->__pyx_v_id2name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_name2id);
  p->__pyx_v_name2id = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.__pyx_scope_struct___extract_mj_names", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names, /*tp_traverse*/
  __pyx_tp_clear_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *__pyx_freelist_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr[8];
static int __pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr = 0;

static PyObject *__pyx_tp_new_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr)))) {
    o = (PyObject*)__pyx_freelist_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr[--__pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr(PyObject *o) {
  struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_id);
  Py_CLEAR(p->__pyx_t_0);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr)))) {
    __pyx_freelist_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr[__pyx_freecount_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_id) {
    e = (*v)(p->__pyx_v_id, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.__pyx_scope_struct_1_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_array __pyx_vtable_array;

static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_array_obj *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_array_obj *)o);
  p->__pyx_vtab = __pyx_vtabptr_array;
  p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_format = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_array___cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_array(PyObject *o) {
  struct __pyx_array_obj *p = (struct __pyx_array_obj *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_array___dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->mode);
  Py_CLEAR(p->_format);
  (*Py_TYPE(o)->tp_free)(o);
}
static PyObject *__pyx_sq_item_array(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static int __pyx_mp_ass_subscript_array(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_array___setitem__(o, i, v);
  }
  else {
    PyErr_Format(PyExc_NotImplementedError,
      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
    return -1;
  }
}

static PyObject *__pyx_tp_getattro_array(PyObject *o, PyObject *n) {
  PyObject *v = PyObject_GenericGetAttr(o, n);
  if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
    PyErr_Clear();
    v = __pyx_array___getattr__(o, n);
  }
  return v;
}

static PyObject *__pyx_getprop___pyx_array_memview(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(o);
}

static PyMethodDef __pyx_methods_array[] = {
  {"__getattr__", (PyCFunction)__pyx_array___getattr__, METH_O|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_array_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_array_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_array[] = {
  {(char *)"memview", __pyx_getprop___pyx_array_memview, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PySequenceMethods __pyx_tp_as_sequence_array = {
  __pyx_array___len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_array, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_array = {
  __pyx_array___len__, /*mp_length*/
  __pyx_array___getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_array, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_array = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_array_getbuffer, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};

static PyTypeObject __pyx_type___pyx_array = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.array", /*tp_name*/
  sizeof(struct __pyx_array_obj), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_array, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_array, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_array, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  __pyx_tp_getattro_array, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_array, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_array, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_array, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_array, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_MemviewEnum_obj *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_MemviewEnum_obj *)o);
  p->name = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_Enum(PyObject *o) {
  struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->name);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_Enum(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o;
  if (p->name) {
    e = (*v)(p->name, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_Enum(PyObject *o) {
  PyObject* tmp;
  struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o;
  tmp = ((PyObject*)p->name);
  p->name = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_Enum[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_MemviewEnum_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_MemviewEnum_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type___pyx_MemviewEnum = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.Enum", /*tp_name*/
  sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_Enum, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_MemviewEnum___repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_Enum, /*tp_traverse*/
  __pyx_tp_clear_Enum, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_Enum, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_MemviewEnum___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_Enum, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct_memoryview __pyx_vtable_memoryview;

static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_memoryview_obj *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_memoryview_obj *)o);
  p->__pyx_vtab = __pyx_vtabptr_memoryview;
  p->obj = Py_None; Py_INCREF(Py_None);
  p->_size = Py_None; Py_INCREF(Py_None);
  p->_array_interface = Py_None; Py_INCREF(Py_None);
  p->view.obj = NULL;
  if (unlikely(__pyx_memoryview___cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_memoryview(PyObject *o) {
  struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_memoryview___dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->obj);
  Py_CLEAR(p->_size);
  Py_CLEAR(p->_array_interface);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o;
  if (p->obj) {
    e = (*v)(p->obj, a); if (e) return e;
  }
  if (p->_size) {
    e = (*v)(p->_size, a); if (e) return e;
  }
  if (p->_array_interface) {
    e = (*v)(p->_array_interface, a); if (e) return e;
  }
  if (p->view.obj) {
    e = (*v)(p->view.obj, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_memoryview(PyObject *o) {
  PyObject* tmp;
  struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o;
  tmp = ((PyObject*)p->obj);
  p->obj = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_size);
  p->_size = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_array_interface);
  p->_array_interface = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  Py_CLEAR(p->view.obj);
  return 0;
}
static PyObject *__pyx_sq_item_memoryview(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static int __pyx_mp_ass_subscript_memoryview(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_memoryview___setitem__(o, i, v);
  }
  else {
    PyErr_Format(PyExc_NotImplementedError,
      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
    return -1;
  }
}

static PyObject *__pyx_getprop___pyx_memoryview_T(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(o);
}

static PyObject *__pyx_getprop___pyx_memoryview_base(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(o);
}

static PyObject *__pyx_getprop___pyx_memoryview_shape(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(o);
}

static PyObject *__pyx_getprop___pyx_memoryview_strides(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(o);
}

static PyObject *__pyx_getprop___pyx_memoryview_suboffsets(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(o);
}

static PyObject *__pyx_getprop___pyx_memoryview_ndim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(o);
}

static PyObject *__pyx_getprop___pyx_memoryview_itemsize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(o);
}

static PyObject *__pyx_getprop___pyx_memoryview_nbytes(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(o);
}

static PyObject *__pyx_getprop___pyx_memoryview_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(o);
}

static PyMethodDef __pyx_methods_memoryview[] = {
  {"is_c_contig", (PyCFunction)__pyx_memoryview_is_c_contig, METH_NOARGS, 0},
  {"is_f_contig", (PyCFunction)__pyx_memoryview_is_f_contig, METH_NOARGS, 0},
  {"copy", (PyCFunction)__pyx_memoryview_copy, METH_NOARGS, 0},
  {"copy_fortran", (PyCFunction)__pyx_memoryview_copy_fortran, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_memoryview_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_memoryview_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_memoryview[] = {
  {(char *)"T", __pyx_getprop___pyx_memoryview_T, 0, (char *)0, 0},
  {(char *)"base", __pyx_getprop___pyx_memoryview_base, 0, (char *)0, 0},
  {(char *)"shape", __pyx_getprop___pyx_memoryview_shape, 0, (char *)0, 0},
  {(char *)"strides", __pyx_getprop___pyx_memoryview_strides, 0, (char *)0, 0},
  {(char *)"suboffsets", __pyx_getprop___pyx_memoryview_suboffsets, 0, (char *)0, 0},
  {(char *)"ndim", __pyx_getprop___pyx_memoryview_ndim, 0, (char *)0, 0},
  {(char *)"itemsize", __pyx_getprop___pyx_memoryview_itemsize, 0, (char *)0, 0},
  {(char *)"nbytes", __pyx_getprop___pyx_memoryview_nbytes, 0, (char *)0, 0},
  {(char *)"size", __pyx_getprop___pyx_memoryview_size, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PySequenceMethods __pyx_tp_as_sequence_memoryview = {
  __pyx_memoryview___len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_memoryview, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_memoryview = {
  __pyx_memoryview___len__, /*mp_length*/
  __pyx_memoryview___getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_memoryview, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_memoryview = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_memoryview_getbuffer, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};

static PyTypeObject __pyx_type___pyx_memoryview = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj.memoryview", /*tp_name*/
  sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_memoryview, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_memoryview___repr__, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_memoryview, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_memoryview, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_memoryview___str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_memoryview, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_memoryview, /*tp_traverse*/
  __pyx_tp_clear_memoryview, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_memoryview, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_memoryview, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_memoryview, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};
static struct __pyx_vtabstruct__memoryviewslice __pyx_vtable__memoryviewslice;

static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_memoryviewslice_obj *p;
  PyObject *o = __pyx_tp_new_memoryview(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_memoryviewslice_obj *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_memoryview*)__pyx_vtabptr__memoryviewslice;
  p->from_object = Py_None; Py_INCREF(Py_None);
  p->from_slice.memview = NULL;
  return o;
}

static void __pyx_tp_dealloc__memoryviewslice(PyObject *o) {
  struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_memoryviewslice___dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->from_object);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_memoryview(o);
}

static int __pyx_tp_traverse__memoryviewslice(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o;
  e = __pyx_tp_traverse_memoryview(o, v, a); if (e) return e;
  if (p->from_object) {
    e = (*v)(p->from_object, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear__memoryviewslice(PyObject *o) {
  PyObject* tmp;
  struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o;
  __pyx_tp_clear_memoryview(o);
  tmp = ((PyObject*)p->from_object);
  p->from_object = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  __PYX_XDEC_MEMVIEW(&p->from_slice, 1);
  return 0;
}

static PyObject *__pyx_getprop___pyx_memoryviewslice_base(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(o);
}

static PyMethodDef __pyx_methods__memoryviewslice[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_memoryviewslice_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_memoryviewslice_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets__memoryviewslice[] = {
  {(char *)"base", __pyx_getprop___pyx_memoryviewslice_base, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type___pyx_memoryviewslice = {
  PyVarObject_HEAD_INIT(0, 0)
  "mujoco_py.cymj._memoryviewslice", /*tp_name*/
  sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_memoryview___repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  #if CYTHON_COMPILING_IN_PYPY
  __pyx_memoryview___str__, /*tp_str*/
  #else
  0, /*tp_str*/
  #endif
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "Internal class for passing memoryview slices to Python", /*tp_doc*/
  __pyx_tp_traverse__memoryviewslice, /*tp_traverse*/
  __pyx_tp_clear__memoryviewslice, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods__memoryviewslice, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets__memoryviewslice, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new__memoryviewslice, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};

#if PY_MAJOR_VERSION >= 3
#if CYTHON_PEP489_MULTI_PHASE_INIT
static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
static int __pyx_pymod_exec_cymj(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec_cymj},
  {0, NULL}
};
#endif

static struct PyModuleDef __pyx_moduledef = {
    PyModuleDef_HEAD_INIT,
    "cymj",
    0, /* m_doc */
  #if CYTHON_PEP489_MULTI_PHASE_INIT
    0, /* m_size */
  #else
    -1, /* m_size */
  #endif
    __pyx_methods /* m_methods */,
  #if CYTHON_PEP489_MULTI_PHASE_INIT
    __pyx_moduledef_slots, /* m_slots */
  #else
    NULL, /* m_reload */
  #endif
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_n_s_ABCMeta, __pyx_k_ABCMeta, sizeof(__pyx_k_ABCMeta), 0, 0, 1, 1},
  {&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1},
  {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0},
  {&__pyx_n_s_CAMERA_FIXED, __pyx_k_CAMERA_FIXED, sizeof(__pyx_k_CAMERA_FIXED), 0, 0, 1, 1},
  {&__pyx_n_s_CAMERA_FREE, __pyx_k_CAMERA_FREE, sizeof(__pyx_k_CAMERA_FREE), 0, 0, 1, 1},
  {&__pyx_n_s_CAT_DECOR, __pyx_k_CAT_DECOR, sizeof(__pyx_k_CAT_DECOR), 0, 0, 1, 1},
  {&__pyx_n_u_CUDA_VISIBLE_DEVICES, __pyx_k_CUDA_VISIBLE_DEVICES, sizeof(__pyx_k_CUDA_VISIBLE_DEVICES), 0, 1, 0, 1},
  {&__pyx_kp_u_CUDA_buffers_must_be_mapped_befo, __pyx_k_CUDA_buffers_must_be_mapped_befo, sizeof(__pyx_k_CUDA_buffers_must_be_mapped_befo), 0, 1, 0, 0},
  {&__pyx_kp_u_CUDA_buffers_must_be_unmapped_be, __pyx_k_CUDA_buffers_must_be_unmapped_be, sizeof(__pyx_k_CUDA_buffers_must_be_unmapped_be), 0, 1, 0, 0},
  {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0},
  {&__pyx_kp_s_Cannot_index_with_type_s, __pyx_k_Cannot_index_with_type_s, sizeof(__pyx_k_Cannot_index_with_type_s), 0, 0, 1, 0},
  {&__pyx_kp_s_Class_to_wrap_capturing_excepti, __pyx_k_Class_to_wrap_capturing_excepti, sizeof(__pyx_k_Class_to_wrap_capturing_excepti), 0, 0, 1, 0},
  {&__pyx_n_s_Context, __pyx_k_Context, sizeof(__pyx_k_Context), 0, 0, 1, 1},
  {&__pyx_kp_u_Creating_offscreen_glfw, __pyx_k_Creating_offscreen_glfw, sizeof(__pyx_k_Creating_offscreen_glfw), 0, 1, 0, 0},
  {&__pyx_kp_u_Creating_window_glfw, __pyx_k_Creating_window_glfw, sizeof(__pyx_k_Creating_window_glfw), 0, 1, 0, 0},
  {&__pyx_n_s_CudaBufferMappedError, __pyx_k_CudaBufferMappedError, sizeof(__pyx_k_CudaBufferMappedError), 0, 0, 1, 1},
  {&__pyx_n_s_CudaBufferNotMappedError, __pyx_k_CudaBufferNotMappedError, sizeof(__pyx_k_CudaBufferNotMappedError), 0, 0, 1, 1},
  {&__pyx_n_s_CudaNotEnabledError, __pyx_k_CudaNotEnabledError, sizeof(__pyx_k_CudaNotEnabledError), 0, 0, 1, 1},
  {&__pyx_n_s_DOUBLEBUFFER, __pyx_k_DOUBLEBUFFER, sizeof(__pyx_k_DOUBLEBUFFER), 0, 0, 1, 1},
  {&__pyx_n_u_DYLD_LIBRARY_PATH, __pyx_k_DYLD_LIBRARY_PATH, sizeof(__pyx_k_DYLD_LIBRARY_PATH), 0, 1, 0, 1},
  {&__pyx_kp_u_Depth_not_enabled_Use_depth_True, __pyx_k_Depth_not_enabled_Use_depth_True, sizeof(__pyx_k_Depth_not_enabled_Use_depth_True), 0, 1, 0, 0},
  {&__pyx_n_s_Device, __pyx_k_Device, sizeof(__pyx_k_Device), 0, 0, 1, 1},
  {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1},
  {&__pyx_kp_s_Empty_shape_tuple_for_cython_arr, __pyx_k_Empty_shape_tuple_for_cython_arr, sizeof(__pyx_k_Empty_shape_tuple_for_cython_arr), 0, 0, 1, 0},
  {&__pyx_kp_u_Every_value_in_udd_state_must_be, __pyx_k_Every_value_in_udd_state_must_be, sizeof(__pyx_k_Every_value_in_udd_state_must_be), 0, 1, 0, 0},
  {&__pyx_n_s_FONTSCALE_150, __pyx_k_FONTSCALE_150, sizeof(__pyx_k_FONTSCALE_150), 0, 0, 1, 1},
  {&__pyx_kp_u_Failed_to_create_GLFW_window, __pyx_k_Failed_to_create_GLFW_window, sizeof(__pyx_k_Failed_to_create_GLFW_window), 0, 1, 0, 0},
  {&__pyx_kp_u_Failed_to_import_pycuda, __pyx_k_Failed_to_import_pycuda, sizeof(__pyx_k_Failed_to_import_pycuda), 0, 1, 0, 0},
  {&__pyx_kp_u_Failed_to_initialize_GLFW, __pyx_k_Failed_to_initialize_GLFW, sizeof(__pyx_k_Failed_to_initialize_GLFW), 0, 1, 0, 0},
  {&__pyx_kp_u_Failed_to_initialize_OpenGL, __pyx_k_Failed_to_initialize_OpenGL, sizeof(__pyx_k_Failed_to_initialize_OpenGL), 0, 1, 0, 0},
  {&__pyx_kp_u_Failed_to_load_XML_file_s_mj_loa, __pyx_k_Failed_to_load_XML_file_s_mj_loa, sizeof(__pyx_k_Failed_to_load_XML_file_s_mj_loa), 0, 1, 0, 0},
  {&__pyx_kp_u_Failed_to_save_XML, __pyx_k_Failed_to_save_XML, sizeof(__pyx_k_Failed_to_save_XML), 0, 1, 0, 0},
  {&__pyx_kp_u_Failed_to_set_buffer_size, __pyx_k_Failed_to_set_buffer_size, sizeof(__pyx_k_Failed_to_set_buffer_size), 0, 1, 0, 0},
  {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0},
  {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0},
  {&__pyx_n_s_GEOM_BOX, __pyx_k_GEOM_BOX, sizeof(__pyx_k_GEOM_BOX), 0, 0, 1, 1},
  {&__pyx_n_s_GLFW_IS_INITIALIZED, __pyx_k_GLFW_IS_INITIALIZED, sizeof(__pyx_k_GLFW_IS_INITIALIZED), 0, 0, 1, 1},
  {&__pyx_kp_u_GLFW_error_code_d_s, __pyx_k_GLFW_error_code_d_s, sizeof(__pyx_k_GLFW_error_code_d_s), 0, 1, 0, 0},
  {&__pyx_kp_u_GLFW_not_installed, __pyx_k_GLFW_not_installed, sizeof(__pyx_k_GLFW_not_installed), 0, 1, 0, 0},
  {&__pyx_n_u_GPUS, __pyx_k_GPUS, sizeof(__pyx_k_GPUS), 0, 1, 0, 1},
  {&__pyx_n_s_GlfwContext, __pyx_k_GlfwContext, sizeof(__pyx_k_GlfwContext), 0, 0, 1, 1},
  {&__pyx_n_s_GlfwContext___init, __pyx_k_GlfwContext___init, sizeof(__pyx_k_GlfwContext___init), 0, 0, 1, 1},
  {&__pyx_n_s_GlfwContext__create_window, __pyx_k_GlfwContext__create_window, sizeof(__pyx_k_GlfwContext__create_window), 0, 0, 1, 1},
  {&__pyx_n_s_GlfwContext__glfw_error_callback, __pyx_k_GlfwContext__glfw_error_callback, sizeof(__pyx_k_GlfwContext__glfw_error_callback), 0, 0, 1, 1},
  {&__pyx_n_s_GlfwContext__init_glfw, __pyx_k_GlfwContext__init_glfw, sizeof(__pyx_k_GlfwContext__init_glfw), 0, 0, 1, 1},
  {&__pyx_n_s_GlfwContext__set_window_size, __pyx_k_GlfwContext__set_window_size, sizeof(__pyx_k_GlfwContext__set_window_size), 0, 0, 1, 1},
  {&__pyx_n_s_GlfwContext_get_buffer_size, __pyx_k_GlfwContext_get_buffer_size, sizeof(__pyx_k_GlfwContext_get_buffer_size), 0, 0, 1, 1},
  {&__pyx_n_s_GlfwContext_make_context_current, __pyx_k_GlfwContext_make_context_current, sizeof(__pyx_k_GlfwContext_make_context_current), 0, 0, 1, 1},
  {&__pyx_n_s_GlfwContext_set_buffer_size, __pyx_k_GlfwContext_set_buffer_size, sizeof(__pyx_k_GlfwContext_set_buffer_size), 0, 0, 1, 1},
  {&__pyx_n_s_GlfwError, __pyx_k_GlfwError, sizeof(__pyx_k_GlfwError), 0, 0, 1, 1},
  {&__pyx_n_s_INIT_HEIGHT, __pyx_k_INIT_HEIGHT, sizeof(__pyx_k_INIT_HEIGHT), 0, 0, 1, 1},
  {&__pyx_n_s_INIT_WIDTH, __pyx_k_INIT_WIDTH, sizeof(__pyx_k_INIT_WIDTH), 0, 0, 1, 1},
  {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_k_Incompatible_checksums_s_vs_0xb0, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xb0), 0, 0, 1, 0},
  {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
  {&__pyx_kp_s_Indirect_dimensions_not_supporte, __pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 0, 1, 0},
  {&__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 0, 1, 0},
  {&__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_k_Invalid_shape_in_axis_d_d, sizeof(__pyx_k_Invalid_shape_in_axis_d_d), 0, 0, 1, 0},
  {&__pyx_kp_u_Keys_cannot_be_added_to_udd_stat, __pyx_k_Keys_cannot_be_added_to_udd_stat, sizeof(__pyx_k_Keys_cannot_be_added_to_udd_stat), 0, 1, 0, 0},
  {&__pyx_kp_u_Keys_cannot_be_dropped_from_udd, __pyx_k_Keys_cannot_be_dropped_from_udd, sizeof(__pyx_k_Keys_cannot_be_dropped_from_udd), 0, 1, 0, 0},
  {&__pyx_n_s_Kp, __pyx_k_Kp, sizeof(__pyx_k_Kp), 0, 0, 1, 1},
  {&__pyx_n_s_Kv, __pyx_k_Kv, sizeof(__pyx_k_Kv), 0, 0, 1, 1},
  {&__pyx_n_s_Lock, __pyx_k_Lock, sizeof(__pyx_k_Lock), 0, 0, 1, 1},
  {&__pyx_n_s_M, __pyx_k_M, sizeof(__pyx_k_M), 0, 0, 1, 1},
  {&__pyx_kp_u_Mapped_CUDA_depth_buffer_pointer, __pyx_k_Mapped_CUDA_depth_buffer_pointer, sizeof(__pyx_k_Mapped_CUDA_depth_buffer_pointer), 0, 1, 0, 0},
  {&__pyx_kp_u_Mapped_CUDA_rgb_buffer_pointer_d, __pyx_k_Mapped_CUDA_rgb_buffer_pointer_d, sizeof(__pyx_k_Mapped_CUDA_rgb_buffer_pointer_d), 0, 1, 0, 0},
  {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
  {&__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_k_MemoryView_of_r_at_0x_x, sizeof(__pyx_k_MemoryView_of_r_at_0x_x), 0, 0, 1, 0},
  {&__pyx_kp_s_MemoryView_of_r_object, __pyx_k_MemoryView_of_r_object, sizeof(__pyx_k_MemoryView_of_r_object), 0, 0, 1, 0},
  {&__pyx_n_s_MjBatchRenderer, __pyx_k_MjBatchRenderer, sizeof(__pyx_k_MjBatchRenderer), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRendererException, __pyx_k_MjBatchRendererException, sizeof(__pyx_k_MjBatchRendererException), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRendererNotSupported, __pyx_k_MjBatchRendererNotSupported, sizeof(__pyx_k_MjBatchRendererNotSupported), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer___del, __pyx_k_MjBatchRenderer___del, sizeof(__pyx_k_MjBatchRenderer___del), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer___init, __pyx_k_MjBatchRenderer___init, sizeof(__pyx_k_MjBatchRenderer___init), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer__init_cuda, __pyx_k_MjBatchRenderer__init_cuda, sizeof(__pyx_k_MjBatchRenderer__init_cuda), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer__read_cuda, __pyx_k_MjBatchRenderer__read_cuda, sizeof(__pyx_k_MjBatchRenderer__read_cuda), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer__read_nocuda, __pyx_k_MjBatchRenderer__read_nocuda, sizeof(__pyx_k_MjBatchRenderer__read_nocuda), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer_cuda_depth_buffe, __pyx_k_MjBatchRenderer_cuda_depth_buffe, sizeof(__pyx_k_MjBatchRenderer_cuda_depth_buffe), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer_cuda_rgb_buffer, __pyx_k_MjBatchRenderer_cuda_rgb_buffer, sizeof(__pyx_k_MjBatchRenderer_cuda_rgb_buffer), 0, 0, 1, 1},
  {&__pyx_kp_u_MjBatchRenderer_currently_only_s, __pyx_k_MjBatchRenderer_currently_only_s, sizeof(__pyx_k_MjBatchRenderer_currently_only_s), 0, 1, 0, 0},
  {&__pyx_n_s_MjBatchRenderer_map, __pyx_k_MjBatchRenderer_map, sizeof(__pyx_k_MjBatchRenderer_map), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer_prepare_render_c, __pyx_k_MjBatchRenderer_prepare_render_c, sizeof(__pyx_k_MjBatchRenderer_prepare_render_c), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer_read, __pyx_k_MjBatchRenderer_read, sizeof(__pyx_k_MjBatchRenderer_read), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer_render, __pyx_k_MjBatchRenderer_render, sizeof(__pyx_k_MjBatchRenderer_render), 0, 0, 1, 1},
  {&__pyx_n_s_MjBatchRenderer_unmap, __pyx_k_MjBatchRenderer_unmap, sizeof(__pyx_k_MjBatchRenderer_unmap), 0, 0, 1, 1},
  {&__pyx_n_s_MjRenderContextOffscreen, __pyx_k_MjRenderContextOffscreen, sizeof(__pyx_k_MjRenderContextOffscreen), 0, 0, 1, 1},
  {&__pyx_n_s_MjRenderContextOffscreen___cinit, __pyx_k_MjRenderContextOffscreen___cinit, sizeof(__pyx_k_MjRenderContextOffscreen___cinit), 0, 0, 1, 1},
  {&__pyx_n_s_MjRenderContextWindow, __pyx_k_MjRenderContextWindow, sizeof(__pyx_k_MjRenderContextWindow), 0, 0, 1, 1},
  {&__pyx_n_s_MjRenderContextWindow___init, __pyx_k_MjRenderContextWindow___init, sizeof(__pyx_k_MjRenderContextWindow___init), 0, 0, 1, 1},
  {&__pyx_n_s_MjRenderContextWindow_render, __pyx_k_MjRenderContextWindow_render, sizeof(__pyx_k_MjRenderContextWindow_render), 0, 0, 1, 1},
  {&__pyx_n_s_MjRenderContextWindow_window, __pyx_k_MjRenderContextWindow_window, sizeof(__pyx_k_MjRenderContextWindow_window), 0, 0, 1, 1},
  {&__pyx_n_s_MjSimState, __pyx_k_MjSimState, sizeof(__pyx_k_MjSimState), 0, 0, 1, 1},
  {&__pyx_n_s_MjSimState___eq, __pyx_k_MjSimState___eq, sizeof(__pyx_k_MjSimState___eq), 0, 0, 1, 1},
  {&__pyx_n_s_MjSimState___ne, __pyx_k_MjSimState___ne, sizeof(__pyx_k_MjSimState___ne), 0, 0, 1, 1},
  {&__pyx_n_s_MjSimState__flatten_dict, __pyx_k_MjSimState__flatten_dict, sizeof(__pyx_k_MjSimState__flatten_dict), 0, 0, 1, 1},
  {&__pyx_n_s_MjSimState__unflatten_dict, __pyx_k_MjSimState__unflatten_dict, sizeof(__pyx_k_MjSimState__unflatten_dict), 0, 0, 1, 1},
  {&__pyx_n_s_MjSimState_flatten, __pyx_k_MjSimState_flatten, sizeof(__pyx_k_MjSimState_flatten), 0, 0, 1, 1},
  {&__pyx_n_s_MjSimState_from_flattened, __pyx_k_MjSimState_from_flattened, sizeof(__pyx_k_MjSimState_from_flattened), 0, 0, 1, 1},
  {&__pyx_n_s_MjSim_render_lock, __pyx_k_MjSim_render_lock, sizeof(__pyx_k_MjSim_render_lock), 0, 0, 1, 1},
  {&__pyx_n_s_MjViewer, __pyx_k_MjViewer, sizeof(__pyx_k_MjViewer), 0, 0, 1, 1},
  {&__pyx_kp_u_Mode_must_be_either_window_or_of, __pyx_k_Mode_must_be_either_window_or_of, sizeof(__pyx_k_Mode_must_be_either_window_or_of), 0, 1, 0, 0},
  {&__pyx_n_s_N, __pyx_k_N, sizeof(__pyx_k_N), 0, 0, 1, 1},
  {&__pyx_n_s_NamedTemporaryFile, __pyx_k_NamedTemporaryFile, sizeof(__pyx_k_NamedTemporaryFile), 0, 0, 1, 1},
  {&__pyx_kp_u_No_actuator_with_id_d_exists, __pyx_k_No_actuator_with_id_d_exists, sizeof(__pyx_k_No_actuator_with_id_d_exists), 0, 1, 0, 0},
  {&__pyx_kp_u_No_actuator_with_name_s_exists_A, __pyx_k_No_actuator_with_name_s_exists_A, sizeof(__pyx_k_No_actuator_with_name_s_exists_A), 0, 1, 0, 0},
  {&__pyx_kp_u_No_body_with_id_d_exists, __pyx_k_No_body_with_id_d_exists, sizeof(__pyx_k_No_body_with_id_d_exists), 0, 1, 0, 0},
  {&__pyx_kp_u_No_body_with_name_s_exists_Avail, __pyx_k_No_body_with_name_s_exists_Avail, sizeof(__pyx_k_No_body_with_name_s_exists_Avail), 0, 1, 0, 0},
  {&__pyx_kp_u_No_camera_with_id_d_exists, __pyx_k_No_camera_with_id_d_exists, sizeof(__pyx_k_No_camera_with_id_d_exists), 0, 1, 0, 0},
  {&__pyx_kp_u_No_camera_with_name_s_exists_Ava, __pyx_k_No_camera_with_name_s_exists_Ava, sizeof(__pyx_k_No_camera_with_name_s_exists_Ava), 0, 1, 0, 0},
  {&__pyx_kp_u_No_geom_with_id_d_exists, __pyx_k_No_geom_with_id_d_exists, sizeof(__pyx_k_No_geom_with_id_d_exists), 0, 1, 0, 0},
  {&__pyx_kp_u_No_geom_with_name_s_exists_Avail, __pyx_k_No_geom_with_name_s_exists_Avail, sizeof(__pyx_k_No_geom_with_name_s_exists_Avail), 0, 1, 0, 0},
  {&__pyx_kp_u_No_joint_with_id_d_exists, __pyx_k_No_joint_with_id_d_exists, sizeof(__pyx_k_No_joint_with_id_d_exists), 0, 1, 0, 0},
  {&__pyx_kp_u_No_joint_with_name_s_exists_Avai, __pyx_k_No_joint_with_name_s_exists_Avai, sizeof(__pyx_k_No_joint_with_name_s_exists_Avai), 0, 1, 0, 0},
  {&__pyx_kp_u_No_light_with_id_d_exists, __pyx_k_No_light_with_id_d_exists, sizeof(__pyx_k_No_light_with_id_d_exists), 0, 1, 0, 0},
  {&__pyx_kp_u_No_light_with_name_s_exists_Avai, __pyx_k_No_light_with_name_s_exists_Avai, sizeof(__pyx_k_No_light_with_name_s_exists_Avai), 0, 1, 0, 0},
  {&__pyx_kp_u_No_sensor_with_id_d_exists, __pyx_k_No_sensor_with_id_d_exists, sizeof(__pyx_k_No_sensor_with_id_d_exists), 0, 1, 0, 0},
  {&__pyx_kp_u_No_sensor_with_name_s_exists_Ava, __pyx_k_No_sensor_with_name_s_exists_Ava, sizeof(__pyx_k_No_sensor_with_name_s_exists_Ava), 0, 1, 0, 0},
  {&__pyx_kp_u_No_site_with_id_d_exists, __pyx_k_No_site_with_id_d_exists, sizeof(__pyx_k_No_site_with_id_d_exists), 0, 1, 0, 0},
  {&__pyx_kp_u_No_site_with_name_s_exists_Avail, __pyx_k_No_site_with_name_s_exists_Avail, sizeof(__pyx_k_No_site_with_name_s_exists_Avail), 0, 1, 0, 0},
  {&__pyx_kp_u_No_userdata_with_id_d_exists, __pyx_k_No_userdata_with_id_d_exists, sizeof(__pyx_k_No_userdata_with_id_d_exists), 0, 1, 0, 0},
  {&__pyx_kp_u_No_userdata_with_name_s_exists_A, __pyx_k_No_userdata_with_name_s_exists_A, sizeof(__pyx_k_No_userdata_with_name_s_exists_A), 0, 1, 0, 0},
  {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0},
  {&__pyx_n_s_NotImplemented, __pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 0, 0, 1, 1},
  {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1},
  {&__pyx_n_s_Number, __pyx_k_Number, sizeof(__pyx_k_Number), 0, 0, 1, 1},
  {&__pyx_kp_u_Numpy_array_values_in_udd_state, __pyx_k_Numpy_array_values_in_udd_state, sizeof(__pyx_k_Numpy_array_values_in_udd_state), 0, 1, 0, 0},
  {&__pyx_n_b_O, __pyx_k_O, sizeof(__pyx_k_O), 0, 0, 0, 1},
  {&__pyx_n_s_OBJ_UNKNOWN, __pyx_k_OBJ_UNKNOWN, sizeof(__pyx_k_OBJ_UNKNOWN), 0, 0, 1, 1},
  {&__pyx_n_s_OffscreenOpenGLContext, __pyx_k_OffscreenOpenGLContext, sizeof(__pyx_k_OffscreenOpenGLContext), 0, 0, 1, 1},
  {&__pyx_n_s_OffscreenOpenGLContext___init, __pyx_k_OffscreenOpenGLContext___init, sizeof(__pyx_k_OffscreenOpenGLContext___init), 0, 0, 1, 1},
  {&__pyx_n_s_OffscreenOpenGLContext_close, __pyx_k_OffscreenOpenGLContext_close, sizeof(__pyx_k_OffscreenOpenGLContext_close), 0, 0, 1, 1},
  {&__pyx_n_s_OffscreenOpenGLContext_make_cont, __pyx_k_OffscreenOpenGLContext_make_cont, sizeof(__pyx_k_OffscreenOpenGLContext_make_cont), 0, 0, 1, 1},
  {&__pyx_n_s_OffscreenOpenGLContext_set_buffe, __pyx_k_OffscreenOpenGLContext_set_buffe, sizeof(__pyx_k_OffscreenOpenGLContext_set_buffe), 0, 0, 1, 1},
  {&__pyx_kp_u_Offscreen_rendering_not_supporte, __pyx_k_Offscreen_rendering_not_supporte, sizeof(__pyx_k_Offscreen_rendering_not_supporte), 0, 1, 0, 0},
  {&__pyx_kp_u_Only_GlfwContext_supported_for_w, __pyx_k_Only_GlfwContext_supported_for_w, sizeof(__pyx_k_Only_GlfwContext_supported_for_w), 0, 1, 0, 0},
  {&__pyx_kp_u_Only_label_is_a_string_in_mjvGeo, __pyx_k_Only_label_is_a_string_in_mjvGeo, sizeof(__pyx_k_Only_label_is_a_string_in_mjvGeo), 0, 1, 0, 0},
  {&__pyx_n_s_OpenGLContext, __pyx_k_OpenGLContext, sizeof(__pyx_k_OpenGLContext), 0, 0, 1, 1},
  {&__pyx_n_s_OpenGLContext_make_context_curre, __pyx_k_OpenGLContext_make_context_curre, sizeof(__pyx_k_OpenGLContext_make_context_curre), 0, 0, 1, 1},
  {&__pyx_n_s_OpenGLContext_set_buffer_size, __pyx_k_OpenGLContext_set_buffer_size, sizeof(__pyx_k_OpenGLContext_set_buffer_size), 0, 0, 1, 1},
  {&__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 0, 1, 0},
  {&__pyx_n_s_OverflowError, __pyx_k_OverflowError, sizeof(__pyx_k_OverflowError), 0, 0, 1, 1},
  {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
  {&__pyx_n_s_PyMjModel__extract_mj_names_loca, __pyx_k_PyMjModel__extract_mj_names_loca, sizeof(__pyx_k_PyMjModel__extract_mj_names_loca), 0, 0, 1, 1},
  {&__pyx_kp_u_Ran_out_of_geoms_maxgeom_d, __pyx_k_Ran_out_of_geoms_maxgeom_d, sizeof(__pyx_k_Ran_out_of_geoms_maxgeom_d), 0, 1, 0, 0},
  {&__pyx_n_s_RegisteredBuffer, __pyx_k_RegisteredBuffer, sizeof(__pyx_k_RegisteredBuffer), 0, 0, 1, 1},
  {&__pyx_kp_s_Represents_a_snapshot_of_the_sim, __pyx_k_Represents_a_snapshot_of_the_sim, sizeof(__pyx_k_Represents_a_snapshot_of_the_sim), 0, 0, 1, 0},
  {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
  {&__pyx_n_s_SAMPLES, __pyx_k_SAMPLES, sizeof(__pyx_k_SAMPLES), 0, 0, 1, 1},
  {&__pyx_n_u_SimStateBase, __pyx_k_SimStateBase, sizeof(__pyx_k_SimStateBase), 0, 1, 0, 1},
  {&__pyx_kp_b_T, __pyx_k_T, sizeof(__pyx_k_T), 0, 0, 0, 0},
  {&__pyx_n_s_TemporaryDirectory, __pyx_k_TemporaryDirectory, sizeof(__pyx_k_TemporaryDirectory), 0, 0, 1, 1},
  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
  {&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0},
  {&__pyx_kp_u_Unrecognized_extension_for_s_Exp, __pyx_k_Unrecognized_extension_for_s_Exp, sizeof(__pyx_k_Unrecognized_extension_for_s_Exp), 0, 1, 0, 0},
  {&__pyx_kp_u_Unsupported_format_Valid_ones_ar, __pyx_k_Unsupported_format_Valid_ones_ar, sizeof(__pyx_k_Unsupported_format_Valid_ones_ar), 0, 1, 0, 0},
  {&__pyx_kp_s_Utility_class_for_rendering_int, __pyx_k_Utility_class_for_rendering_int, sizeof(__pyx_k_Utility_class_for_rendering_int), 0, 0, 1, 0},
  {&__pyx_n_s_VISIBLE, __pyx_k_VISIBLE, sizeof(__pyx_k_VISIBLE), 0, 0, 1, 1},
  {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
  {&__pyx_kp_u_Value_has_incorrect_shape_s_s, __pyx_k_Value_has_incorrect_shape_s_s, sizeof(__pyx_k_Value_has_incorrect_shape_s_s), 0, 1, 0, 0},
  {&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1},
  {&__pyx_kp_u_Window_rendering_not_supported, __pyx_k_Window_rendering_not_supported, sizeof(__pyx_k_Window_rendering_not_supported), 0, 1, 0, 0},
  {&__pyx_kp_u__107, __pyx_k__107, sizeof(__pyx_k__107), 0, 1, 0, 0},
  {&__pyx_kp_u__120, __pyx_k__120, sizeof(__pyx_k__120), 0, 1, 0, 0},
  {&__pyx_kp_u__123, __pyx_k__123, sizeof(__pyx_k__123), 0, 1, 0, 0},
  {&__pyx_kp_b__171, __pyx_k__171, sizeof(__pyx_k__171), 0, 0, 0, 0},
  {&__pyx_kp_b__172, __pyx_k__172, sizeof(__pyx_k__172), 0, 0, 0, 0},
  {&__pyx_kp_b__173, __pyx_k__173, sizeof(__pyx_k__173), 0, 0, 0, 0},
  {&__pyx_n_s__611, __pyx_k__611, sizeof(__pyx_k__611), 0, 0, 1, 1},
  {&__pyx_n_s__664, __pyx_k__664, sizeof(__pyx_k__664), 0, 0, 1, 1},
  {&__pyx_kp_b__83, __pyx_k__83, sizeof(__pyx_k__83), 0, 0, 0, 0},
  {&__pyx_kp_u__83, __pyx_k__83, sizeof(__pyx_k__83), 0, 1, 0, 0},
  {&__pyx_kp_u__85, __pyx_k__85, sizeof(__pyx_k__85), 0, 1, 0, 0},
  {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
  {&__pyx_n_s_a0, __pyx_k_a0, sizeof(__pyx_k_a0), 0, 0, 1, 1},
  {&__pyx_n_s_a1, __pyx_k_a1, sizeof(__pyx_k_a1), 0, 0, 1, 1},
  {&__pyx_n_s_a2, __pyx_k_a2, sizeof(__pyx_k_a2), 0, 0, 1, 1},
  {&__pyx_n_s_abc, __pyx_k_abc, sizeof(__pyx_k_abc), 0, 0, 1, 1},
  {&__pyx_n_s_abstractmethod, __pyx_k_abstractmethod, sizeof(__pyx_k_abstractmethod), 0, 0, 1, 1},
  {&__pyx_n_s_act, __pyx_k_act, sizeof(__pyx_k_act), 0, 0, 1, 1},
  {&__pyx_n_u_act, __pyx_k_act, sizeof(__pyx_k_act), 0, 1, 0, 1},
  {&__pyx_n_s_action, __pyx_k_action, sizeof(__pyx_k_action), 0, 0, 1, 1},
  {&__pyx_kp_u_active_contacts_efc_pos_should_b, __pyx_k_active_contacts_efc_pos_should_b, sizeof(__pyx_k_active_contacts_efc_pos_should_b), 0, 1, 0, 0},
  {&__pyx_n_s_add_marker_to_scene, __pyx_k_add_marker_to_scene, sizeof(__pyx_k_add_marker_to_scene), 0, 0, 1, 1},
  {&__pyx_n_s_add_mujoco_bin_to_dyld_library, __pyx_k_add_mujoco_bin_to_dyld_library, sizeof(__pyx_k_add_mujoco_bin_to_dyld_library), 0, 0, 1, 1},
  {&__pyx_n_s_add_render_context, __pyx_k_add_render_context, sizeof(__pyx_k_add_render_context), 0, 0, 1, 1},
  {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1},
  {&__pyx_n_s_angle, __pyx_k_angle, sizeof(__pyx_k_angle), 0, 0, 1, 1},
  {&__pyx_n_s_answer, __pyx_k_answer, sizeof(__pyx_k_answer), 0, 0, 1, 1},
  {&__pyx_n_s_appendChild, __pyx_k_appendChild, sizeof(__pyx_k_appendChild), 0, 0, 1, 1},
  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
  {&__pyx_n_s_arr, __pyx_k_arr, sizeof(__pyx_k_arr), 0, 0, 1, 1},
  {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
  {&__pyx_n_s_array_equal, __pyx_k_array_equal, sizeof(__pyx_k_array_equal), 0, 0, 1, 1},
  {&__pyx_n_s_asarray, __pyx_k_asarray, sizeof(__pyx_k_asarray), 0, 0, 1, 1},
  {&__pyx_n_s_aspectratio, __pyx_k_aspectratio, sizeof(__pyx_k_aspectratio), 0, 0, 1, 1},
  {&__pyx_n_s_axis, __pyx_k_axis, sizeof(__pyx_k_axis), 0, 0, 1, 1},
  {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1},
  {&__pyx_n_s_b0, __pyx_k_b0, sizeof(__pyx_k_b0), 0, 0, 1, 1},
  {&__pyx_n_s_b1, __pyx_k_b1, sizeof(__pyx_k_b1), 0, 0, 1, 1},
  {&__pyx_n_s_b2, __pyx_k_b2, sizeof(__pyx_k_b2), 0, 0, 1, 1},
  {&__pyx_kp_u_bad_userdata_names, __pyx_k_bad_userdata_names, sizeof(__pyx_k_bad_userdata_names), 0, 1, 0, 0},
  {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1},
  {&__pyx_n_s_batch_offset, __pyx_k_batch_offset, sizeof(__pyx_k_batch_offset), 0, 0, 1, 1},
  {&__pyx_kp_u_batch_offset_out_of_range, __pyx_k_batch_offset_out_of_range, sizeof(__pyx_k_batch_offset_out_of_range), 0, 1, 0, 0},
  {&__pyx_n_s_batch_size, __pyx_k_batch_size, sizeof(__pyx_k_batch_size), 0, 0, 1, 1},
  {&__pyx_n_s_batch_size_2, __pyx_k_batch_size_2, sizeof(__pyx_k_batch_size_2), 0, 0, 1, 1},
  {&__pyx_n_u_bin, __pyx_k_bin, sizeof(__pyx_k_bin), 0, 1, 0, 1},
  {&__pyx_n_s_bin_path, __pyx_k_bin_path, sizeof(__pyx_k_bin_path), 0, 0, 1, 1},
  {&__pyx_n_s_body, __pyx_k_body, sizeof(__pyx_k_body), 0, 0, 1, 1},
  {&__pyx_n_s_body_jacp, __pyx_k_body_jacp, sizeof(__pyx_k_body_jacp), 0, 0, 1, 1},
  {&__pyx_n_s_body_jacr, __pyx_k_body_jacr, sizeof(__pyx_k_body_jacr), 0, 0, 1, 1},
  {&__pyx_n_s_body_mocapid, __pyx_k_body_mocapid, sizeof(__pyx_k_body_mocapid), 0, 0, 1, 1},
  {&__pyx_n_s_body_name2id, __pyx_k_body_name2id, sizeof(__pyx_k_body_name2id), 0, 0, 1, 1},
  {&__pyx_kp_u_body_xmat_should_be_used_instead, __pyx_k_body_xmat_should_be_used_instead, sizeof(__pyx_k_body_xmat_should_be_used_instead), 0, 1, 0, 0},
  {&__pyx_kp_u_body_xpos_should_be_used_instead, __pyx_k_body_xpos_should_be_used_instead, sizeof(__pyx_k_body_xpos_should_be_used_instead), 0, 1, 0, 0},
  {&__pyx_kp_u_body_xquat_should_be_used_instea, __pyx_k_body_xquat_should_be_used_instea, sizeof(__pyx_k_body_xquat_should_be_used_instea), 0, 1, 0, 0},
  {&__pyx_n_s_bottom, __pyx_k_bottom, sizeof(__pyx_k_bottom), 0, 0, 1, 1},
  {&__pyx_n_s_buffer, __pyx_k_buffer, sizeof(__pyx_k_buffer), 0, 0, 1, 1},
  {&__pyx_n_s_buffer_sz, __pyx_k_buffer_sz, sizeof(__pyx_k_buffer_sz), 0, 0, 1, 1},
  {&__pyx_n_s_build_callback_fn, __pyx_k_build_callback_fn, sizeof(__pyx_k_build_callback_fn), 0, 0, 1, 1},
  {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1},
  {&__pyx_n_u_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 1, 0, 1},
  {&__pyx_n_s_c1, __pyx_k_c1, sizeof(__pyx_k_c1), 0, 0, 1, 1},
  {&__pyx_n_s_c2, __pyx_k_c2, sizeof(__pyx_k_c2), 0, 0, 1, 1},
  {&__pyx_n_s_cam, __pyx_k_cam, sizeof(__pyx_k_cam), 0, 0, 1, 1},
  {&__pyx_n_s_camera_id, __pyx_k_camera_id, sizeof(__pyx_k_camera_id), 0, 0, 1, 1},
  {&__pyx_n_s_camera_name, __pyx_k_camera_name, sizeof(__pyx_k_camera_name), 0, 0, 1, 1},
  {&__pyx_n_s_camera_name2id, __pyx_k_camera_name2id, sizeof(__pyx_k_camera_name2id), 0, 0, 1, 1},
  {&__pyx_n_s_catmask, __pyx_k_catmask, sizeof(__pyx_k_catmask), 0, 0, 1, 1},
  {&__pyx_n_s_childNodes, __pyx_k_childNodes, sizeof(__pyx_k_childNodes), 0, 0, 1, 1},
  {&__pyx_n_s_cinit, __pyx_k_cinit, sizeof(__pyx_k_cinit), 0, 0, 1, 1},
  {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
  {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
  {&__pyx_n_s_con, __pyx_k_con, sizeof(__pyx_k_con), 0, 0, 1, 1},
  {&__pyx_n_s_concatenate, __pyx_k_concatenate, sizeof(__pyx_k_concatenate), 0, 0, 1, 1},
  {&__pyx_n_s_const, __pyx_k_const, sizeof(__pyx_k_const), 0, 0, 1, 1},
  {&__pyx_kp_s_contiguous_and_direct, __pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 0, 1, 0},
  {&__pyx_kp_s_contiguous_and_indirect, __pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 0, 1, 0},
  {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
  {&__pyx_n_s_cost, __pyx_k_cost, sizeof(__pyx_k_cost), 0, 0, 1, 1},
  {&__pyx_n_s_createElement, __pyx_k_createElement, sizeof(__pyx_k_createElement), 0, 0, 1, 1},
  {&__pyx_n_s_create_window, __pyx_k_create_window, sizeof(__pyx_k_create_window), 0, 0, 1, 1},
  {&__pyx_n_s_create_window_2, __pyx_k_create_window_2, sizeof(__pyx_k_create_window_2), 0, 0, 1, 1},
  {&__pyx_n_s_ctrl, __pyx_k_ctrl, sizeof(__pyx_k_ctrl), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_buffers_are_mapped, __pyx_k_cuda_buffers_are_mapped, sizeof(__pyx_k_cuda_buffers_are_mapped), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_context, __pyx_k_cuda_context, sizeof(__pyx_k_cuda_context), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_depth_buf_size, __pyx_k_cuda_depth_buf_size, sizeof(__pyx_k_cuda_depth_buf_size), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_depth_buffer_pointer, __pyx_k_cuda_depth_buffer_pointer, sizeof(__pyx_k_cuda_depth_buffer_pointer), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_depth_mapping, __pyx_k_cuda_depth_mapping, sizeof(__pyx_k_cuda_depth_mapping), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_depth_pbo, __pyx_k_cuda_depth_pbo, sizeof(__pyx_k_cuda_depth_pbo), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_depth_ptr, __pyx_k_cuda_depth_ptr, sizeof(__pyx_k_cuda_depth_ptr), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_rgb_buf_size, __pyx_k_cuda_rgb_buf_size, sizeof(__pyx_k_cuda_rgb_buf_size), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_rgb_buffer_pointer, __pyx_k_cuda_rgb_buffer_pointer, sizeof(__pyx_k_cuda_rgb_buffer_pointer), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_rgb_mapping, __pyx_k_cuda_rgb_mapping, sizeof(__pyx_k_cuda_rgb_mapping), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_rgb_pbo, __pyx_k_cuda_rgb_pbo, sizeof(__pyx_k_cuda_rgb_pbo), 0, 0, 1, 1},
  {&__pyx_n_s_cuda_rgb_ptr, __pyx_k_cuda_rgb_ptr, sizeof(__pyx_k_cuda_rgb_ptr), 0, 0, 1, 1},
  {&__pyx_n_s_current_batch_offset, __pyx_k_current_batch_offset, sizeof(__pyx_k_current_batch_offset), 0, 0, 1, 1},
  {&__pyx_n_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 1},
  {&__pyx_n_u_darwin, __pyx_k_darwin, sizeof(__pyx_k_darwin), 0, 1, 0, 1},
  {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
  {&__pyx_n_s_deepcopy, __pyx_k_deepcopy, sizeof(__pyx_k_deepcopy), 0, 0, 1, 1},
  {&__pyx_n_s_del, __pyx_k_del, sizeof(__pyx_k_del), 0, 0, 1, 1},
  {&__pyx_n_s_delete, __pyx_k_delete, sizeof(__pyx_k_delete), 0, 0, 1, 1},
  {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1},
  {&__pyx_n_s_depth_2, __pyx_k_depth_2, sizeof(__pyx_k_depth_2), 0, 0, 1, 1},
  {&__pyx_n_s_depth_arr, __pyx_k_depth_arr, sizeof(__pyx_k_depth_arr), 0, 0, 1, 1},
  {&__pyx_n_s_depth_view, __pyx_k_depth_view, sizeof(__pyx_k_depth_view), 0, 0, 1, 1},
  {&__pyx_n_s_description, __pyx_k_description, sizeof(__pyx_k_description), 0, 0, 1, 1},
  {&__pyx_n_s_dest, __pyx_k_dest, sizeof(__pyx_k_dest), 0, 0, 1, 1},
  {&__pyx_n_s_detach, __pyx_k_detach, sizeof(__pyx_k_detach), 0, 0, 1, 1},
  {&__pyx_n_s_device, __pyx_k_device, sizeof(__pyx_k_device), 0, 0, 1, 1},
  {&__pyx_n_s_device_id, __pyx_k_device_id, sizeof(__pyx_k_device_id), 0, 0, 1, 1},
  {&__pyx_n_s_device_id_2, __pyx_k_device_id_2, sizeof(__pyx_k_device_id_2), 0, 0, 1, 1},
  {&__pyx_n_s_device_ptr_and_size, __pyx_k_device_ptr_and_size, sizeof(__pyx_k_device_ptr_and_size), 0, 0, 1, 1},
  {&__pyx_n_s_diag, __pyx_k_diag, sizeof(__pyx_k_diag), 0, 0, 1, 1},
  {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
  {&__pyx_n_s_dim, __pyx_k_dim, sizeof(__pyx_k_dim), 0, 0, 1, 1},
  {&__pyx_n_s_directory, __pyx_k_directory, sizeof(__pyx_k_directory), 0, 0, 1, 1},
  {&__pyx_n_s_discover_mujoco, __pyx_k_discover_mujoco, sizeof(__pyx_k_discover_mujoco), 0, 0, 1, 1},
  {&__pyx_n_s_distance, __pyx_k_distance, sizeof(__pyx_k_distance), 0, 0, 1, 1},
  {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
  {&__pyx_n_s_dot, __pyx_k_dot, sizeof(__pyx_k_dot), 0, 0, 1, 1},
  {&__pyx_n_s_drv, __pyx_k_drv, sizeof(__pyx_k_drv), 0, 0, 1, 1},
  {&__pyx_n_s_dst, __pyx_k_dst, sizeof(__pyx_k_dst), 0, 0, 1, 1},
  {&__pyx_n_s_dt, __pyx_k_dt, sizeof(__pyx_k_dt), 0, 0, 1, 1},
  {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1},
  {&__pyx_n_s_dtype_is_object, __pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 0, 1, 1},
  {&__pyx_n_s_eigval, __pyx_k_eigval, sizeof(__pyx_k_eigval), 0, 0, 1, 1},
  {&__pyx_n_s_eigvec, __pyx_k_eigvec, sizeof(__pyx_k_eigvec), 0, 0, 1, 1},
  {&__pyx_n_s_empty, __pyx_k_empty, sizeof(__pyx_k_empty), 0, 0, 1, 1},
  {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
  {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
  {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
  {&__pyx_n_s_environ, __pyx_k_environ, sizeof(__pyx_k_environ), 0, 0, 1, 1},
  {&__pyx_n_s_eq, __pyx_k_eq, sizeof(__pyx_k_eq), 0, 0, 1, 1},
  {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
  {&__pyx_n_s_error_code, __pyx_k_error_code, sizeof(__pyx_k_error_code), 0, 0, 1, 1},
  {&__pyx_n_s_error_sz, __pyx_k_error_sz, sizeof(__pyx_k_error_sz), 0, 0, 1, 1},
  {&__pyx_n_s_errstr, __pyx_k_errstr, sizeof(__pyx_k_errstr), 0, 0, 1, 1},
  {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
  {&__pyx_n_s_extent, __pyx_k_extent, sizeof(__pyx_k_extent), 0, 0, 1, 1},
  {&__pyx_n_s_eye, __pyx_k_eye, sizeof(__pyx_k_eye), 0, 0, 1, 1},
  {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1},
  {&__pyx_n_s_fig, __pyx_k_fig, sizeof(__pyx_k_fig), 0, 0, 1, 1},
  {&__pyx_n_s_file, __pyx_k_file, sizeof(__pyx_k_file), 0, 0, 1, 1},
  {&__pyx_n_s_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 0, 0, 1, 1},
  {&__pyx_n_s_filesize, __pyx_k_filesize, sizeof(__pyx_k_filesize), 0, 0, 1, 1},
  {&__pyx_n_s_fixedcamid, __pyx_k_fixedcamid, sizeof(__pyx_k_fixedcamid), 0, 0, 1, 1},
  {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
  {&__pyx_n_s_flat_udd_state, __pyx_k_flat_udd_state, sizeof(__pyx_k_flat_udd_state), 0, 0, 1, 1},
  {&__pyx_n_s_flatten, __pyx_k_flatten, sizeof(__pyx_k_flatten), 0, 0, 1, 1},
  {&__pyx_n_s_flatten_dict, __pyx_k_flatten_dict, sizeof(__pyx_k_flatten_dict), 0, 0, 1, 1},
  {&__pyx_n_s_flg_acc, __pyx_k_flg_acc, sizeof(__pyx_k_flg_acc), 0, 0, 1, 1},
  {&__pyx_n_s_flg_actrange, __pyx_k_flg_actrange, sizeof(__pyx_k_flg_actrange), 0, 0, 1, 1},
  {&__pyx_n_s_flg_color, __pyx_k_flg_color, sizeof(__pyx_k_flg_color), 0, 0, 1, 1},
  {&__pyx_n_s_flg_coneHessian, __pyx_k_flg_coneHessian, sizeof(__pyx_k_flg_coneHessian), 0, 0, 1, 1},
  {&__pyx_n_s_flg_depth, __pyx_k_flg_depth, sizeof(__pyx_k_flg_depth), 0, 0, 1, 1},
  {&__pyx_n_s_flg_force, __pyx_k_flg_force, sizeof(__pyx_k_flg_force), 0, 0, 1, 1},
  {&__pyx_n_s_flg_html, __pyx_k_flg_html, sizeof(__pyx_k_flg_html), 0, 0, 1, 1},
  {&__pyx_n_s_flg_local, __pyx_k_flg_local, sizeof(__pyx_k_flg_local), 0, 0, 1, 1},
  {&__pyx_n_s_flg_pad, __pyx_k_flg_pad, sizeof(__pyx_k_flg_pad), 0, 0, 1, 1},
  {&__pyx_n_s_flg_paused, __pyx_k_flg_paused, sizeof(__pyx_k_flg_paused), 0, 0, 1, 1},
  {&__pyx_n_s_flg_plus, __pyx_k_flg_plus, sizeof(__pyx_k_flg_plus), 0, 0, 1, 1},
  {&__pyx_n_s_float32, __pyx_k_float32, sizeof(__pyx_k_float32), 0, 0, 1, 1},
  {&__pyx_n_s_flush, __pyx_k_flush, sizeof(__pyx_k_flush), 0, 0, 1, 1},
  {&__pyx_n_s_font, __pyx_k_font, sizeof(__pyx_k_font), 0, 0, 1, 1},
  {&__pyx_n_s_fontscale, __pyx_k_fontscale, sizeof(__pyx_k_fontscale), 0, 0, 1, 1},
  {&__pyx_n_s_force, __pyx_k_force, sizeof(__pyx_k_force), 0, 0, 1, 1},
  {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
  {&__pyx_n_s_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 0, 1, 1},
  {&__pyx_n_u_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 0, 1},
  {&__pyx_n_s_forward, __pyx_k_forward, sizeof(__pyx_k_forward), 0, 0, 1, 1},
  {&__pyx_n_s_fp, __pyx_k_fp, sizeof(__pyx_k_fp), 0, 0, 1, 1},
  {&__pyx_n_s_framebuffer, __pyx_k_framebuffer, sizeof(__pyx_k_framebuffer), 0, 0, 1, 1},
  {&__pyx_n_s_from_device, __pyx_k_from_device, sizeof(__pyx_k_from_device), 0, 0, 1, 1},
  {&__pyx_n_s_from_flattened, __pyx_k_from_flattened, sizeof(__pyx_k_from_flattened), 0, 0, 1, 1},
  {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
  {&__pyx_n_s_geom, __pyx_k_geom, sizeof(__pyx_k_geom), 0, 0, 1, 1},
  {&__pyx_n_s_geom_jacp, __pyx_k_geom_jacp, sizeof(__pyx_k_geom_jacp), 0, 0, 1, 1},
  {&__pyx_n_s_geom_jacr, __pyx_k_geom_jacr, sizeof(__pyx_k_geom_jacr), 0, 0, 1, 1},
  {&__pyx_n_s_geom_name2id, __pyx_k_geom_name2id, sizeof(__pyx_k_geom_name2id), 0, 0, 1, 1},
  {&__pyx_n_s_geom_xpos, __pyx_k_geom_xpos, sizeof(__pyx_k_geom_xpos), 0, 0, 1, 1},
  {&__pyx_n_s_geomid, __pyx_k_geomid, sizeof(__pyx_k_geomid), 0, 0, 1, 1},
  {&__pyx_n_s_geomtype, __pyx_k_geomtype, sizeof(__pyx_k_geomtype), 0, 0, 1, 1},
  {&__pyx_n_s_getElementsByTagName, __pyx_k_getElementsByTagName, sizeof(__pyx_k_getElementsByTagName), 0, 0, 1, 1},
  {&__pyx_n_s_get_body_jacp, __pyx_k_get_body_jacp, sizeof(__pyx_k_get_body_jacp), 0, 0, 1, 1},
  {&__pyx_n_s_get_body_jacr, __pyx_k_get_body_jacr, sizeof(__pyx_k_get_body_jacr), 0, 0, 1, 1},
  {&__pyx_kp_u_get_body_ximat_should_be_used_in, __pyx_k_get_body_ximat_should_be_used_in, sizeof(__pyx_k_get_body_ximat_should_be_used_in), 0, 1, 0, 0},
  {&__pyx_kp_u_get_body_xipos_should_be_used_in, __pyx_k_get_body_xipos_should_be_used_in, sizeof(__pyx_k_get_body_xipos_should_be_used_in), 0, 1, 0, 0},
  {&__pyx_kp_u_get_body_xmat_should_be_used_ins, __pyx_k_get_body_xmat_should_be_used_ins, sizeof(__pyx_k_get_body_xmat_should_be_used_ins), 0, 1, 0, 0},
  {&__pyx_kp_u_get_body_xpos_should_be_used_ins, __pyx_k_get_body_xpos_should_be_used_ins, sizeof(__pyx_k_get_body_xpos_should_be_used_ins), 0, 1, 0, 0},
  {&__pyx_kp_u_get_body_xquat_should_be_used_in, __pyx_k_get_body_xquat_should_be_used_in, sizeof(__pyx_k_get_body_xquat_should_be_used_in), 0, 1, 0, 0},
  {&__pyx_n_s_get_buffer_size, __pyx_k_get_buffer_size, sizeof(__pyx_k_get_buffer_size), 0, 0, 1, 1},
  {&__pyx_kp_u_get_camera_xmat_should_be_used_i, __pyx_k_get_camera_xmat_should_be_used_i, sizeof(__pyx_k_get_camera_xmat_should_be_used_i), 0, 1, 0, 0},
  {&__pyx_kp_u_get_camera_xpos_should_be_used_i, __pyx_k_get_camera_xpos_should_be_used_i, sizeof(__pyx_k_get_camera_xpos_should_be_used_i), 0, 1, 0, 0},
  {&__pyx_n_s_get_framebuffer_size, __pyx_k_get_framebuffer_size, sizeof(__pyx_k_get_framebuffer_size), 0, 0, 1, 1},
  {&__pyx_n_s_get_geom_jacp, __pyx_k_get_geom_jacp, sizeof(__pyx_k_get_geom_jacp), 0, 0, 1, 1},
  {&__pyx_n_s_get_geom_jacr, __pyx_k_get_geom_jacr, sizeof(__pyx_k_get_geom_jacr), 0, 0, 1, 1},
  {&__pyx_n_s_get_joint_qpos_addr, __pyx_k_get_joint_qpos_addr, sizeof(__pyx_k_get_joint_qpos_addr), 0, 0, 1, 1},
  {&__pyx_n_s_get_joint_qvel_addr, __pyx_k_get_joint_qvel_addr, sizeof(__pyx_k_get_joint_qvel_addr), 0, 0, 1, 1},
  {&__pyx_kp_u_get_joint_xanchor_should_be_used, __pyx_k_get_joint_xanchor_should_be_used, sizeof(__pyx_k_get_joint_xanchor_should_be_used), 0, 1, 0, 0},
  {&__pyx_kp_u_get_joint_xaxis_should_be_used_i, __pyx_k_get_joint_xaxis_should_be_used_i, sizeof(__pyx_k_get_joint_xaxis_should_be_used_i), 0, 1, 0, 0},
  {&__pyx_n_s_get_mjb, __pyx_k_get_mjb, sizeof(__pyx_k_get_mjb), 0, 0, 1, 1},
  {&__pyx_n_s_get_primary_monitor, __pyx_k_get_primary_monitor, sizeof(__pyx_k_get_primary_monitor), 0, 0, 1, 1},
  {&__pyx_kp_u_get_sensor_should_be_used_instea, __pyx_k_get_sensor_should_be_used_instea, sizeof(__pyx_k_get_sensor_should_be_used_instea), 0, 1, 0, 0},
  {&__pyx_n_s_get_site_jacp, __pyx_k_get_site_jacp, sizeof(__pyx_k_get_site_jacp), 0, 0, 1, 1},
  {&__pyx_n_s_get_site_jacr, __pyx_k_get_site_jacr, sizeof(__pyx_k_get_site_jacr), 0, 0, 1, 1},
  {&__pyx_n_s_get_video_mode, __pyx_k_get_video_mode, sizeof(__pyx_k_get_video_mode), 0, 0, 1, 1},
  {&__pyx_n_s_get_warning_callback, __pyx_k_get_warning_callback, sizeof(__pyx_k_get_warning_callback), 0, 0, 1, 1},
  {&__pyx_n_s_get_xml, __pyx_k_get_xml, sizeof(__pyx_k_get_xml), 0, 0, 1, 1},
  {&__pyx_n_s_getenv, __pyx_k_getenv, sizeof(__pyx_k_getenv), 0, 0, 1, 1},
  {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
  {&__pyx_n_s_glfw, __pyx_k_glfw, sizeof(__pyx_k_glfw), 0, 0, 1, 1},
  {&__pyx_n_u_glfw, __pyx_k_glfw, sizeof(__pyx_k_glfw), 0, 1, 0, 1},
  {&__pyx_n_s_glfw_error_callback, __pyx_k_glfw_error_callback, sizeof(__pyx_k_glfw_error_callback), 0, 0, 1, 1},
  {&__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 0, 1, 0},
  {&__pyx_n_s_gridpos, __pyx_k_gridpos, sizeof(__pyx_k_gridpos), 0, 0, 1, 1},
  {&__pyx_n_s_headpos, __pyx_k_headpos, sizeof(__pyx_k_headpos), 0, 0, 1, 1},
  {&__pyx_n_s_height, __pyx_k_height, sizeof(__pyx_k_height), 0, 0, 1, 1},
  {&__pyx_n_s_height_2, __pyx_k_height_2, sizeof(__pyx_k_height_2), 0, 0, 1, 1},
  {&__pyx_n_s_hfieldid, __pyx_k_hfieldid, sizeof(__pyx_k_hfieldid), 0, 0, 1, 1},
  {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
  {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
  {&__pyx_n_s_idx, __pyx_k_idx, sizeof(__pyx_k_idx), 0, 0, 1, 1},
  {&__pyx_n_s_idx_act, __pyx_k_idx_act, sizeof(__pyx_k_idx_act), 0, 0, 1, 1},
  {&__pyx_n_s_idx_qpos, __pyx_k_idx_qpos, sizeof(__pyx_k_idx_qpos), 0, 0, 1, 1},
  {&__pyx_n_s_idx_qvel, __pyx_k_idx_qvel, sizeof(__pyx_k_idx_qvel), 0, 0, 1, 1},
  {&__pyx_n_s_idx_time, __pyx_k_idx_time, sizeof(__pyx_k_idx_time), 0, 0, 1, 1},
  {&__pyx_n_s_idx_udd, __pyx_k_idx_udd, sizeof(__pyx_k_idx_udd), 0, 0, 1, 1},
  {&__pyx_n_s_image, __pyx_k_image, sizeof(__pyx_k_image), 0, 0, 1, 1},
  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
  {&__pyx_n_s_indent, __pyx_k_indent, sizeof(__pyx_k_indent), 0, 0, 1, 1},
  {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
  {&__pyx_n_u_inertial, __pyx_k_inertial, sizeof(__pyx_k_inertial), 0, 1, 0, 1},
  {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1},
  {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
  {&__pyx_n_s_init_2, __pyx_k_init_2, sizeof(__pyx_k_init_2), 0, 0, 1, 1},
  {&__pyx_n_s_init_camera, __pyx_k_init_camera, sizeof(__pyx_k_init_camera), 0, 0, 1, 1},
  {&__pyx_n_s_init_cuda, __pyx_k_init_cuda, sizeof(__pyx_k_init_cuda), 0, 0, 1, 1},
  {&__pyx_n_s_init_glfw, __pyx_k_init_glfw, sizeof(__pyx_k_init_glfw), 0, 0, 1, 1},
  {&__pyx_n_s_init_height, __pyx_k_init_height, sizeof(__pyx_k_init_height), 0, 0, 1, 1},
  {&__pyx_n_s_init_width, __pyx_k_init_width, sizeof(__pyx_k_init_width), 0, 0, 1, 1},
  {&__pyx_kp_u_insufficient_userdata, __pyx_k_insufficient_userdata, sizeof(__pyx_k_insufficient_userdata), 0, 1, 0, 0},
  {&__pyx_n_s_int32, __pyx_k_int32, sizeof(__pyx_k_int32), 0, 0, 1, 1},
  {&__pyx_n_s_int64, __pyx_k_int64, sizeof(__pyx_k_int64), 0, 0, 1, 1},
  {&__pyx_kp_u_invalid, __pyx_k_invalid, sizeof(__pyx_k_invalid), 0, 1, 0, 0},
  {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
  {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1},
  {&__pyx_kp_s_itemsize_0_for_cython_array, __pyx_k_itemsize_0_for_cython_array, sizeof(__pyx_k_itemsize_0_for_cython_array), 0, 0, 1, 0},
  {&__pyx_n_s_jac, __pyx_k_jac, sizeof(__pyx_k_jac), 0, 0, 1, 1},
  {&__pyx_n_s_jacAxis, __pyx_k_jacAxis, sizeof(__pyx_k_jacAxis), 0, 0, 1, 1},
  {&__pyx_n_s_jacPoint, __pyx_k_jacPoint, sizeof(__pyx_k_jacPoint), 0, 0, 1, 1},
  {&__pyx_n_s_jacp, __pyx_k_jacp, sizeof(__pyx_k_jacp), 0, 0, 1, 1},
  {&__pyx_n_s_jacr, __pyx_k_jacr, sizeof(__pyx_k_jacr), 0, 0, 1, 1},
  {&__pyx_n_s_jar, __pyx_k_jar, sizeof(__pyx_k_jar), 0, 0, 1, 1},
  {&__pyx_n_s_jnt_dofadr, __pyx_k_jnt_dofadr, sizeof(__pyx_k_jnt_dofadr), 0, 0, 1, 1},
  {&__pyx_n_s_jnt_qposadr, __pyx_k_jnt_qposadr, sizeof(__pyx_k_jnt_qposadr), 0, 0, 1, 1},
  {&__pyx_n_s_jnt_type, __pyx_k_jnt_type, sizeof(__pyx_k_jnt_type), 0, 0, 1, 1},
  {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1},
  {&__pyx_n_s_joint_name2id, __pyx_k_joint_name2id, sizeof(__pyx_k_joint_name2id), 0, 0, 1, 1},
  {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
  {&__pyx_n_s_keep_inertials, __pyx_k_keep_inertials, sizeof(__pyx_k_keep_inertials), 0, 0, 1, 1},
  {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1},
  {&__pyx_n_u_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 1, 0, 1},
  {&__pyx_n_u_keyframe, __pyx_k_keyframe, sizeof(__pyx_k_keyframe), 0, 1, 0, 1},
  {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1},
  {&__pyx_n_u_label, __pyx_k_label, sizeof(__pyx_k_label), 0, 1, 0, 1},
  {&__pyx_n_s_left, __pyx_k_left, sizeof(__pyx_k_left), 0, 0, 1, 1},
  {&__pyx_n_s_len, __pyx_k_len, sizeof(__pyx_k_len), 0, 0, 1, 1},
  {&__pyx_n_s_len0, __pyx_k_len0, sizeof(__pyx_k_len0), 0, 0, 1, 1},
  {&__pyx_n_s_light_name2id, __pyx_k_light_name2id, sizeof(__pyx_k_light_name2id), 0, 0, 1, 1},
  {&__pyx_n_s_list, __pyx_k_list, sizeof(__pyx_k_list), 0, 0, 1, 1},
  {&__pyx_n_s_lmax, __pyx_k_lmax, sizeof(__pyx_k_lmax), 0, 0, 1, 1},
  {&__pyx_n_s_lmin, __pyx_k_lmin, sizeof(__pyx_k_lmin), 0, 0, 1, 1},
  {&__pyx_n_s_load_model_from_mjb, __pyx_k_load_model_from_mjb, sizeof(__pyx_k_load_model_from_mjb), 0, 0, 1, 1},
  {&__pyx_n_s_load_model_from_path, __pyx_k_load_model_from_path, sizeof(__pyx_k_load_model_from_path), 0, 0, 1, 1},
  {&__pyx_n_s_load_model_from_xml, __pyx_k_load_model_from_xml, sizeof(__pyx_k_load_model_from_xml), 0, 0, 1, 1},
  {&__pyx_n_s_logging, __pyx_k_logging, sizeof(__pyx_k_logging), 0, 0, 1, 1},
  {&__pyx_n_s_lookat, __pyx_k_lookat, sizeof(__pyx_k_lookat), 0, 0, 1, 1},
  {&__pyx_n_s_m, __pyx_k_m, sizeof(__pyx_k_m), 0, 0, 1, 1},
  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
  {&__pyx_n_s_make_context, __pyx_k_make_context, sizeof(__pyx_k_make_context), 0, 0, 1, 1},
  {&__pyx_n_s_make_context_current, __pyx_k_make_context_current, sizeof(__pyx_k_make_context_current), 0, 0, 1, 1},
  {&__pyx_n_s_map, __pyx_k_map, sizeof(__pyx_k_map), 0, 0, 1, 1},
  {&__pyx_n_s_mat, __pyx_k_mat, sizeof(__pyx_k_mat), 0, 0, 1, 1},
  {&__pyx_n_s_mat1, __pyx_k_mat1, sizeof(__pyx_k_mat1), 0, 0, 1, 1},
  {&__pyx_n_s_mat2, __pyx_k_mat2, sizeof(__pyx_k_mat2), 0, 0, 1, 1},
  {&__pyx_n_s_maxgeom, __pyx_k_maxgeom, sizeof(__pyx_k_maxgeom), 0, 0, 1, 1},
  {&__pyx_n_s_median, __pyx_k_median, sizeof(__pyx_k_median), 0, 0, 1, 1},
  {&__pyx_n_s_memview, __pyx_k_memview, sizeof(__pyx_k_memview), 0, 0, 1, 1},
  {&__pyx_n_s_meshid, __pyx_k_meshid, sizeof(__pyx_k_meshid), 0, 0, 1, 1},
  {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
  {&__pyx_n_s_minidom, __pyx_k_minidom, sizeof(__pyx_k_minidom), 0, 0, 1, 1},
  {&__pyx_n_s_mj_Euler, __pyx_k_mj_Euler, sizeof(__pyx_k_mj_Euler), 0, 0, 1, 1},
  {&__pyx_n_s_mj_RungeKutta, __pyx_k_mj_RungeKutta, sizeof(__pyx_k_mj_RungeKutta), 0, 0, 1, 1},
  {&__pyx_n_s_mj_activate, __pyx_k_mj_activate, sizeof(__pyx_k_mj_activate), 0, 0, 1, 1},
  {&__pyx_n_s_mj_addContact, __pyx_k_mj_addContact, sizeof(__pyx_k_mj_addContact), 0, 0, 1, 1},
  {&__pyx_n_s_mj_addFileVFS, __pyx_k_mj_addFileVFS, sizeof(__pyx_k_mj_addFileVFS), 0, 0, 1, 1},
  {&__pyx_n_s_mj_applyFT, __pyx_k_mj_applyFT, sizeof(__pyx_k_mj_applyFT), 0, 0, 1, 1},
  {&__pyx_n_s_mj_camlight, __pyx_k_mj_camlight, sizeof(__pyx_k_mj_camlight), 0, 0, 1, 1},
  {&__pyx_n_s_mj_certAnswer, __pyx_k_mj_certAnswer, sizeof(__pyx_k_mj_certAnswer), 0, 0, 1, 1},
  {&__pyx_n_s_mj_certCheck, __pyx_k_mj_certCheck, sizeof(__pyx_k_mj_certCheck), 0, 0, 1, 1},
  {&__pyx_n_s_mj_certQuestion, __pyx_k_mj_certQuestion, sizeof(__pyx_k_mj_certQuestion), 0, 0, 1, 1},
  {&__pyx_n_s_mj_checkAcc, __pyx_k_mj_checkAcc, sizeof(__pyx_k_mj_checkAcc), 0, 0, 1, 1},
  {&__pyx_n_s_mj_checkPos, __pyx_k_mj_checkPos, sizeof(__pyx_k_mj_checkPos), 0, 0, 1, 1},
  {&__pyx_n_s_mj_checkVel, __pyx_k_mj_checkVel, sizeof(__pyx_k_mj_checkVel), 0, 0, 1, 1},
  {&__pyx_n_s_mj_collision, __pyx_k_mj_collision, sizeof(__pyx_k_mj_collision), 0, 0, 1, 1},
  {&__pyx_n_s_mj_comPos, __pyx_k_mj_comPos, sizeof(__pyx_k_mj_comPos), 0, 0, 1, 1},
  {&__pyx_n_s_mj_comVel, __pyx_k_mj_comVel, sizeof(__pyx_k_mj_comVel), 0, 0, 1, 1},
  {&__pyx_n_s_mj_compareFwdInv, __pyx_k_mj_compareFwdInv, sizeof(__pyx_k_mj_compareFwdInv), 0, 0, 1, 1},
  {&__pyx_n_s_mj_constraintUpdate, __pyx_k_mj_constraintUpdate, sizeof(__pyx_k_mj_constraintUpdate), 0, 0, 1, 1},
  {&__pyx_n_s_mj_contactForce, __pyx_k_mj_contactForce, sizeof(__pyx_k_mj_contactForce), 0, 0, 1, 1},
  {&__pyx_n_s_mj_copyModel, __pyx_k_mj_copyModel, sizeof(__pyx_k_mj_copyModel), 0, 0, 1, 1},
  {&__pyx_n_s_mj_crb, __pyx_k_mj_crb, sizeof(__pyx_k_mj_crb), 0, 0, 1, 1},
  {&__pyx_n_s_mj_deactivate, __pyx_k_mj_deactivate, sizeof(__pyx_k_mj_deactivate), 0, 0, 1, 1},
  {&__pyx_n_s_mj_defaultOption, __pyx_k_mj_defaultOption, sizeof(__pyx_k_mj_defaultOption), 0, 0, 1, 1},
  {&__pyx_n_s_mj_defaultSolRefImp, __pyx_k_mj_defaultSolRefImp, sizeof(__pyx_k_mj_defaultSolRefImp), 0, 0, 1, 1},
  {&__pyx_n_s_mj_defaultVFS, __pyx_k_mj_defaultVFS, sizeof(__pyx_k_mj_defaultVFS), 0, 0, 1, 1},
  {&__pyx_n_s_mj_defaultVisual, __pyx_k_mj_defaultVisual, sizeof(__pyx_k_mj_defaultVisual), 0, 0, 1, 1},
  {&__pyx_n_s_mj_deleteData, __pyx_k_mj_deleteData, sizeof(__pyx_k_mj_deleteData), 0, 0, 1, 1},
  {&__pyx_n_s_mj_deleteFileVFS, __pyx_k_mj_deleteFileVFS, sizeof(__pyx_k_mj_deleteFileVFS), 0, 0, 1, 1},
  {&__pyx_n_s_mj_deleteModel, __pyx_k_mj_deleteModel, sizeof(__pyx_k_mj_deleteModel), 0, 0, 1, 1},
  {&__pyx_n_s_mj_deleteVFS, __pyx_k_mj_deleteVFS, sizeof(__pyx_k_mj_deleteVFS), 0, 0, 1, 1},
  {&__pyx_n_s_mj_differentiatePos, __pyx_k_mj_differentiatePos, sizeof(__pyx_k_mj_differentiatePos), 0, 0, 1, 1},
  {&__pyx_n_s_mj_energyPos, __pyx_k_mj_energyPos, sizeof(__pyx_k_mj_energyPos), 0, 0, 1, 1},
  {&__pyx_n_s_mj_energyVel, __pyx_k_mj_energyVel, sizeof(__pyx_k_mj_energyVel), 0, 0, 1, 1},
  {&__pyx_n_s_mj_factorM, __pyx_k_mj_factorM, sizeof(__pyx_k_mj_factorM), 0, 0, 1, 1},
  {&__pyx_n_s_mj_findFileVFS, __pyx_k_mj_findFileVFS, sizeof(__pyx_k_mj_findFileVFS), 0, 0, 1, 1},
  {&__pyx_n_s_mj_forward, __pyx_k_mj_forward, sizeof(__pyx_k_mj_forward), 0, 0, 1, 1},
  {&__pyx_n_s_mj_forwardSkip, __pyx_k_mj_forwardSkip, sizeof(__pyx_k_mj_forwardSkip), 0, 0, 1, 1},
  {&__pyx_n_s_mj_freeLastXML, __pyx_k_mj_freeLastXML, sizeof(__pyx_k_mj_freeLastXML), 0, 0, 1, 1},
  {&__pyx_n_s_mj_fullM, __pyx_k_mj_fullM, sizeof(__pyx_k_mj_fullM), 0, 0, 1, 1},
  {&__pyx_n_s_mj_fwdAcceleration, __pyx_k_mj_fwdAcceleration, sizeof(__pyx_k_mj_fwdAcceleration), 0, 0, 1, 1},
  {&__pyx_n_s_mj_fwdActuation, __pyx_k_mj_fwdActuation, sizeof(__pyx_k_mj_fwdActuation), 0, 0, 1, 1},
  {&__pyx_n_s_mj_fwdConstraint, __pyx_k_mj_fwdConstraint, sizeof(__pyx_k_mj_fwdConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_mj_fwdPosition, __pyx_k_mj_fwdPosition, sizeof(__pyx_k_mj_fwdPosition), 0, 0, 1, 1},
  {&__pyx_n_s_mj_fwdVelocity, __pyx_k_mj_fwdVelocity, sizeof(__pyx_k_mj_fwdVelocity), 0, 0, 1, 1},
  {&__pyx_n_s_mj_getTotalmass, __pyx_k_mj_getTotalmass, sizeof(__pyx_k_mj_getTotalmass), 0, 0, 1, 1},
  {&__pyx_n_s_mj_integratePos, __pyx_k_mj_integratePos, sizeof(__pyx_k_mj_integratePos), 0, 0, 1, 1},
  {&__pyx_n_s_mj_invConstraint, __pyx_k_mj_invConstraint, sizeof(__pyx_k_mj_invConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_mj_invPosition, __pyx_k_mj_invPosition, sizeof(__pyx_k_mj_invPosition), 0, 0, 1, 1},
  {&__pyx_n_s_mj_invVelocity, __pyx_k_mj_invVelocity, sizeof(__pyx_k_mj_invVelocity), 0, 0, 1, 1},
  {&__pyx_n_s_mj_inverse, __pyx_k_mj_inverse, sizeof(__pyx_k_mj_inverse), 0, 0, 1, 1},
  {&__pyx_n_s_mj_inverseSkip, __pyx_k_mj_inverseSkip, sizeof(__pyx_k_mj_inverseSkip), 0, 0, 1, 1},
  {&__pyx_n_s_mj_isDual, __pyx_k_mj_isDual, sizeof(__pyx_k_mj_isDual), 0, 0, 1, 1},
  {&__pyx_n_s_mj_isPyramidal, __pyx_k_mj_isPyramidal, sizeof(__pyx_k_mj_isPyramidal), 0, 0, 1, 1},
  {&__pyx_n_s_mj_isSparse, __pyx_k_mj_isSparse, sizeof(__pyx_k_mj_isSparse), 0, 0, 1, 1},
  {&__pyx_n_s_mj_jac, __pyx_k_mj_jac, sizeof(__pyx_k_mj_jac), 0, 0, 1, 1},
  {&__pyx_n_s_mj_jacBody, __pyx_k_mj_jacBody, sizeof(__pyx_k_mj_jacBody), 0, 0, 1, 1},
  {&__pyx_n_s_mj_jacBodyCom, __pyx_k_mj_jacBodyCom, sizeof(__pyx_k_mj_jacBodyCom), 0, 0, 1, 1},
  {&__pyx_n_s_mj_jacGeom, __pyx_k_mj_jacGeom, sizeof(__pyx_k_mj_jacGeom), 0, 0, 1, 1},
  {&__pyx_n_s_mj_jacPointAxis, __pyx_k_mj_jacPointAxis, sizeof(__pyx_k_mj_jacPointAxis), 0, 0, 1, 1},
  {&__pyx_n_s_mj_jacSite, __pyx_k_mj_jacSite, sizeof(__pyx_k_mj_jacSite), 0, 0, 1, 1},
  {&__pyx_n_s_mj_kinematics, __pyx_k_mj_kinematics, sizeof(__pyx_k_mj_kinematics), 0, 0, 1, 1},
  {&__pyx_n_s_mj_loadModel, __pyx_k_mj_loadModel, sizeof(__pyx_k_mj_loadModel), 0, 0, 1, 1},
  {&__pyx_n_s_mj_loadXML, __pyx_k_mj_loadXML, sizeof(__pyx_k_mj_loadXML), 0, 0, 1, 1},
  {&__pyx_n_s_mj_local2Global, __pyx_k_mj_local2Global, sizeof(__pyx_k_mj_local2Global), 0, 0, 1, 1},
  {&__pyx_n_s_mj_makeConstraint, __pyx_k_mj_makeConstraint, sizeof(__pyx_k_mj_makeConstraint), 0, 0, 1, 1},
  {&__pyx_kp_u_mj_makeData_failed, __pyx_k_mj_makeData_failed, sizeof(__pyx_k_mj_makeData_failed), 0, 1, 0, 0},
  {&__pyx_n_s_mj_makeEmptyFileVFS, __pyx_k_mj_makeEmptyFileVFS, sizeof(__pyx_k_mj_makeEmptyFileVFS), 0, 0, 1, 1},
  {&__pyx_n_s_mj_mulJacTVec, __pyx_k_mj_mulJacTVec, sizeof(__pyx_k_mj_mulJacTVec), 0, 0, 1, 1},
  {&__pyx_n_s_mj_mulJacVec, __pyx_k_mj_mulJacVec, sizeof(__pyx_k_mj_mulJacVec), 0, 0, 1, 1},
  {&__pyx_n_s_mj_mulM, __pyx_k_mj_mulM, sizeof(__pyx_k_mj_mulM), 0, 0, 1, 1},
  {&__pyx_n_s_mj_name2id, __pyx_k_mj_name2id, sizeof(__pyx_k_mj_name2id), 0, 0, 1, 1},
  {&__pyx_n_s_mj_normalizeQuat, __pyx_k_mj_normalizeQuat, sizeof(__pyx_k_mj_normalizeQuat), 0, 0, 1, 1},
  {&__pyx_n_s_mj_objectAcceleration, __pyx_k_mj_objectAcceleration, sizeof(__pyx_k_mj_objectAcceleration), 0, 0, 1, 1},
  {&__pyx_n_s_mj_objectVelocity, __pyx_k_mj_objectVelocity, sizeof(__pyx_k_mj_objectVelocity), 0, 0, 1, 1},
  {&__pyx_n_s_mj_passive, __pyx_k_mj_passive, sizeof(__pyx_k_mj_passive), 0, 0, 1, 1},
  {&__pyx_n_s_mj_printData, __pyx_k_mj_printData, sizeof(__pyx_k_mj_printData), 0, 0, 1, 1},
  {&__pyx_n_s_mj_printModel, __pyx_k_mj_printModel, sizeof(__pyx_k_mj_printModel), 0, 0, 1, 1},
  {&__pyx_n_s_mj_printSchema, __pyx_k_mj_printSchema, sizeof(__pyx_k_mj_printSchema), 0, 0, 1, 1},
  {&__pyx_n_s_mj_projectConstraint, __pyx_k_mj_projectConstraint, sizeof(__pyx_k_mj_projectConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_mj_rayHfield, __pyx_k_mj_rayHfield, sizeof(__pyx_k_mj_rayHfield), 0, 0, 1, 1},
  {&__pyx_n_s_mj_rayMesh, __pyx_k_mj_rayMesh, sizeof(__pyx_k_mj_rayMesh), 0, 0, 1, 1},
  {&__pyx_n_s_mj_referenceConstraint, __pyx_k_mj_referenceConstraint, sizeof(__pyx_k_mj_referenceConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_mj_resetCallbacks, __pyx_k_mj_resetCallbacks, sizeof(__pyx_k_mj_resetCallbacks), 0, 0, 1, 1},
  {&__pyx_n_s_mj_resetData, __pyx_k_mj_resetData, sizeof(__pyx_k_mj_resetData), 0, 0, 1, 1},
  {&__pyx_n_s_mj_resetDataKeyframe, __pyx_k_mj_resetDataKeyframe, sizeof(__pyx_k_mj_resetDataKeyframe), 0, 0, 1, 1},
  {&__pyx_n_s_mj_rne, __pyx_k_mj_rne, sizeof(__pyx_k_mj_rne), 0, 0, 1, 1},
  {&__pyx_n_s_mj_rnePostConstraint, __pyx_k_mj_rnePostConstraint, sizeof(__pyx_k_mj_rnePostConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_mj_saveLastXML, __pyx_k_mj_saveLastXML, sizeof(__pyx_k_mj_saveLastXML), 0, 0, 1, 1},
  {&__pyx_n_s_mj_sensorAcc, __pyx_k_mj_sensorAcc, sizeof(__pyx_k_mj_sensorAcc), 0, 0, 1, 1},
  {&__pyx_n_s_mj_sensorPos, __pyx_k_mj_sensorPos, sizeof(__pyx_k_mj_sensorPos), 0, 0, 1, 1},
  {&__pyx_n_s_mj_sensorVel, __pyx_k_mj_sensorVel, sizeof(__pyx_k_mj_sensorVel), 0, 0, 1, 1},
  {&__pyx_n_s_mj_setConst, __pyx_k_mj_setConst, sizeof(__pyx_k_mj_setConst), 0, 0, 1, 1},
  {&__pyx_n_s_mj_setTotalmass, __pyx_k_mj_setTotalmass, sizeof(__pyx_k_mj_setTotalmass), 0, 0, 1, 1},
  {&__pyx_n_s_mj_sizeModel, __pyx_k_mj_sizeModel, sizeof(__pyx_k_mj_sizeModel), 0, 0, 1, 1},
  {&__pyx_n_s_mj_solveM, __pyx_k_mj_solveM, sizeof(__pyx_k_mj_solveM), 0, 0, 1, 1},
  {&__pyx_n_s_mj_solveM2, __pyx_k_mj_solveM2, sizeof(__pyx_k_mj_solveM2), 0, 0, 1, 1},
  {&__pyx_n_s_mj_step, __pyx_k_mj_step, sizeof(__pyx_k_mj_step), 0, 0, 1, 1},
  {&__pyx_n_s_mj_step1, __pyx_k_mj_step1, sizeof(__pyx_k_mj_step1), 0, 0, 1, 1},
  {&__pyx_n_s_mj_step2, __pyx_k_mj_step2, sizeof(__pyx_k_mj_step2), 0, 0, 1, 1},
  {&__pyx_n_s_mj_tendon, __pyx_k_mj_tendon, sizeof(__pyx_k_mj_tendon), 0, 0, 1, 1},
  {&__pyx_n_s_mj_transmission, __pyx_k_mj_transmission, sizeof(__pyx_k_mj_transmission), 0, 0, 1, 1},
  {&__pyx_n_s_mj_version, __pyx_k_mj_version, sizeof(__pyx_k_mj_version), 0, 0, 1, 1},
  {&__pyx_n_s_mj_warning, __pyx_k_mj_warning, sizeof(__pyx_k_mj_warning), 0, 0, 1, 1},
  {&__pyx_n_u_mjb, __pyx_k_mjb, sizeof(__pyx_k_mjb), 0, 1, 0, 1},
  {&__pyx_kp_u_mjb_2, __pyx_k_mjb_2, sizeof(__pyx_k_mjb_2), 0, 1, 0, 0},
  {&__pyx_n_s_mjb_bytes, __pyx_k_mjb_bytes, sizeof(__pyx_k_mjb_bytes), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_blitBuffer, __pyx_k_mjr_blitBuffer, sizeof(__pyx_k_mjr_blitBuffer), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_defaultContext, __pyx_k_mjr_defaultContext, sizeof(__pyx_k_mjr_defaultContext), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_figure, __pyx_k_mjr_figure, sizeof(__pyx_k_mjr_figure), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_finish, __pyx_k_mjr_finish, sizeof(__pyx_k_mjr_finish), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_freeContext, __pyx_k_mjr_freeContext, sizeof(__pyx_k_mjr_freeContext), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_getError, __pyx_k_mjr_getError, sizeof(__pyx_k_mjr_getError), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_makeContext, __pyx_k_mjr_makeContext, sizeof(__pyx_k_mjr_makeContext), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_overlay, __pyx_k_mjr_overlay, sizeof(__pyx_k_mjr_overlay), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_render, __pyx_k_mjr_render, sizeof(__pyx_k_mjr_render), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_setBuffer, __pyx_k_mjr_setBuffer, sizeof(__pyx_k_mjr_setBuffer), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_uploadHField, __pyx_k_mjr_uploadHField, sizeof(__pyx_k_mjr_uploadHField), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_uploadMesh, __pyx_k_mjr_uploadMesh, sizeof(__pyx_k_mjr_uploadMesh), 0, 0, 1, 1},
  {&__pyx_n_s_mjr_uploadTexture, __pyx_k_mjr_uploadTexture, sizeof(__pyx_k_mjr_uploadTexture), 0, 0, 1, 1},
  {&__pyx_n_s_mju_Halton, __pyx_k_mju_Halton, sizeof(__pyx_k_mju_Halton), 0, 0, 1, 1},
  {&__pyx_n_s_mju_add, __pyx_k_mju_add, sizeof(__pyx_k_mju_add), 0, 0, 1, 1},
  {&__pyx_n_s_mju_add3, __pyx_k_mju_add3, sizeof(__pyx_k_mju_add3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_addScl, __pyx_k_mju_addScl, sizeof(__pyx_k_mju_addScl), 0, 0, 1, 1},
  {&__pyx_n_s_mju_addScl3, __pyx_k_mju_addScl3, sizeof(__pyx_k_mju_addScl3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_addTo, __pyx_k_mju_addTo, sizeof(__pyx_k_mju_addTo), 0, 0, 1, 1},
  {&__pyx_n_s_mju_addTo3, __pyx_k_mju_addTo3, sizeof(__pyx_k_mju_addTo3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_addToScl, __pyx_k_mju_addToScl, sizeof(__pyx_k_mju_addToScl), 0, 0, 1, 1},
  {&__pyx_n_s_mju_addToScl3, __pyx_k_mju_addToScl3, sizeof(__pyx_k_mju_addToScl3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_axisAngle2Quat, __pyx_k_mju_axisAngle2Quat, sizeof(__pyx_k_mju_axisAngle2Quat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_cholFactor, __pyx_k_mju_cholFactor, sizeof(__pyx_k_mju_cholFactor), 0, 0, 1, 1},
  {&__pyx_n_s_mju_cholSolve, __pyx_k_mju_cholSolve, sizeof(__pyx_k_mju_cholSolve), 0, 0, 1, 1},
  {&__pyx_n_s_mju_cholUpdate, __pyx_k_mju_cholUpdate, sizeof(__pyx_k_mju_cholUpdate), 0, 0, 1, 1},
  {&__pyx_n_s_mju_clearHandlers, __pyx_k_mju_clearHandlers, sizeof(__pyx_k_mju_clearHandlers), 0, 0, 1, 1},
  {&__pyx_n_s_mju_copy, __pyx_k_mju_copy, sizeof(__pyx_k_mju_copy), 0, 0, 1, 1},
  {&__pyx_n_s_mju_copy3, __pyx_k_mju_copy3, sizeof(__pyx_k_mju_copy3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_copy4, __pyx_k_mju_copy4, sizeof(__pyx_k_mju_copy4), 0, 0, 1, 1},
  {&__pyx_n_s_mju_cross, __pyx_k_mju_cross, sizeof(__pyx_k_mju_cross), 0, 0, 1, 1},
  {&__pyx_n_s_mju_decodePyramid, __pyx_k_mju_decodePyramid, sizeof(__pyx_k_mju_decodePyramid), 0, 0, 1, 1},
  {&__pyx_n_s_mju_derivQuat, __pyx_k_mju_derivQuat, sizeof(__pyx_k_mju_derivQuat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_dist3, __pyx_k_mju_dist3, sizeof(__pyx_k_mju_dist3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_dot, __pyx_k_mju_dot, sizeof(__pyx_k_mju_dot), 0, 0, 1, 1},
  {&__pyx_n_s_mju_dot3, __pyx_k_mju_dot3, sizeof(__pyx_k_mju_dot3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_eig3, __pyx_k_mju_eig3, sizeof(__pyx_k_mju_eig3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_encodePyramid, __pyx_k_mju_encodePyramid, sizeof(__pyx_k_mju_encodePyramid), 0, 0, 1, 1},
  {&__pyx_n_s_mju_error, __pyx_k_mju_error, sizeof(__pyx_k_mju_error), 0, 0, 1, 1},
  {&__pyx_n_s_mju_error_i, __pyx_k_mju_error_i, sizeof(__pyx_k_mju_error_i), 0, 0, 1, 1},
  {&__pyx_n_s_mju_error_s, __pyx_k_mju_error_s, sizeof(__pyx_k_mju_error_s), 0, 0, 1, 1},
  {&__pyx_n_s_mju_insertionSort, __pyx_k_mju_insertionSort, sizeof(__pyx_k_mju_insertionSort), 0, 0, 1, 1},
  {&__pyx_n_s_mju_isBad, __pyx_k_mju_isBad, sizeof(__pyx_k_mju_isBad), 0, 0, 1, 1},
  {&__pyx_n_s_mju_isZero, __pyx_k_mju_isZero, sizeof(__pyx_k_mju_isZero), 0, 0, 1, 1},
  {&__pyx_n_s_mju_mat2Quat, __pyx_k_mju_mat2Quat, sizeof(__pyx_k_mju_mat2Quat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_max, __pyx_k_mju_max, sizeof(__pyx_k_mju_max), 0, 0, 1, 1},
  {&__pyx_n_s_mju_min, __pyx_k_mju_min, sizeof(__pyx_k_mju_min), 0, 0, 1, 1},
  {&__pyx_n_s_mju_mulMatMat, __pyx_k_mju_mulMatMat, sizeof(__pyx_k_mju_mulMatMat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_mulMatMatT, __pyx_k_mju_mulMatMatT, sizeof(__pyx_k_mju_mulMatMatT), 0, 0, 1, 1},
  {&__pyx_n_s_mju_mulMatTMat, __pyx_k_mju_mulMatTMat, sizeof(__pyx_k_mju_mulMatTMat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_mulMatTVec, __pyx_k_mju_mulMatTVec, sizeof(__pyx_k_mju_mulMatTVec), 0, 0, 1, 1},
  {&__pyx_n_s_mju_mulMatVec, __pyx_k_mju_mulMatVec, sizeof(__pyx_k_mju_mulMatVec), 0, 0, 1, 1},
  {&__pyx_n_s_mju_mulPose, __pyx_k_mju_mulPose, sizeof(__pyx_k_mju_mulPose), 0, 0, 1, 1},
  {&__pyx_n_s_mju_mulQuat, __pyx_k_mju_mulQuat, sizeof(__pyx_k_mju_mulQuat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_mulQuatAxis, __pyx_k_mju_mulQuatAxis, sizeof(__pyx_k_mju_mulQuatAxis), 0, 0, 1, 1},
  {&__pyx_n_s_mju_muscleFVL, __pyx_k_mju_muscleFVL, sizeof(__pyx_k_mju_muscleFVL), 0, 0, 1, 1},
  {&__pyx_n_s_mju_musclePassive, __pyx_k_mju_musclePassive, sizeof(__pyx_k_mju_musclePassive), 0, 0, 1, 1},
  {&__pyx_n_s_mju_negPose, __pyx_k_mju_negPose, sizeof(__pyx_k_mju_negPose), 0, 0, 1, 1},
  {&__pyx_n_s_mju_negQuat, __pyx_k_mju_negQuat, sizeof(__pyx_k_mju_negQuat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_norm, __pyx_k_mju_norm, sizeof(__pyx_k_mju_norm), 0, 0, 1, 1},
  {&__pyx_n_s_mju_norm3, __pyx_k_mju_norm3, sizeof(__pyx_k_mju_norm3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_normalize, __pyx_k_mju_normalize, sizeof(__pyx_k_mju_normalize), 0, 0, 1, 1},
  {&__pyx_n_s_mju_normalize3, __pyx_k_mju_normalize3, sizeof(__pyx_k_mju_normalize3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_normalize4, __pyx_k_mju_normalize4, sizeof(__pyx_k_mju_normalize4), 0, 0, 1, 1},
  {&__pyx_n_s_mju_pneumatic, __pyx_k_mju_pneumatic, sizeof(__pyx_k_mju_pneumatic), 0, 0, 1, 1},
  {&__pyx_n_s_mju_printMat, __pyx_k_mju_printMat, sizeof(__pyx_k_mju_printMat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_quat2Mat, __pyx_k_mju_quat2Mat, sizeof(__pyx_k_mju_quat2Mat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_quat2Vel, __pyx_k_mju_quat2Vel, sizeof(__pyx_k_mju_quat2Vel), 0, 0, 1, 1},
  {&__pyx_n_s_mju_quatIntegrate, __pyx_k_mju_quatIntegrate, sizeof(__pyx_k_mju_quatIntegrate), 0, 0, 1, 1},
  {&__pyx_n_s_mju_quatZ2Vec, __pyx_k_mju_quatZ2Vec, sizeof(__pyx_k_mju_quatZ2Vec), 0, 0, 1, 1},
  {&__pyx_n_s_mju_rayGeom, __pyx_k_mju_rayGeom, sizeof(__pyx_k_mju_rayGeom), 0, 0, 1, 1},
  {&__pyx_n_s_mju_rotVecMat, __pyx_k_mju_rotVecMat, sizeof(__pyx_k_mju_rotVecMat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_rotVecMatT, __pyx_k_mju_rotVecMatT, sizeof(__pyx_k_mju_rotVecMatT), 0, 0, 1, 1},
  {&__pyx_n_s_mju_rotVecQuat, __pyx_k_mju_rotVecQuat, sizeof(__pyx_k_mju_rotVecQuat), 0, 0, 1, 1},
  {&__pyx_n_s_mju_round, __pyx_k_mju_round, sizeof(__pyx_k_mju_round), 0, 0, 1, 1},
  {&__pyx_n_s_mju_scl, __pyx_k_mju_scl, sizeof(__pyx_k_mju_scl), 0, 0, 1, 1},
  {&__pyx_n_s_mju_scl3, __pyx_k_mju_scl3, sizeof(__pyx_k_mju_scl3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_sign, __pyx_k_mju_sign, sizeof(__pyx_k_mju_sign), 0, 0, 1, 1},
  {&__pyx_n_s_mju_springDamper, __pyx_k_mju_springDamper, sizeof(__pyx_k_mju_springDamper), 0, 0, 1, 1},
  {&__pyx_n_s_mju_sqrMatTD, __pyx_k_mju_sqrMatTD, sizeof(__pyx_k_mju_sqrMatTD), 0, 0, 1, 1},
  {&__pyx_n_s_mju_standardNormal, __pyx_k_mju_standardNormal, sizeof(__pyx_k_mju_standardNormal), 0, 0, 1, 1},
  {&__pyx_n_s_mju_str2Type, __pyx_k_mju_str2Type, sizeof(__pyx_k_mju_str2Type), 0, 0, 1, 1},
  {&__pyx_n_s_mju_sub, __pyx_k_mju_sub, sizeof(__pyx_k_mju_sub), 0, 0, 1, 1},
  {&__pyx_n_s_mju_sub3, __pyx_k_mju_sub3, sizeof(__pyx_k_mju_sub3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_subFrom, __pyx_k_mju_subFrom, sizeof(__pyx_k_mju_subFrom), 0, 0, 1, 1},
  {&__pyx_n_s_mju_subFrom3, __pyx_k_mju_subFrom3, sizeof(__pyx_k_mju_subFrom3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_transformSpatial, __pyx_k_mju_transformSpatial, sizeof(__pyx_k_mju_transformSpatial), 0, 0, 1, 1},
  {&__pyx_n_s_mju_transpose, __pyx_k_mju_transpose, sizeof(__pyx_k_mju_transpose), 0, 0, 1, 1},
  {&__pyx_n_s_mju_trnVecPose, __pyx_k_mju_trnVecPose, sizeof(__pyx_k_mju_trnVecPose), 0, 0, 1, 1},
  {&__pyx_n_s_mju_unit4, __pyx_k_mju_unit4, sizeof(__pyx_k_mju_unit4), 0, 0, 1, 1},
  {&__pyx_n_s_mju_warning, __pyx_k_mju_warning, sizeof(__pyx_k_mju_warning), 0, 0, 1, 1},
  {&__pyx_n_s_mju_warning_i, __pyx_k_mju_warning_i, sizeof(__pyx_k_mju_warning_i), 0, 0, 1, 1},
  {&__pyx_n_s_mju_warning_s, __pyx_k_mju_warning_s, sizeof(__pyx_k_mju_warning_s), 0, 0, 1, 1},
  {&__pyx_n_s_mju_writeLog, __pyx_k_mju_writeLog, sizeof(__pyx_k_mju_writeLog), 0, 0, 1, 1},
  {&__pyx_n_s_mju_zero, __pyx_k_mju_zero, sizeof(__pyx_k_mju_zero), 0, 0, 1, 1},
  {&__pyx_n_s_mju_zero3, __pyx_k_mju_zero3, sizeof(__pyx_k_mju_zero3), 0, 0, 1, 1},
  {&__pyx_n_s_mju_zero4, __pyx_k_mju_zero4, sizeof(__pyx_k_mju_zero4), 0, 0, 1, 1},
  {&__pyx_kp_u_mjvGeom_doesn_t_have_field_s, __pyx_k_mjvGeom_doesn_t_have_field_s, sizeof(__pyx_k_mjvGeom_doesn_t_have_field_s), 0, 1, 0, 0},
  {&__pyx_kp_u_mjvGeom_has_attr_but_type_is_inv, __pyx_k_mjvGeom_has_attr_but_type_is_inv, sizeof(__pyx_k_mjvGeom_has_attr_but_type_is_inv), 0, 1, 0, 0},
  {&__pyx_n_s_mjv_addGeoms, __pyx_k_mjv_addGeoms, sizeof(__pyx_k_mjv_addGeoms), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_alignToCamera, __pyx_k_mjv_alignToCamera, sizeof(__pyx_k_mjv_alignToCamera), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_applyPerturbForce, __pyx_k_mjv_applyPerturbForce, sizeof(__pyx_k_mjv_applyPerturbForce), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_applyPerturbPose, __pyx_k_mjv_applyPerturbPose, sizeof(__pyx_k_mjv_applyPerturbPose), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_cameraInModel, __pyx_k_mjv_cameraInModel, sizeof(__pyx_k_mjv_cameraInModel), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_cameraInRoom, __pyx_k_mjv_cameraInRoom, sizeof(__pyx_k_mjv_cameraInRoom), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_defaultCamera, __pyx_k_mjv_defaultCamera, sizeof(__pyx_k_mjv_defaultCamera), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_defaultFigure, __pyx_k_mjv_defaultFigure, sizeof(__pyx_k_mjv_defaultFigure), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_defaultOption, __pyx_k_mjv_defaultOption, sizeof(__pyx_k_mjv_defaultOption), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_defaultPerturb, __pyx_k_mjv_defaultPerturb, sizeof(__pyx_k_mjv_defaultPerturb), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_freeScene, __pyx_k_mjv_freeScene, sizeof(__pyx_k_mjv_freeScene), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_frustumHeight, __pyx_k_mjv_frustumHeight, sizeof(__pyx_k_mjv_frustumHeight), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_initPerturb, __pyx_k_mjv_initPerturb, sizeof(__pyx_k_mjv_initPerturb), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_makeConnector, __pyx_k_mjv_makeConnector, sizeof(__pyx_k_mjv_makeConnector), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_makeScene, __pyx_k_mjv_makeScene, sizeof(__pyx_k_mjv_makeScene), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_model2room, __pyx_k_mjv_model2room, sizeof(__pyx_k_mjv_model2room), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_moveCamera, __pyx_k_mjv_moveCamera, sizeof(__pyx_k_mjv_moveCamera), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_moveModel, __pyx_k_mjv_moveModel, sizeof(__pyx_k_mjv_moveModel), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_movePerturb, __pyx_k_mjv_movePerturb, sizeof(__pyx_k_mjv_movePerturb), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_room2model, __pyx_k_mjv_room2model, sizeof(__pyx_k_mjv_room2model), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_select, __pyx_k_mjv_select, sizeof(__pyx_k_mjv_select), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_updateCamera, __pyx_k_mjv_updateCamera, sizeof(__pyx_k_mjv_updateCamera), 0, 0, 1, 1},
  {&__pyx_n_s_mjv_updateScene, __pyx_k_mjv_updateScene, sizeof(__pyx_k_mjv_updateScene), 0, 0, 1, 1},
  {&__pyx_n_s_mocap_pos, __pyx_k_mocap_pos, sizeof(__pyx_k_mocap_pos), 0, 0, 1, 1},
  {&__pyx_n_s_mocap_quat, __pyx_k_mocap_quat, sizeof(__pyx_k_mocap_quat), 0, 0, 1, 1},
  {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
  {&__pyx_n_s_model, __pyx_k_model, sizeof(__pyx_k_model), 0, 0, 1, 1},
  {&__pyx_kp_u_model_mjb, __pyx_k_model_mjb, sizeof(__pyx_k_model_mjb), 0, 1, 0, 0},
  {&__pyx_kp_u_model_xml, __pyx_k_model_xml, sizeof(__pyx_k_model_xml), 0, 1, 0, 0},
  {&__pyx_n_s_modelpos, __pyx_k_modelpos, sizeof(__pyx_k_modelpos), 0, 0, 1, 1},
  {&__pyx_n_s_modelquat, __pyx_k_modelquat, sizeof(__pyx_k_modelquat), 0, 0, 1, 1},
  {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
  {&__pyx_n_s_msg, __pyx_k_msg, sizeof(__pyx_k_msg), 0, 0, 1, 1},
  {&__pyx_n_s_mu, __pyx_k_mu, sizeof(__pyx_k_mu), 0, 0, 1, 1},
  {&__pyx_n_u_mujoco, __pyx_k_mujoco, sizeof(__pyx_k_mujoco), 0, 1, 0, 1},
  {&__pyx_n_s_mujoco_path, __pyx_k_mujoco_path, sizeof(__pyx_k_mujoco_path), 0, 0, 1, 1},
  {&__pyx_n_u_mujoco_py, __pyx_k_mujoco_py, sizeof(__pyx_k_mujoco_py), 0, 1, 0, 1},
  {&__pyx_n_s_mujoco_py_builder, __pyx_k_mujoco_py_builder, sizeof(__pyx_k_mujoco_py_builder), 0, 0, 1, 1},
  {&__pyx_n_s_mujoco_py_cymj, __pyx_k_mujoco_py_cymj, sizeof(__pyx_k_mujoco_py_cymj), 0, 0, 1, 1},
  {&__pyx_kp_s_mujoco_py_cymj_pyx, __pyx_k_mujoco_py_cymj_pyx, sizeof(__pyx_k_mujoco_py_cymj_pyx), 0, 0, 1, 0},
  {&__pyx_n_s_mujoco_py_generated, __pyx_k_mujoco_py_generated, sizeof(__pyx_k_mujoco_py_generated), 0, 0, 1, 1},
  {&__pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_k_mujoco_py_generated_wrappers_pxi, sizeof(__pyx_k_mujoco_py_generated_wrappers_pxi), 0, 0, 1, 0},
  {&__pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_k_mujoco_py_mjbatchrenderer_pyx, sizeof(__pyx_k_mujoco_py_mjbatchrenderer_pyx), 0, 0, 1, 0},
  {&__pyx_kp_s_mujoco_py_mjrendercontext_pyx, __pyx_k_mujoco_py_mjrendercontext_pyx, sizeof(__pyx_k_mujoco_py_mjrendercontext_pyx), 0, 0, 1, 0},
  {&__pyx_kp_s_mujoco_py_mjsim_pyx, __pyx_k_mujoco_py_mjsim_pyx, sizeof(__pyx_k_mujoco_py_mjsim_pyx), 0, 0, 1, 0},
  {&__pyx_kp_s_mujoco_py_mjsimstate_pyx, __pyx_k_mujoco_py_mjsimstate_pyx, sizeof(__pyx_k_mujoco_py_mjsimstate_pyx), 0, 0, 1, 0},
  {&__pyx_n_s_mujoco_py_mjviewer, __pyx_k_mujoco_py_mjviewer, sizeof(__pyx_k_mujoco_py_mjviewer), 0, 0, 1, 1},
  {&__pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_k_mujoco_py_opengl_context_pyx, sizeof(__pyx_k_mujoco_py_opengl_context_pyx), 0, 0, 1, 0},
  {&__pyx_n_s_mujoco_py_utils, __pyx_k_mujoco_py_utils, sizeof(__pyx_k_mujoco_py_utils), 0, 0, 1, 1},
  {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1},
  {&__pyx_n_s_nM, __pyx_k_nM, sizeof(__pyx_k_nM), 0, 0, 1, 1},
  {&__pyx_n_s_na, __pyx_k_na, sizeof(__pyx_k_na), 0, 0, 1, 1},
  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
  {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
  {&__pyx_n_s_namedtuple, __pyx_k_namedtuple, sizeof(__pyx_k_namedtuple), 0, 0, 1, 1},
  {&__pyx_kp_u_names_must_all_be_strings, __pyx_k_names_must_all_be_strings, sizeof(__pyx_k_names_must_all_be_strings), 0, 1, 0, 0},
  {&__pyx_n_s_nbody, __pyx_k_nbody, sizeof(__pyx_k_nbody), 0, 0, 1, 1},
  {&__pyx_n_s_nc, __pyx_k_nc, sizeof(__pyx_k_nc), 0, 0, 1, 1},
  {&__pyx_n_s_ncam, __pyx_k_ncam, sizeof(__pyx_k_ncam), 0, 0, 1, 1},
  {&__pyx_n_s_nconmax, __pyx_k_nconmax, sizeof(__pyx_k_nconmax), 0, 0, 1, 1},
  {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0},
  {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0},
  {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1},
  {&__pyx_n_s_ne, __pyx_k_ne, sizeof(__pyx_k_ne), 0, 0, 1, 1},
  {&__pyx_n_s_ne_2, __pyx_k_ne_2, sizeof(__pyx_k_ne_2), 0, 0, 1, 1},
  {&__pyx_n_s_nefc, __pyx_k_nefc, sizeof(__pyx_k_nefc), 0, 0, 1, 1},
  {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
  {&__pyx_n_s_newmass, __pyx_k_newmass, sizeof(__pyx_k_newmass), 0, 0, 1, 1},
  {&__pyx_n_s_newpos, __pyx_k_newpos, sizeof(__pyx_k_newpos), 0, 0, 1, 1},
  {&__pyx_n_s_ngeom, __pyx_k_ngeom, sizeof(__pyx_k_ngeom), 0, 0, 1, 1},
  {&__pyx_n_s_njmax, __pyx_k_njmax, sizeof(__pyx_k_njmax), 0, 0, 1, 1},
  {&__pyx_n_s_njnt, __pyx_k_njnt, sizeof(__pyx_k_njnt), 0, 0, 1, 1},
  {&__pyx_n_s_nlight, __pyx_k_nlight, sizeof(__pyx_k_nlight), 0, 0, 1, 1},
  {&__pyx_n_s_nmocap, __pyx_k_nmocap, sizeof(__pyx_k_nmocap), 0, 0, 1, 1},
  {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0},
  {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1},
  {&__pyx_n_s_nq, __pyx_k_nq, sizeof(__pyx_k_nq), 0, 0, 1, 1},
  {&__pyx_n_s_nr, __pyx_k_nr, sizeof(__pyx_k_nr), 0, 0, 1, 1},
  {&__pyx_n_s_nsensordata, __pyx_k_nsensordata, sizeof(__pyx_k_nsensordata), 0, 0, 1, 1},
  {&__pyx_n_s_nsite, __pyx_k_nsite, sizeof(__pyx_k_nsite), 0, 0, 1, 1},
  {&__pyx_n_s_nsubsteps, __pyx_k_nsubsteps, sizeof(__pyx_k_nsubsteps), 0, 0, 1, 1},
  {&__pyx_n_s_ntendon, __pyx_k_ntendon, sizeof(__pyx_k_ntendon), 0, 0, 1, 1},
  {&__pyx_n_s_nu, __pyx_k_nu, sizeof(__pyx_k_nu), 0, 0, 1, 1},
  {&__pyx_n_s_num2, __pyx_k_num2, sizeof(__pyx_k_num2), 0, 0, 1, 1},
  {&__pyx_n_s_numbers, __pyx_k_numbers, sizeof(__pyx_k_numbers), 0, 0, 1, 1},
  {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
  {&__pyx_kp_u_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 1, 0, 0},
  {&__pyx_kp_u_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 1, 0, 0},
  {&__pyx_n_s_nuserdata, __pyx_k_nuserdata, sizeof(__pyx_k_nuserdata), 0, 0, 1, 1},
  {&__pyx_n_s_nv, __pyx_k_nv, sizeof(__pyx_k_nv), 0, 0, 1, 1},
  {&__pyx_n_s_nwrap, __pyx_k_nwrap, sizeof(__pyx_k_nwrap), 0, 0, 1, 1},
  {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1},
  {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1},
  {&__pyx_n_s_objid, __pyx_k_objid, sizeof(__pyx_k_objid), 0, 0, 1, 1},
  {&__pyx_n_s_objtype, __pyx_k_objtype, sizeof(__pyx_k_objtype), 0, 0, 1, 1},
  {&__pyx_n_s_offscreen, __pyx_k_offscreen, sizeof(__pyx_k_offscreen), 0, 0, 1, 1},
  {&__pyx_n_u_offscreen, __pyx_k_offscreen, sizeof(__pyx_k_offscreen), 0, 1, 0, 1},
  {&__pyx_n_s_old_dyld_library_path, __pyx_k_old_dyld_library_path, sizeof(__pyx_k_old_dyld_library_path), 0, 0, 1, 1},
  {&__pyx_n_s_oldpos, __pyx_k_oldpos, sizeof(__pyx_k_oldpos), 0, 0, 1, 1},
  {&__pyx_n_s_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 0, 0, 1, 1},
  {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1},
  {&__pyx_n_s_opengl_backend, __pyx_k_opengl_backend, sizeof(__pyx_k_opengl_backend), 0, 0, 1, 1},
  {&__pyx_n_s_opengl_context, __pyx_k_opengl_context, sizeof(__pyx_k_opengl_context), 0, 0, 1, 1},
  {&__pyx_n_s_opt, __pyx_k_opt, sizeof(__pyx_k_opt), 0, 0, 1, 1},
  {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1},
  {&__pyx_n_s_other, __pyx_k_other, sizeof(__pyx_k_other), 0, 0, 1, 1},
  {&__pyx_n_s_overlay, __pyx_k_overlay, sizeof(__pyx_k_overlay), 0, 0, 1, 1},
  {&__pyx_n_s_overlay2, __pyx_k_overlay2, sizeof(__pyx_k_overlay2), 0, 0, 1, 1},
  {&__pyx_n_s_pack, __pyx_k_pack, sizeof(__pyx_k_pack), 0, 0, 1, 1},
  {&__pyx_n_s_parentNode, __pyx_k_parentNode, sizeof(__pyx_k_parentNode), 0, 0, 1, 1},
  {&__pyx_n_s_parseString, __pyx_k_parseString, sizeof(__pyx_k_parseString), 0, 0, 1, 1},
  {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1},
  {&__pyx_n_s_pbo_depth, __pyx_k_pbo_depth, sizeof(__pyx_k_pbo_depth), 0, 0, 1, 1},
  {&__pyx_n_s_pbo_rgb, __pyx_k_pbo_rgb, sizeof(__pyx_k_pbo_rgb), 0, 0, 1, 1},
  {&__pyx_n_s_pert, __pyx_k_pert, sizeof(__pyx_k_pert), 0, 0, 1, 1},
  {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
  {&__pyx_n_s_platform, __pyx_k_platform, sizeof(__pyx_k_platform), 0, 0, 1, 1},
  {&__pyx_n_s_pnt, __pyx_k_pnt, sizeof(__pyx_k_pnt), 0, 0, 1, 1},
  {&__pyx_n_s_point, __pyx_k_point, sizeof(__pyx_k_point), 0, 0, 1, 1},
  {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1},
  {&__pyx_n_s_pos, __pyx_k_pos, sizeof(__pyx_k_pos), 0, 0, 1, 1},
  {&__pyx_n_s_pos0, __pyx_k_pos0, sizeof(__pyx_k_pos0), 0, 0, 1, 1},
  {&__pyx_n_s_pos1, __pyx_k_pos1, sizeof(__pyx_k_pos1), 0, 0, 1, 1},
  {&__pyx_n_s_pos2, __pyx_k_pos2, sizeof(__pyx_k_pos2), 0, 0, 1, 1},
  {&__pyx_n_s_posres, __pyx_k_posres, sizeof(__pyx_k_posres), 0, 0, 1, 1},
  {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
  {&__pyx_n_s_prepare_render_context, __pyx_k_prepare_render_context, sizeof(__pyx_k_prepare_render_context), 0, 0, 1, 1},
  {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1},
  {&__pyx_n_s_prm, __pyx_k_prm, sizeof(__pyx_k_prm), 0, 0, 1, 1},
  {&__pyx_n_s_property, __pyx_k_property, sizeof(__pyx_k_property), 0, 0, 1, 1},
  {&__pyx_n_s_ptr, __pyx_k_ptr, sizeof(__pyx_k_ptr), 0, 0, 1, 1},
  {&__pyx_n_s_push, __pyx_k_push, sizeof(__pyx_k_push), 0, 0, 1, 1},
  {&__pyx_n_s_pycuda_driver, __pyx_k_pycuda_driver, sizeof(__pyx_k_pycuda_driver), 0, 0, 1, 1},
  {&__pyx_n_s_pycuda_gl, __pyx_k_pycuda_gl, sizeof(__pyx_k_pycuda_gl), 0, 0, 1, 1},
  {&__pyx_n_s_pyramid, __pyx_k_pyramid, sizeof(__pyx_k_pyramid), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_getbuffer, __pyx_k_pyx_getbuffer, sizeof(__pyx_k_pyx_getbuffer), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_Enum, __pyx_k_pyx_unpickle_Enum, sizeof(__pyx_k_pyx_unpickle_Enum), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
  {&__pyx_n_s_qfrc_target, __pyx_k_qfrc_target, sizeof(__pyx_k_qfrc_target), 0, 0, 1, 1},
  {&__pyx_n_s_qpos, __pyx_k_qpos, sizeof(__pyx_k_qpos), 0, 0, 1, 1},
  {&__pyx_n_u_qpos, __pyx_k_qpos, sizeof(__pyx_k_qpos), 0, 1, 0, 1},
  {&__pyx_n_s_qpos1, __pyx_k_qpos1, sizeof(__pyx_k_qpos1), 0, 0, 1, 1},
  {&__pyx_n_s_qpos2, __pyx_k_qpos2, sizeof(__pyx_k_qpos2), 0, 0, 1, 1},
  {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
  {&__pyx_n_s_quat, __pyx_k_quat, sizeof(__pyx_k_quat), 0, 0, 1, 1},
  {&__pyx_n_s_quat1, __pyx_k_quat1, sizeof(__pyx_k_quat1), 0, 0, 1, 1},
  {&__pyx_n_s_quat2, __pyx_k_quat2, sizeof(__pyx_k_quat2), 0, 0, 1, 1},
  {&__pyx_n_s_quatres, __pyx_k_quatres, sizeof(__pyx_k_quatres), 0, 0, 1, 1},
  {&__pyx_n_s_question, __pyx_k_question, sizeof(__pyx_k_question), 0, 0, 1, 1},
  {&__pyx_n_s_qvel, __pyx_k_qvel, sizeof(__pyx_k_qvel), 0, 0, 1, 1},
  {&__pyx_n_u_qvel, __pyx_k_qvel, sizeof(__pyx_k_qvel), 0, 1, 0, 1},
  {&__pyx_n_s_r1, __pyx_k_r1, sizeof(__pyx_k_r1), 0, 0, 1, 1},
  {&__pyx_n_s_r2, __pyx_k_r2, sizeof(__pyx_k_r2), 0, 0, 1, 1},
  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
  {&__pyx_n_s_ravel, __pyx_k_ravel, sizeof(__pyx_k_ravel), 0, 0, 1, 1},
  {&__pyx_n_u_rb, __pyx_k_rb, sizeof(__pyx_k_rb), 0, 1, 0, 1},
  {&__pyx_n_s_read, __pyx_k_read, sizeof(__pyx_k_read), 0, 0, 1, 1},
  {&__pyx_n_s_read_cuda, __pyx_k_read_cuda, sizeof(__pyx_k_read_cuda), 0, 0, 1, 1},
  {&__pyx_n_s_read_nocuda, __pyx_k_read_nocuda, sizeof(__pyx_k_read_nocuda), 0, 0, 1, 1},
  {&__pyx_n_s_read_pixels, __pyx_k_read_pixels, sizeof(__pyx_k_read_pixels), 0, 0, 1, 1},
  {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
  {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
  {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
  {&__pyx_n_s_refresh_rate, __pyx_k_refresh_rate, sizeof(__pyx_k_refresh_rate), 0, 0, 1, 1},
  {&__pyx_n_s_reldx, __pyx_k_reldx, sizeof(__pyx_k_reldx), 0, 0, 1, 1},
  {&__pyx_n_s_reldy, __pyx_k_reldy, sizeof(__pyx_k_reldy), 0, 0, 1, 1},
  {&__pyx_n_s_relx, __pyx_k_relx, sizeof(__pyx_k_relx), 0, 0, 1, 1},
  {&__pyx_n_s_rely, __pyx_k_rely, sizeof(__pyx_k_rely), 0, 0, 1, 1},
  {&__pyx_n_s_removeChild, __pyx_k_removeChild, sizeof(__pyx_k_removeChild), 0, 0, 1, 1},
  {&__pyx_n_s_remove_empty_lines, __pyx_k_remove_empty_lines, sizeof(__pyx_k_remove_empty_lines), 0, 0, 1, 1},
  {&__pyx_n_s_render, __pyx_k_render, sizeof(__pyx_k_render), 0, 0, 1, 1},
  {&__pyx_n_s_render_callback, __pyx_k_render_callback, sizeof(__pyx_k_render_callback), 0, 0, 1, 1},
  {&__pyx_n_s_render_context, __pyx_k_render_context, sizeof(__pyx_k_render_context), 0, 0, 1, 1},
  {&__pyx_n_s_render_contexts, __pyx_k_render_contexts, sizeof(__pyx_k_render_contexts), 0, 0, 1, 1},
  {&__pyx_n_s_res, __pyx_k_res, sizeof(__pyx_k_res), 0, 0, 1, 1},
  {&__pyx_n_s_reshape, __pyx_k_reshape, sizeof(__pyx_k_reshape), 0, 0, 1, 1},
  {&__pyx_n_s_resolution, __pyx_k_resolution, sizeof(__pyx_k_resolution), 0, 0, 1, 1},
  {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1},
  {&__pyx_n_s_rgb_arr, __pyx_k_rgb_arr, sizeof(__pyx_k_rgb_arr), 0, 0, 1, 1},
  {&__pyx_n_s_rgb_view, __pyx_k_rgb_view, sizeof(__pyx_k_rgb_view), 0, 0, 1, 1},
  {&__pyx_n_s_roompos, __pyx_k_roompos, sizeof(__pyx_k_roompos), 0, 0, 1, 1},
  {&__pyx_n_s_roomquat, __pyx_k_roomquat, sizeof(__pyx_k_roomquat), 0, 0, 1, 1},
  {&__pyx_n_s_roomup, __pyx_k_roomup, sizeof(__pyx_k_roomup), 0, 0, 1, 1},
  {&__pyx_n_s_rotnew2old, __pyx_k_rotnew2old, sizeof(__pyx_k_rotnew2old), 0, 0, 1, 1},
  {&__pyx_kp_u_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 1, 0, 0},
  {&__pyx_kp_u_s_Failed_to_load_MJB, __pyx_k_s_Failed_to_load_MJB, sizeof(__pyx_k_s_Failed_to_load_MJB), 0, 1, 0, 0},
  {&__pyx_kp_u_s_Failed_to_load_XML_from_file, __pyx_k_s_Failed_to_load_XML_from_file, sizeof(__pyx_k_s_Failed_to_load_XML_from_file), 0, 1, 0, 0},
  {&__pyx_n_s_save_locals_str_array, __pyx_k_save_locals_str_array, sizeof(__pyx_k_save_locals_str_array), 0, 0, 1, 1},
  {&__pyx_n_s_scale, __pyx_k_scale, sizeof(__pyx_k_scale), 0, 0, 1, 1},
  {&__pyx_n_s_schema_example, __pyx_k_schema_example, sizeof(__pyx_k_schema_example), 0, 0, 1, 1},
  {&__pyx_n_s_schema_val, __pyx_k_schema_val, sizeof(__pyx_k_schema_val), 0, 0, 1, 1},
  {&__pyx_n_s_scl, __pyx_k_scl, sizeof(__pyx_k_scl), 0, 0, 1, 1},
  {&__pyx_n_s_scn, __pyx_k_scn, sizeof(__pyx_k_scn), 0, 0, 1, 1},
  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
  {&__pyx_kp_s_self_ptr_cannot_be_converted_to, __pyx_k_self_ptr_cannot_be_converted_to, sizeof(__pyx_k_self_ptr_cannot_be_converted_to), 0, 0, 1, 0},
  {&__pyx_n_s_selpnt, __pyx_k_selpnt, sizeof(__pyx_k_selpnt), 0, 0, 1, 1},
  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
  {&__pyx_n_s_sensor_name2id, __pyx_k_sensor_name2id, sizeof(__pyx_k_sensor_name2id), 0, 0, 1, 1},
  {&__pyx_n_s_setAttribute, __pyx_k_setAttribute, sizeof(__pyx_k_setAttribute), 0, 0, 1, 1},
  {&__pyx_n_s_set_buffer_size, __pyx_k_set_buffer_size, sizeof(__pyx_k_set_buffer_size), 0, 0, 1, 1},
  {&__pyx_n_s_set_error_callback, __pyx_k_set_error_callback, sizeof(__pyx_k_set_error_callback), 0, 0, 1, 1},
  {&__pyx_n_s_set_mujoco_buffers, __pyx_k_set_mujoco_buffers, sizeof(__pyx_k_set_mujoco_buffers), 0, 0, 1, 1},
  {&__pyx_n_s_set_substep_callback, __pyx_k_set_substep_callback, sizeof(__pyx_k_set_substep_callback), 0, 0, 1, 1},
  {&__pyx_n_s_set_userdata_names, __pyx_k_set_userdata_names, sizeof(__pyx_k_set_userdata_names), 0, 0, 1, 1},
  {&__pyx_n_s_set_warning_callback, __pyx_k_set_warning_callback, sizeof(__pyx_k_set_warning_callback), 0, 0, 1, 1},
  {&__pyx_n_s_set_window_size, __pyx_k_set_window_size, sizeof(__pyx_k_set_window_size), 0, 0, 1, 1},
  {&__pyx_n_s_set_window_size_2, __pyx_k_set_window_size_2, sizeof(__pyx_k_set_window_size_2), 0, 0, 1, 1},
  {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
  {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
  {&__pyx_n_s_setup_opengl_context, __pyx_k_setup_opengl_context, sizeof(__pyx_k_setup_opengl_context), 0, 0, 1, 1},
  {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
  {&__pyx_n_s_sim, __pyx_k_sim, sizeof(__pyx_k_sim), 0, 0, 1, 1},
  {&__pyx_n_s_site, __pyx_k_site, sizeof(__pyx_k_site), 0, 0, 1, 1},
  {&__pyx_n_s_site_jacp, __pyx_k_site_jacp, sizeof(__pyx_k_site_jacp), 0, 0, 1, 1},
  {&__pyx_n_s_site_jacr, __pyx_k_site_jacr, sizeof(__pyx_k_site_jacr), 0, 0, 1, 1},
  {&__pyx_n_s_site_name2id, __pyx_k_site_name2id, sizeof(__pyx_k_site_name2id), 0, 0, 1, 1},
  {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1},
  {&__pyx_n_s_skipsensorenergy, __pyx_k_skipsensorenergy, sizeof(__pyx_k_skipsensorenergy), 0, 0, 1, 1},
  {&__pyx_n_s_skipstage, __pyx_k_skipstage, sizeof(__pyx_k_skipstage), 0, 0, 1, 1},
  {&__pyx_n_s_slots, __pyx_k_slots, sizeof(__pyx_k_slots), 0, 0, 1, 1},
  {&__pyx_n_s_solimp, __pyx_k_solimp, sizeof(__pyx_k_solimp), 0, 0, 1, 1},
  {&__pyx_n_s_solref, __pyx_k_solref, sizeof(__pyx_k_solref), 0, 0, 1, 1},
  {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1},
  {&__pyx_n_s_src, __pyx_k_src, sizeof(__pyx_k_src), 0, 0, 1, 1},
  {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
  {&__pyx_n_s_stat, __pyx_k_stat, sizeof(__pyx_k_stat), 0, 0, 1, 1},
  {&__pyx_n_s_state_tuple, __pyx_k_state_tuple, sizeof(__pyx_k_state_tuple), 0, 0, 1, 1},
  {&__pyx_n_s_staticmethod, __pyx_k_staticmethod, sizeof(__pyx_k_staticmethod), 0, 0, 1, 1},
  {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1},
  {&__pyx_n_s_step_udd, __pyx_k_step_udd, sizeof(__pyx_k_step_udd), 0, 0, 1, 1},
  {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1},
  {&__pyx_n_s_str, __pyx_k_str, sizeof(__pyx_k_str), 0, 0, 1, 1},
  {&__pyx_n_s_str_array, __pyx_k_str_array, sizeof(__pyx_k_str_array), 0, 0, 1, 1},
  {&__pyx_kp_s_strided_and_direct, __pyx_k_strided_and_direct, sizeof(__pyx_k_strided_and_direct), 0, 0, 1, 0},
  {&__pyx_kp_s_strided_and_direct_or_indirect, __pyx_k_strided_and_direct_or_indirect, sizeof(__pyx_k_strided_and_direct_or_indirect), 0, 0, 1, 0},
  {&__pyx_kp_s_strided_and_indirect, __pyx_k_strided_and_indirect, sizeof(__pyx_k_strided_and_indirect), 0, 0, 1, 0},
  {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
  {&__pyx_n_s_struct, __pyx_k_struct, sizeof(__pyx_k_struct), 0, 0, 1, 1},
  {&__pyx_n_s_substep_callback, __pyx_k_substep_callback, sizeof(__pyx_k_substep_callback), 0, 0, 1, 1},
  {&__pyx_n_s_suffix, __pyx_k_suffix, sizeof(__pyx_k_suffix), 0, 0, 1, 1},
  {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1},
  {&__pyx_n_s_swap_buffers, __pyx_k_swap_buffers, sizeof(__pyx_k_swap_buffers), 0, 0, 1, 1},
  {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
  {&__pyx_n_s_tagName, __pyx_k_tagName, sizeof(__pyx_k_tagName), 0, 0, 1, 1},
  {&__pyx_n_s_target_height, __pyx_k_target_height, sizeof(__pyx_k_target_height), 0, 0, 1, 1},
  {&__pyx_n_s_target_width, __pyx_k_target_width, sizeof(__pyx_k_target_width), 0, 0, 1, 1},
  {&__pyx_n_s_td, __pyx_k_td, sizeof(__pyx_k_td), 0, 0, 1, 1},
  {&__pyx_n_s_tempfile, __pyx_k_tempfile, sizeof(__pyx_k_tempfile), 0, 0, 1, 1},
  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
  {&__pyx_n_s_texid, __pyx_k_texid, sizeof(__pyx_k_texid), 0, 0, 1, 1},
  {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1},
  {&__pyx_n_s_text1, __pyx_k_text1, sizeof(__pyx_k_text1), 0, 0, 1, 1},
  {&__pyx_n_s_text2, __pyx_k_text2, sizeof(__pyx_k_text2), 0, 0, 1, 1},
  {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1},
  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
  {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1},
  {&__pyx_n_u_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 1, 0, 1},
  {&__pyx_kp_u_time_qpos_qvel_act_udd_state, __pyx_k_time_qpos_qvel_act_udd_state, sizeof(__pyx_k_time_qpos_qvel_act_udd_state), 0, 1, 0, 0},
  {&__pyx_n_s_timestep, __pyx_k_timestep, sizeof(__pyx_k_timestep), 0, 0, 1, 1},
  {&__pyx_n_s_toprettyxml, __pyx_k_toprettyxml, sizeof(__pyx_k_toprettyxml), 0, 0, 1, 1},
  {&__pyx_n_s_torque, __pyx_k_torque, sizeof(__pyx_k_torque), 0, 0, 1, 1},
  {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1},
  {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1},
  {&__pyx_n_s_udd_callback, __pyx_k_udd_callback, sizeof(__pyx_k_udd_callback), 0, 0, 1, 1},
  {&__pyx_n_s_udd_state, __pyx_k_udd_state, sizeof(__pyx_k_udd_state), 0, 0, 1, 1},
  {&__pyx_n_s_uint16, __pyx_k_uint16, sizeof(__pyx_k_uint16), 0, 0, 1, 1},
  {&__pyx_n_s_uint8, __pyx_k_uint8, sizeof(__pyx_k_uint8), 0, 0, 1, 1},
  {&__pyx_kp_s_unable_to_allocate_array_data, __pyx_k_unable_to_allocate_array_data, sizeof(__pyx_k_unable_to_allocate_array_data), 0, 0, 1, 0},
  {&__pyx_kp_s_unable_to_allocate_shape_and_str, __pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 0, 1, 0},
  {&__pyx_n_s_unflatten_dict, __pyx_k_unflatten_dict, sizeof(__pyx_k_unflatten_dict), 0, 0, 1, 1},
  {&__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_k_unknown_dtype_code_in_numpy_pxd, sizeof(__pyx_k_unknown_dtype_code_in_numpy_pxd), 0, 1, 0, 0},
  {&__pyx_n_s_unmap, __pyx_k_unmap, sizeof(__pyx_k_unmap), 0, 0, 1, 1},
  {&__pyx_n_s_unpack, __pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 0, 1, 1},
  {&__pyx_n_s_unregister, __pyx_k_unregister, sizeof(__pyx_k_unregister), 0, 0, 1, 1},
  {&__pyx_n_s_up, __pyx_k_up, sizeof(__pyx_k_up), 0, 0, 1, 1},
  {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
  {&__pyx_n_s_update_offscreen_size, __pyx_k_update_offscreen_size, sizeof(__pyx_k_update_offscreen_size), 0, 0, 1, 1},
  {&__pyx_n_s_use_cuda, __pyx_k_use_cuda, sizeof(__pyx_k_use_cuda), 0, 0, 1, 1},
  {&__pyx_n_s_use_cuda_2, __pyx_k_use_cuda_2, sizeof(__pyx_k_use_cuda_2), 0, 0, 1, 1},
  {&__pyx_n_s_userdata_name2id, __pyx_k_userdata_name2id, sizeof(__pyx_k_userdata_name2id), 0, 0, 1, 1},
  {&__pyx_n_s_userdata_names, __pyx_k_userdata_names, sizeof(__pyx_k_userdata_names), 0, 0, 1, 1},
  {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1},
  {&__pyx_n_s_val, __pyx_k_val, sizeof(__pyx_k_val), 0, 0, 1, 1},
  {&__pyx_n_s_val_array, __pyx_k_val_array, sizeof(__pyx_k_val_array), 0, 0, 1, 1},
  {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
  {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
  {&__pyx_n_s_vec, __pyx_k_vec, sizeof(__pyx_k_vec), 0, 0, 1, 1},
  {&__pyx_n_s_vec1, __pyx_k_vec1, sizeof(__pyx_k_vec1), 0, 0, 1, 1},
  {&__pyx_n_s_vec2, __pyx_k_vec2, sizeof(__pyx_k_vec2), 0, 0, 1, 1},
  {&__pyx_n_s_vel, __pyx_k_vel, sizeof(__pyx_k_vel), 0, 0, 1, 1},
  {&__pyx_n_s_vel0, __pyx_k_vel0, sizeof(__pyx_k_vel0), 0, 0, 1, 1},
  {&__pyx_n_s_vfs, __pyx_k_vfs, sizeof(__pyx_k_vfs), 0, 0, 1, 1},
  {&__pyx_n_s_viewport, __pyx_k_viewport, sizeof(__pyx_k_viewport), 0, 0, 1, 1},
  {&__pyx_n_s_vis, __pyx_k_vis, sizeof(__pyx_k_vis), 0, 0, 1, 1},
  {&__pyx_n_s_vopt, __pyx_k_vopt, sizeof(__pyx_k_vopt), 0, 0, 1, 1},
  {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1},
  {&__pyx_n_s_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 0, 1, 1},
  {&__pyx_n_u_wb, __pyx_k_wb, sizeof(__pyx_k_wb), 0, 1, 0, 1},
  {&__pyx_n_s_width, __pyx_k_width, sizeof(__pyx_k_width), 0, 0, 1, 1},
  {&__pyx_n_s_width_2, __pyx_k_width_2, sizeof(__pyx_k_width_2), 0, 0, 1, 1},
  {&__pyx_n_s_window, __pyx_k_window, sizeof(__pyx_k_window), 0, 0, 1, 1},
  {&__pyx_n_u_window, __pyx_k_window, sizeof(__pyx_k_window), 0, 1, 0, 1},
  {&__pyx_n_s_window_hint, __pyx_k_window_hint, sizeof(__pyx_k_window_hint), 0, 0, 1, 1},
  {&__pyx_n_s_window_should_close, __pyx_k_window_should_close, sizeof(__pyx_k_window_should_close), 0, 0, 1, 1},
  {&__pyx_n_s_with_udd, __pyx_k_with_udd, sizeof(__pyx_k_with_udd), 0, 0, 1, 1},
  {&__pyx_n_s_wrap_mujoco_warning, __pyx_k_wrap_mujoco_warning, sizeof(__pyx_k_wrap_mujoco_warning), 0, 0, 1, 1},
  {&__pyx_n_s_wrap_mujoco_warning___enter, __pyx_k_wrap_mujoco_warning___enter, sizeof(__pyx_k_wrap_mujoco_warning___enter), 0, 0, 1, 1},
  {&__pyx_n_s_wrap_mujoco_warning___exit, __pyx_k_wrap_mujoco_warning___exit, sizeof(__pyx_k_wrap_mujoco_warning___exit), 0, 0, 1, 1},
  {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1},
  {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
  {&__pyx_n_s_xmat, __pyx_k_xmat, sizeof(__pyx_k_xmat), 0, 0, 1, 1},
  {&__pyx_n_u_xml, __pyx_k_xml, sizeof(__pyx_k_xml), 0, 1, 0, 1},
  {&__pyx_kp_u_xml_2, __pyx_k_xml_2, sizeof(__pyx_k_xml_2), 0, 1, 0, 0},
  {&__pyx_n_s_xml_dom, __pyx_k_xml_dom, sizeof(__pyx_k_xml_dom), 0, 0, 1, 1},
  {&__pyx_n_s_xml_str, __pyx_k_xml_str, sizeof(__pyx_k_xml_str), 0, 0, 1, 1},
  {&__pyx_n_s_xpos, __pyx_k_xpos, sizeof(__pyx_k_xpos), 0, 0, 1, 1},
  {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1},
  {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
  {0, 0, 0, 0, 0, 0, 0}
};
static int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 18, __pyx_L1_error)
  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 33, __pyx_L1_error)
  __pyx_builtin_staticmethod = __Pyx_GetBuiltinName(__pyx_n_s_staticmethod); if (!__pyx_builtin_staticmethod) __PYX_ERR(0, 51, __pyx_L1_error)
  __pyx_builtin_property = __Pyx_GetBuiltinName(__pyx_n_s_property); if (!__pyx_builtin_property) __PYX_ERR(1, 272, __pyx_L1_error)
  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(2, 27, __pyx_L1_error)
  __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(3, 20, __pyx_L1_error)
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(4, 2, __pyx_L1_error)
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(3, 894, __pyx_L1_error)
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(3, 992, __pyx_L1_error)
  __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) __PYX_ERR(3, 1013, __pyx_L1_error)
  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(3, 1028, __pyx_L1_error)
  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 26, __pyx_L1_error)
  __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 78, __pyx_L1_error)
  __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) __PYX_ERR(5, 316, __pyx_L1_error)
  __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(6, 12, __pyx_L1_error)
  __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(1, 262, __pyx_L1_error)
  __pyx_builtin_OverflowError = __Pyx_GetBuiltinName(__pyx_n_s_OverflowError); if (!__pyx_builtin_OverflowError) __PYX_ERR(4, 81, __pyx_L1_error)
  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(4, 94, __pyx_L1_error)
  __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(4, 398, __pyx_L1_error)
  __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(4, 601, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

static int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple_)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__2);
  __Pyx_GIVEREF(__pyx_tuple__2);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__3);
  __Pyx_GIVEREF(__pyx_tuple__3);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__5);
  __Pyx_GIVEREF(__pyx_tuple__5);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__6);
  __Pyx_GIVEREF(__pyx_tuple__6);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__7);
  __Pyx_GIVEREF(__pyx_tuple__7);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__8);
  __Pyx_GIVEREF(__pyx_tuple__8);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__9);
  __Pyx_GIVEREF(__pyx_tuple__9);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__10);
  __Pyx_GIVEREF(__pyx_tuple__10);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__20);
  __Pyx_GIVEREF(__pyx_tuple__20);

  /* "mujoco_py/generated/wrappers.pxi":1009
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.xml')
 *             with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *                 ret = mj_saveLastXML(filename.encode(), self.ptr, errstr, 300)
 *             if ret == 0:
 */
  __pyx_tuple__21 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(3, 1009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);

  /* "mujoco_py/generated/wrappers.pxi":1007
 *         cdef char errstr[300]
 *         cdef int ret
 *         with TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *             filename = os.path.join(td, 'model.xml')
 *             with wrap_mujoco_warning():
 */
  __pyx_tuple__22 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(3, 1007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__22);
  __Pyx_GIVEREF(__pyx_tuple__22);
  __pyx_tuple__23 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(3, 1007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__23);
  __Pyx_GIVEREF(__pyx_tuple__23);

  /* "mujoco_py/generated/wrappers.pxi":1018
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 *             with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *                 mj_saveModel(self.ptr, filename.encode(), NULL, 0)
 *             return open(filename, 'rb').read()
 */
  __pyx_tuple__24 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(3, 1018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__24);
  __Pyx_GIVEREF(__pyx_tuple__24);

  /* "mujoco_py/generated/wrappers.pxi":1016
 * 
 *     def get_mjb(self):
 *         with TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *             filename = os.path.join(td, 'model.mjb')
 *             with wrap_mujoco_warning():
 */
  __pyx_tuple__25 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(3, 1016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);
  __pyx_tuple__26 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(3, 1016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 */
  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_self_ptr_cannot_be_converted_to); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__27);
  __Pyx_GIVEREF(__pyx_tuple__27);

  /* "(tree fragment)":4
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_self_ptr_cannot_be_converted_to); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__28);
  __Pyx_GIVEREF(__pyx_tuple__28);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__29);
  __Pyx_GIVEREF(__pyx_tuple__29);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__30);
  __Pyx_GIVEREF(__pyx_tuple__30);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__31);
  __Pyx_GIVEREF(__pyx_tuple__31);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__33);
  __Pyx_GIVEREF(__pyx_tuple__33);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__34);
  __Pyx_GIVEREF(__pyx_tuple__34);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__35);
  __Pyx_GIVEREF(__pyx_tuple__35);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__36);
  __Pyx_GIVEREF(__pyx_tuple__36);

  /* "mujoco_py/generated/wrappers.pxi":2326
 * 
 *     def get_xpos(self, name):
 *         raise RuntimeError("get_body_xpos should be used instead of get_xpos")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_xquat(self, name):
 */
  __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_get_body_xpos_should_be_used_ins); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(3, 2326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__37);
  __Pyx_GIVEREF(__pyx_tuple__37);

  /* "mujoco_py/generated/wrappers.pxi":2333
 * 
 *     def get_xquat(self, name):
 *         raise RuntimeError("get_body_xquat should be used instead of get_xquat")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_xmat(self, name):
 */
  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_get_body_xquat_should_be_used_in); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(3, 2333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__38);
  __Pyx_GIVEREF(__pyx_tuple__38);

  /* "mujoco_py/generated/wrappers.pxi":2337
 *     def get_body_xmat(self, name):
 *         id = self._model.body_name2id(name)
 *         return self._xmat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_xmat(self, name):
 */
  __pyx_tuple__39 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_3); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(3, 2337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__39);
  __Pyx_GIVEREF(__pyx_tuple__39);
  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_tuple__39); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(3, 2337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__40);
  __Pyx_GIVEREF(__pyx_tuple__40);

  /* "mujoco_py/generated/wrappers.pxi":2340
 * 
 *     def get_xmat(self, name):
 *         raise RuntimeError("get_body_xmat should be used instead of get_xmat")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_xipos(self, name):
 */
  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_u_get_body_xmat_should_be_used_ins); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(3, 2340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__41);
  __Pyx_GIVEREF(__pyx_tuple__41);

  /* "mujoco_py/generated/wrappers.pxi":2347
 * 
 *     def get_xipos(self, name):
 *         raise RuntimeError("get_body_xipos should be used instead of get_xipos")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_ximat(self, name):
 */
  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_u_get_body_xipos_should_be_used_in); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(3, 2347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__42);
  __Pyx_GIVEREF(__pyx_tuple__42);

  /* "mujoco_py/generated/wrappers.pxi":2351
 *     def get_body_ximat(self, name):
 *         id = self._model.body_name2id(name)
 *         return self._ximat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_ximat(self, name):
 */
  __pyx_tuple__43 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_3); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(3, 2351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__43);
  __Pyx_GIVEREF(__pyx_tuple__43);
  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_tuple__43); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(3, 2351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__44);
  __Pyx_GIVEREF(__pyx_tuple__44);

  /* "mujoco_py/generated/wrappers.pxi":2354
 * 
 *     def get_ximat(self, name):
 *         raise RuntimeError("get_body_ximat should be used instead of get_ximat")             # <<<<<<<<<<<<<<
 * 
 *     def get_body_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 */
  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_u_get_body_ximat_should_be_used_in); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(3, 2354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__45);
  __Pyx_GIVEREF(__pyx_tuple__45);

  /* "mujoco_py/generated/wrappers.pxi":2389
 * 
 *     def get_xanchor(self, name):
 *         raise RuntimeError("get_joint_xanchor should be used instead of get_xanchor")             # <<<<<<<<<<<<<<
 * 
 *     def get_joint_xaxis(self, name):
 */
  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_u_get_joint_xanchor_should_be_used); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(3, 2389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__46);
  __Pyx_GIVEREF(__pyx_tuple__46);

  /* "mujoco_py/generated/wrappers.pxi":2396
 * 
 *     def get_xaxis(self, name):
 *         raise RuntimeError("get_joint_xaxis should be used instead of get_xaxis")             # <<<<<<<<<<<<<<
 * 
 *     def get_geom_xpos(self, name):
 */
  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_u_get_joint_xaxis_should_be_used_i); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(3, 2396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__47);
  __Pyx_GIVEREF(__pyx_tuple__47);

  /* "mujoco_py/generated/wrappers.pxi":2404
 *     def get_geom_xmat(self, name):
 *         id = self._model.geom_name2id(name)
 *         return self._geom_xmat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_geom_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 */
  __pyx_tuple__48 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_3); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(3, 2404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__48);
  __Pyx_GIVEREF(__pyx_tuple__48);
  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_tuple__48); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(3, 2404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);

  /* "mujoco_py/generated/wrappers.pxi":2440
 *     def get_site_xmat(self, name):
 *         id = self._model.site_name2id(name)
 *         return self._site_xmat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_site_jacp(self, name, np.ndarray[double, ndim=1, mode="c"] jacp = None):
 */
  __pyx_tuple__50 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_3); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(3, 2440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__50);
  __Pyx_GIVEREF(__pyx_tuple__50);
  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_tuple__50); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(3, 2440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__51);
  __Pyx_GIVEREF(__pyx_tuple__51);

  /* "mujoco_py/generated/wrappers.pxi":2475
 * 
 *     def get_cam_xpos(self, name):
 *         raise RuntimeError("get_camera_xpos should be used instead of get_cam_xpos")             # <<<<<<<<<<<<<<
 * 
 *     def get_camera_xmat(self, name):
 */
  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_u_get_camera_xpos_should_be_used_i); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(3, 2475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__52);
  __Pyx_GIVEREF(__pyx_tuple__52);

  /* "mujoco_py/generated/wrappers.pxi":2479
 *     def get_camera_xmat(self, name):
 *         id = self._model.camera_name2id(name)
 *         return self._cam_xmat[id].reshape((3, 3))             # <<<<<<<<<<<<<<
 * 
 *     def get_cam_xmat(self, name):
 */
  __pyx_tuple__53 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_3); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(3, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__53);
  __Pyx_GIVEREF(__pyx_tuple__53);
  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_tuple__53); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(3, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__54);
  __Pyx_GIVEREF(__pyx_tuple__54);

  /* "mujoco_py/generated/wrappers.pxi":2482
 * 
 *     def get_cam_xmat(self, name):
 *         raise RuntimeError("get_camera_xmat should be used instead of get_cam_xmat")             # <<<<<<<<<<<<<<
 * 
 *     def get_light_xpos(self, name):
 */
  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_u_get_camera_xmat_should_be_used_i); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(3, 2482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__55);
  __Pyx_GIVEREF(__pyx_tuple__55);

  /* "mujoco_py/generated/wrappers.pxi":2497
 * 
 *     def get_sensordata(self, name):
 *         raise RuntimeError("get_sensor should be used instead of get_sensordata")             # <<<<<<<<<<<<<<
 * 
 *     def get_userdata(self, name):
 */
  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_u_get_sensor_should_be_used_instea); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(3, 2497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__56);
  __Pyx_GIVEREF(__pyx_tuple__56);

  /* "mujoco_py/generated/wrappers.pxi":2744
 *     @property
 *     def xpos(self):
 *         raise RuntimeError("body_xpos should be used instead of xpos")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_u_body_xpos_should_be_used_instead); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(3, 2744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__57);
  __Pyx_GIVEREF(__pyx_tuple__57);

  /* "mujoco_py/generated/wrappers.pxi":2749
 *     @property
 *     def xquat(self):
 *         raise RuntimeError("body_xquat should be used instead of xquat")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_u_body_xquat_should_be_used_instea); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(3, 2749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__58);
  __Pyx_GIVEREF(__pyx_tuple__58);

  /* "mujoco_py/generated/wrappers.pxi":2754
 *     @property
 *     def xmat(self):
 *         raise RuntimeError("body_xmat should be used instead of xmat")             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_u_body_xmat_should_be_used_instead); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(3, 2754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);

  /* "mujoco_py/generated/wrappers.pxi":2841
 *     @property
 *     def efc_pos(self):
 *         raise RuntimeError("active_contacts_efc_pos should be used instead of efc_pos")             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_u_active_contacts_efc_pos_should_b); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(3, 2841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__60);
  __Pyx_GIVEREF(__pyx_tuple__60);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 */
  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_self_ptr_cannot_be_converted_to); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__61);
  __Pyx_GIVEREF(__pyx_tuple__61);

  /* "(tree fragment)":4
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.ptr cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_self_ptr_cannot_be_converted_to); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__62);
  __Pyx_GIVEREF(__pyx_tuple__62);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__63);
  __Pyx_GIVEREF(__pyx_tuple__63);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__64);
  __Pyx_GIVEREF(__pyx_tuple__64);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__65);
  __Pyx_GIVEREF(__pyx_tuple__65);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__66);
  __Pyx_GIVEREF(__pyx_tuple__66);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__67);
  __Pyx_GIVEREF(__pyx_tuple__67);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__68);
  __Pyx_GIVEREF(__pyx_tuple__68);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__69);
  __Pyx_GIVEREF(__pyx_tuple__69);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__70);
  __Pyx_GIVEREF(__pyx_tuple__70);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__71);
  __Pyx_GIVEREF(__pyx_tuple__71);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__72);
  __Pyx_GIVEREF(__pyx_tuple__72);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__73);
  __Pyx_GIVEREF(__pyx_tuple__73);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__74 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__74);
  __Pyx_GIVEREF(__pyx_tuple__74);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__75);
  __Pyx_GIVEREF(__pyx_tuple__75);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__76 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__76);
  __Pyx_GIVEREF(__pyx_tuple__76);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__77);
  __Pyx_GIVEREF(__pyx_tuple__77);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__78);
  __Pyx_GIVEREF(__pyx_tuple__78);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__79);
  __Pyx_GIVEREF(__pyx_tuple__79);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__80 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__80);
  __Pyx_GIVEREF(__pyx_tuple__80);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__81 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__81);
  __Pyx_GIVEREF(__pyx_tuple__81);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__82 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__82);
  __Pyx_GIVEREF(__pyx_tuple__82);

  /* "mujoco_py/opengl_context.pyx":10
 *     mujoco_path, _ = discover_mujoco()
 *     bin_path = os.path.join(mujoco_path, "bin")
 *     old_dyld_library_path = os.getenv("DYLD_LIBRARY_PATH", "")             # <<<<<<<<<<<<<<
 *     os.environ["DYLD_LIBRARY_PATH"] = "{}:{}".format(
 *         bin_path, old_dyld_library_path)
 */
  __pyx_tuple__84 = PyTuple_Pack(2, __pyx_n_u_DYLD_LIBRARY_PATH, __pyx_kp_u__83); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__84);
  __Pyx_GIVEREF(__pyx_tuple__84);

  /* "mujoco_py/opengl_context.pyx":57
 * 
 *         if 'glfw' not in globals():
 *             raise GlfwError("GLFW not installed")             # <<<<<<<<<<<<<<
 * 
 *         glfw.set_error_callback(GlfwContext._glfw_error_callback)
 */
  __pyx_tuple__86 = PyTuple_Pack(1, __pyx_kp_u_GLFW_not_installed); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(0, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__86);
  __Pyx_GIVEREF(__pyx_tuple__86);

  /* "mujoco_py/opengl_context.pyx":64
 *         glfw.init()
 *         if not glfw.init():
 *             raise GlfwError("Failed to initialize GLFW")             # <<<<<<<<<<<<<<
 * 
 *         GlfwContext._GLFW_IS_INITIALIZED = True
 */
  __pyx_tuple__87 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_initialize_GLFW); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__87);
  __Pyx_GIVEREF(__pyx_tuple__87);

  /* "mujoco_py/opengl_context.pyx":78
 *     def _create_window(self, offscreen):
 *         if offscreen:
 *             print("Creating offscreen glfw")             # <<<<<<<<<<<<<<
 *             glfw.window_hint(glfw.VISIBLE, 0)
 *             glfw.window_hint(glfw.DOUBLEBUFFER, 0)
 */
  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_kp_u_Creating_offscreen_glfw); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__88);
  __Pyx_GIVEREF(__pyx_tuple__88);

  /* "mujoco_py/opengl_context.pyx":83
 *             init_width, init_height = self._INIT_WIDTH, self._INIT_HEIGHT
 *         else:
 *             print("Creating window glfw")             # <<<<<<<<<<<<<<
 *             glfw.window_hint(glfw.SAMPLES, 4)
 *             glfw.window_hint(glfw.VISIBLE, 1)
 */
  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_kp_u_Creating_window_glfw); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__89);
  __Pyx_GIVEREF(__pyx_tuple__89);

  /* "mujoco_py/opengl_context.pyx":97
 * 
 *         if not window:
 *             raise GlfwError("Failed to create GLFW window")             # <<<<<<<<<<<<<<
 * 
 *         return window
 */
  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_create_GLFW_window); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__90);
  __Pyx_GIVEREF(__pyx_tuple__90);

  /* "mujoco_py/opengl_context.pyx":128
 *         res = initOpenGL(device_id)
 *         if res != 1:
 *             raise RuntimeError("Failed to initialize OpenGL")             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_initialize_OpenGL); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(0, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__91);
  __Pyx_GIVEREF(__pyx_tuple__91);

  /* "mujoco_py/opengl_context.pyx":140
 *         res = setOpenGLBufferSize(self.device_id, width, height)
 *         if res != 1:
 *             raise RuntimeError("Failed to set buffer size")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__92 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_set_buffer_size); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__92);
  __Pyx_GIVEREF(__pyx_tuple__92);

  /* "mujoco_py/mjsim.pyx":74
 *         self.model = model
 *         if data is None:
 *             with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *                 _data = mj_makeData(self.model.ptr)
 *             if _data == NULL:
 */
  __pyx_tuple__93 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(5, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__93);
  __Pyx_GIVEREF(__pyx_tuple__93);

  /* "mujoco_py/mjsim.pyx":77
 *                 _data = mj_makeData(self.model.ptr)
 *             if _data == NULL:
 *                 raise Exception('mj_makeData failed!')             # <<<<<<<<<<<<<<
 *             self.data = WrapMjData(_data, self.model)
 *         else:
 */
  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_kp_u_mj_makeData_failed); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(5, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__94);
  __Pyx_GIVEREF(__pyx_tuple__94);

  /* "mujoco_py/mjsim.pyx":95
 *         Resets the simulation data and clears buffers.
 *         """
 *         with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *             mj_resetData(self.model.ptr, self.data.ptr)
 * 
 */
  __pyx_tuple__95 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(5, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__95);
  __Pyx_GIVEREF(__pyx_tuple__95);

  /* "mujoco_py/mjsim.pyx":105
 *         Computes the forward kinematics. Calls ``mj_forward`` internally.
 *         """
 *         with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *             mj_forward(self.model.ptr, self.data.ptr)
 * 
 */
  __pyx_tuple__96 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(5, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__96);
  __Pyx_GIVEREF(__pyx_tuple__96);

  /* "mujoco_py/mjsim.pyx":119
 *             self.step_udd()
 * 
 *         with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *             for _ in range(self.nsubsteps):
 *                 self.substep_callback()
 */
  __pyx_tuple__97 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(5, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__97);
  __Pyx_GIVEREF(__pyx_tuple__97);

  /* "mujoco_py/mjsim.pyx":149
 * 
 *         if mode == 'offscreen':
 *             with _MjSim_render_lock:             # <<<<<<<<<<<<<<
 *                 if self._render_context_offscreen is None:
 *                     render_context = MjRenderContextOffscreen(
 */
  __pyx_tuple__98 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(5, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__98);
  __Pyx_GIVEREF(__pyx_tuple__98);
  __pyx_tuple__99 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(5, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__99);
  __Pyx_GIVEREF(__pyx_tuple__99);

  /* "mujoco_py/mjsim.pyx":170
 * 
 *         else:
 *             raise ValueError("Mode must be either 'window' or 'offscreen'.")             # <<<<<<<<<<<<<<
 * 
 *     def add_render_context(self, render_context):
 */
  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_kp_u_Mode_must_be_either_window_or_of); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(5, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__100);
  __Pyx_GIVEREF(__pyx_tuple__100);

  /* "mujoco_py/mjsim.pyx":265
 *         """
 *         self.data.time = value.time
 *         self.data.qpos[:] = np.copy(value.qpos)             # <<<<<<<<<<<<<<
 *         self.data.qvel[:] = np.copy(value.qvel)
 *         if self.model.na != 0:
 */
  __pyx_slice__101 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__101)) __PYX_ERR(5, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__101);
  __Pyx_GIVEREF(__pyx_slice__101);

  /* "mujoco_py/mjsim.pyx":266
 *         self.data.time = value.time
 *         self.data.qpos[:] = np.copy(value.qpos)
 *         self.data.qvel[:] = np.copy(value.qvel)             # <<<<<<<<<<<<<<
 *         if self.model.na != 0:
 *             self.data.act[:] = np.copy(value.act)
 */
  __pyx_slice__102 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__102)) __PYX_ERR(5, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__102);
  __Pyx_GIVEREF(__pyx_slice__102);

  /* "mujoco_py/mjsim.pyx":268
 *         self.data.qvel[:] = np.copy(value.qvel)
 *         if self.model.na != 0:
 *             self.data.act[:] = np.copy(value.act)             # <<<<<<<<<<<<<<
 *         self.udd_state = copy.deepcopy(value.udd_state)
 * 
 */
  __pyx_slice__103 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__103)) __PYX_ERR(5, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__103);
  __Pyx_GIVEREF(__pyx_slice__103);

  /* "mujoco_py/mjsim.pyx":276
 * 
 *         self.data.time = state.time
 *         self.data.qpos[:] = state.qpos             # <<<<<<<<<<<<<<
 *         self.data.qvel[:] = state.qvel
 *         if self.model.na != 0:
 */
  __pyx_slice__104 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__104)) __PYX_ERR(5, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__104);
  __Pyx_GIVEREF(__pyx_slice__104);

  /* "mujoco_py/mjsim.pyx":277
 *         self.data.time = state.time
 *         self.data.qpos[:] = state.qpos
 *         self.data.qvel[:] = state.qvel             # <<<<<<<<<<<<<<
 *         if self.model.na != 0:
 *             self.data.act[:] = state.act
 */
  __pyx_slice__105 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__105)) __PYX_ERR(5, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__105);
  __Pyx_GIVEREF(__pyx_slice__105);

  /* "mujoco_py/mjsim.pyx":279
 *         self.data.qvel[:] = state.qvel
 *         if self.model.na != 0:
 *             self.data.act[:] = state.act             # <<<<<<<<<<<<<<
 *         self.udd_state = state.udd_state
 * 
 */
  __pyx_slice__106 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__106)) __PYX_ERR(5, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__106);
  __Pyx_GIVEREF(__pyx_slice__106);

  /* "mujoco_py/mjsim.pyx":310
 *         assert mujoco_node.tagName == 'mujoco'
 * 
 *         keyframe_el = dom.createElement('keyframe')             # <<<<<<<<<<<<<<
 *         key_el = dom.createElement('key')
 *         keyframe_el.appendChild(key_el)
 */
  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_n_u_keyframe); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(5, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__108);
  __Pyx_GIVEREF(__pyx_tuple__108);

  /* "mujoco_py/mjsim.pyx":311
 * 
 *         keyframe_el = dom.createElement('keyframe')
 *         key_el = dom.createElement('key')             # <<<<<<<<<<<<<<
 *         keyframe_el.appendChild(key_el)
 *         mujoco_node.appendChild(keyframe_el)
 */
  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_n_u_key); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(5, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__109);
  __Pyx_GIVEREF(__pyx_tuple__109);

  /* "mujoco_py/mjsim.pyx":315
 *         mujoco_node.appendChild(keyframe_el)
 * 
 *         def str_array(arr):             # <<<<<<<<<<<<<<
 *             return " ".join(map(str, arr))
 * 
 */
  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_n_s_arr); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(5, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__110);
  __Pyx_GIVEREF(__pyx_tuple__110);
  __pyx_codeobj__111 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjsim_pyx, __pyx_n_s_str_array, 315, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(5, 315, __pyx_L1_error)

  /* "mujoco_py/mjsim.pyx":325
 * 
 *         if not keep_inertials:
 *             for element in dom.getElementsByTagName('inertial'):             # <<<<<<<<<<<<<<
 *                 element.parentNode.removeChild(element)
 * 
 */
  __pyx_tuple__112 = PyTuple_Pack(1, __pyx_n_u_inertial); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(5, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__112);
  __Pyx_GIVEREF(__pyx_tuple__112);

  /* "mujoco_py/mjsim.pyx":336
 *             file.write(new_model.get_mjb())
 *         else:
 *             raise ValueError("Unsupported format. Valid ones are 'xml' and 'mjb'")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__113 = PyTuple_Pack(1, __pyx_kp_u_Unsupported_format_Valid_ones_ar); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(5, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__113);
  __Pyx_GIVEREF(__pyx_tuple__113);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__114 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__114);
  __Pyx_GIVEREF(__pyx_tuple__114);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__115 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__115);
  __Pyx_GIVEREF(__pyx_tuple__115);

  /* "mujoco_py/mjsimstate.pyx":34
 *         """ Flattens a state into a numpy array of numbers."""
 *         if self.act is None:
 *             act = np.empty(0)             # <<<<<<<<<<<<<<
 *         else:
 *             act = self.act
 */
  __pyx_tuple__116 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__116)) __PYX_ERR(6, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__116);
  __Pyx_GIVEREF(__pyx_tuple__116);

  /* "mujoco_py/mjrendercontext.pyx":83
 *             mjr_setBuffer(mjFB_OFFSCREEN, &self._con);
 *             if self._con.currentBuffer != mjFB_OFFSCREEN:
 *                 raise RuntimeError('Offscreen rendering not supported')             # <<<<<<<<<<<<<<
 *         else:
 *             mjr_setBuffer(mjFB_WINDOW, &self._con);
 */
  __pyx_tuple__117 = PyTuple_Pack(1, __pyx_kp_u_Offscreen_rendering_not_supporte); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(1, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__117);
  __Pyx_GIVEREF(__pyx_tuple__117);

  /* "mujoco_py/mjrendercontext.pyx":87
 *             mjr_setBuffer(mjFB_WINDOW, &self._con);
 *             if self._con.currentBuffer != mjFB_WINDOW:
 *                 raise RuntimeError('Window rendering not supported')             # <<<<<<<<<<<<<<
 *         self.con = WrapMjrContext(&self._con)
 * 
 */
  __pyx_tuple__118 = PyTuple_Pack(1, __pyx_kp_u_Window_rendering_not_supported); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(1, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__118);
  __Pyx_GIVEREF(__pyx_tuple__118);

  /* "mujoco_py/mjrendercontext.pyx":102
 *                     device_id = os.environ["GPUS"]
 *                 else:
 *                     device_id = os.getenv('CUDA_VISIBLE_DEVICES', '')             # <<<<<<<<<<<<<<
 *                 if len(device_id) > 0:
 *                     device_id = int(device_id.split(',')[0])
 */
  __pyx_tuple__119 = PyTuple_Pack(2, __pyx_n_u_CUDA_VISIBLE_DEVICES, __pyx_kp_u__83); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(1, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__119);
  __Pyx_GIVEREF(__pyx_tuple__119);

  /* "mujoco_py/mjrendercontext.pyx":104
 *                     device_id = os.getenv('CUDA_VISIBLE_DEVICES', '')
 *                 if len(device_id) > 0:
 *                     device_id = int(device_id.split(',')[0])             # <<<<<<<<<<<<<<
 *                 else:
 *                     # Sometimes env variable is an empty string.
 */
  __pyx_tuple__121 = PyTuple_Pack(1, __pyx_kp_u__120); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(1, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__121);
  __Pyx_GIVEREF(__pyx_tuple__121);

  /* "mujoco_py/mjrendercontext.pyx":115
 *         self.cam.fixedcamid = -1
 *         for i in range(3):
 *             self.cam.lookat[i] = np.median(sim.data.geom_xpos[:, i])             # <<<<<<<<<<<<<<
 *         self.cam.distance = sim.model.stat.extent
 * 
 */
  __pyx_slice__122 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__122)) __PYX_ERR(1, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__122);
  __Pyx_GIVEREF(__pyx_slice__122);

  /* "mujoco_py/mjrendercontext.pyx":229
 *         g.reflectance = 0
 *         g.type = const.GEOM_BOX
 *         g.size[:] = np.ones(3) * 0.1             # <<<<<<<<<<<<<<
 *         g.mat[:] = np.eye(3).flatten()
 *         g.rgba[:] = np.ones(4)
 */
  __pyx_tuple__124 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__124)) __PYX_ERR(1, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__124);
  __Pyx_GIVEREF(__pyx_tuple__124);

  /* "mujoco_py/mjrendercontext.pyx":230
 *         g.type = const.GEOM_BOX
 *         g.size[:] = np.ones(3) * 0.1
 *         g.mat[:] = np.eye(3).flatten()             # <<<<<<<<<<<<<<
 *         g.rgba[:] = np.ones(4)
 *         wrapped = WrapMjvGeom(g)
 */
  __pyx_tuple__125 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__125);
  __Pyx_GIVEREF(__pyx_tuple__125);

  /* "mujoco_py/mjrendercontext.pyx":231
 *         g.size[:] = np.ones(3) * 0.1
 *         g.mat[:] = np.eye(3).flatten()
 *         g.rgba[:] = np.ones(4)             # <<<<<<<<<<<<<<
 *         wrapped = WrapMjvGeom(g)
 * 
 */
  __pyx_tuple__126 = PyTuple_Pack(1, __pyx_int_4); if (unlikely(!__pyx_tuple__126)) __PYX_ERR(1, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__126);
  __Pyx_GIVEREF(__pyx_tuple__126);

  /* "mujoco_py/mjrendercontext.pyx":239
 *             elif isinstance(value, (tuple, list, np.ndarray)):
 *                 attr = getattr(wrapped, key)
 *                 attr[:] = np.asarray(value).reshape(attr.shape)             # <<<<<<<<<<<<<<
 *             elif isinstance(value, str):
 *                 assert key == "label", "Only label is a string in mjvGeom."
 */
  __pyx_slice__127 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__127)) __PYX_ERR(1, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__127);
  __Pyx_GIVEREF(__pyx_slice__127);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__128 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__128)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__128);
  __Pyx_GIVEREF(__pyx_tuple__128);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__129 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__129);
  __Pyx_GIVEREF(__pyx_tuple__129);

  /* "mujoco_py/mjbatchrenderer.pyx":62
 * 
 *         if not usingEGL():
 *             raise MjBatchRendererNotSupported(             # <<<<<<<<<<<<<<
 *                 "MjBatchRenderer currently only supported with EGL-backed"
 *                 "rendering context.")
 */
  __pyx_tuple__130 = PyTuple_Pack(1, __pyx_kp_u_MjBatchRenderer_currently_only_s); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(2, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__130);
  __Pyx_GIVEREF(__pyx_tuple__130);

  /* "mujoco_py/mjbatchrenderer.pyx":88
 *     def _init_cuda(self):
 *         if drv is None:
 *             raise ImportError("Failed to import pycuda.")             # <<<<<<<<<<<<<<
 *         # Use local imports so that we don't have to make pycuda
 *         # opengl interop a requirement
 */
  __pyx_tuple__131 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_import_pycuda); if (unlikely(!__pyx_tuple__131)) __PYX_ERR(2, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__131);
  __Pyx_GIVEREF(__pyx_tuple__131);

  /* "mujoco_py/mjbatchrenderer.pyx":187
 *         """
 *         if self._use_cuda and self._cuda_buffers_are_mapped:
 *             raise CudaBufferMappedError(             # <<<<<<<<<<<<<<
 *                 "CUDA buffers must be unmapped before calling render.")
 * 
 */
  __pyx_tuple__132 = PyTuple_Pack(1, __pyx_kp_u_CUDA_buffers_must_be_unmapped_be); if (unlikely(!__pyx_tuple__132)) __PYX_ERR(2, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__132);
  __Pyx_GIVEREF(__pyx_tuple__132);

  /* "mujoco_py/mjbatchrenderer.pyx":192
 *         if batch_offset is not None:
 *             if batch_offset < 0 or batch_offset >= self._batch_size:
 *                 raise ValueError("batch_offset out of range")             # <<<<<<<<<<<<<<
 *             self._current_batch_offset = batch_offset
 * 
 */
  __pyx_tuple__133 = PyTuple_Pack(1, __pyx_kp_u_batch_offset_out_of_range); if (unlikely(!__pyx_tuple__133)) __PYX_ERR(2, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__133);
  __Pyx_GIVEREF(__pyx_tuple__133);

  /* "mujoco_py/mjbatchrenderer.pyx":229
 *     def _read_cuda(self):
 *         if not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError(             # <<<<<<<<<<<<<<
 *                 "CUDA buffers must be mapped before reading")
 * 
 */
  __pyx_tuple__134 = PyTuple_Pack(1, __pyx_kp_u_CUDA_buffers_must_be_mapped_befo); if (unlikely(!__pyx_tuple__134)) __PYX_ERR(2, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__134);
  __Pyx_GIVEREF(__pyx_tuple__134);

  /* "mujoco_py/mjbatchrenderer.pyx":283
 *             raise CudaBufferNotMappedError()
 *         if not self._depth:
 *             raise RuntimeError("Depth not enabled. Use depth=True on initialization.")             # <<<<<<<<<<<<<<
 *         return self._cuda_depth_ptr
 * 
 */
  __pyx_tuple__135 = PyTuple_Pack(1, __pyx_kp_u_Depth_not_enabled_Use_depth_True); if (unlikely(!__pyx_tuple__135)) __PYX_ERR(2, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__135);
  __Pyx_GIVEREF(__pyx_tuple__135);

  /* "mujoco_py/cymj.pyx":122
 *     cdef char errstr[300]
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *         if (path.endswith(".mjb")):
 *             model = mj_loadModel(path.encode(), NULL)
 */
  __pyx_tuple__136 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__136)) __PYX_ERR(7, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__136);
  __Pyx_GIVEREF(__pyx_tuple__136);

  /* "mujoco_py/cymj.pyx":142
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():
 *         with tempfile.NamedTemporaryFile(suffix=".xml", delete=False) as fp:             # <<<<<<<<<<<<<<
 *             fp.write(xml_str.encode())
 *             fp.flush()
 */
  __pyx_tuple__137 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__137)) __PYX_ERR(7, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__137);
  __Pyx_GIVEREF(__pyx_tuple__137);

  /* "mujoco_py/cymj.pyx":141
 *     cdef char errstr[300]
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *         with tempfile.NamedTemporaryFile(suffix=".xml", delete=False) as fp:
 *             fp.write(xml_str.encode())
 */
  __pyx_tuple__138 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__138)) __PYX_ERR(7, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__138);
  __Pyx_GIVEREF(__pyx_tuple__138);

  /* "mujoco_py/cymj.pyx":160
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 *             with open(filename, 'wb') as f:             # <<<<<<<<<<<<<<
 *                 f.write(mjb_bytes)
 *             model = mj_loadModel(filename.encode(), NULL)
 */
  __pyx_tuple__139 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__139)) __PYX_ERR(7, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__139);
  __Pyx_GIVEREF(__pyx_tuple__139);

  /* "mujoco_py/cymj.pyx":158
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():
 *         with TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *             filename = os.path.join(td, 'model.mjb')
 *             with open(filename, 'wb') as f:
 */
  __pyx_tuple__140 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__140)) __PYX_ERR(7, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__140);
  __Pyx_GIVEREF(__pyx_tuple__140);

  /* "mujoco_py/cymj.pyx":157
 *     """
 *     cdef mjModel *model
 *     with wrap_mujoco_warning():             # <<<<<<<<<<<<<<
 *         with TemporaryDirectory() as td:
 *             filename = os.path.join(td, 'model.mjb')
 */
  __pyx_tuple__141 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__141)) __PYX_ERR(7, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__141);
  __Pyx_GIVEREF(__pyx_tuple__141);

  /* "mujoco_py/cymj.pyx":164
 *             model = mj_loadModel(filename.encode(), NULL)
 *     if model == NULL:
 *         raise Exception('%s\nFailed to load MJB')             # <<<<<<<<<<<<<<
 *     return WrapMjModel(model)
 */
  __pyx_tuple__142 = PyTuple_Pack(1, __pyx_kp_u_s_Failed_to_load_MJB); if (unlikely(!__pyx_tuple__142)) __PYX_ERR(7, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__142);
  __Pyx_GIVEREF(__pyx_tuple__142);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":235
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 */
  __pyx_tuple__143 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__143)) __PYX_ERR(8, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__143);
  __Pyx_GIVEREF(__pyx_tuple__143);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":239
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
 * 
 *             info.buf = PyArray_DATA(self)
 */
  __pyx_tuple__144 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__144)) __PYX_ERR(8, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__144);
  __Pyx_GIVEREF(__pyx_tuple__144);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276
 *                 if ((descr.byteorder == c'>' and little_endian) or
 *                     (descr.byteorder == c'<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
 *                 if   t == NPY_BYTE:        f = "b"
 *                 elif t == NPY_UBYTE:       f = "B"
 */
  __pyx_tuple__145 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__145)) __PYX_ERR(8, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__145);
  __Pyx_GIVEREF(__pyx_tuple__145);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":823
 * 
 *         if (end - f) - <int>(new_offset - offset[0]) < 15:
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
 * 
 *         if ((child.byteorder == c'>' and little_endian) or
 */
  __pyx_tuple__146 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__146)) __PYX_ERR(8, 823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__146);
  __Pyx_GIVEREF(__pyx_tuple__146);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827
 *         if ((child.byteorder == c'>' and little_endian) or
 *             (child.byteorder == c'<' and not little_endian)):
 *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
 *             # One could encode it in the format string and have Cython
 *             # complain instead, BUT: < and > in format strings also imply
 */
  __pyx_tuple__147 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__147)) __PYX_ERR(8, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__147);
  __Pyx_GIVEREF(__pyx_tuple__147);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":847
 *             t = child.type_num
 *             if end - f < 5:
 *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
 * 
 *             # Until ticket #99 is fixed, use integers to avoid warnings
 */
  __pyx_tuple__148 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__148)) __PYX_ERR(8, 847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__148);
  __Pyx_GIVEREF(__pyx_tuple__148);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1013
 *         _import_array()
 *     except Exception:
 *         raise ImportError("numpy.core.multiarray failed to import")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int import_umath() except -1:
 */
  __pyx_tuple__149 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__149)) __PYX_ERR(8, 1013, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__149);
  __Pyx_GIVEREF(__pyx_tuple__149);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1019
 *         _import_umath()
 *     except Exception:
 *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int import_ufunc() except -1:
 */
  __pyx_tuple__150 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__150)) __PYX_ERR(8, 1019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__150);
  __Pyx_GIVEREF(__pyx_tuple__150);

  /* "../../miniconda3/envs/py36/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1025
 *         _import_umath()
 *     except Exception:
 *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__151 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__151)) __PYX_ERR(8, 1025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__151);
  __Pyx_GIVEREF(__pyx_tuple__151);

  /* "View.MemoryView":131
 * 
 *         if not self.ndim:
 *             raise ValueError("Empty shape tuple for cython.array")             # <<<<<<<<<<<<<<
 * 
 *         if itemsize <= 0:
 */
  __pyx_tuple__152 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__152)) __PYX_ERR(4, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__152);
  __Pyx_GIVEREF(__pyx_tuple__152);

  /* "View.MemoryView":134
 * 
 *         if itemsize <= 0:
 *             raise ValueError("itemsize <= 0 for cython.array")             # <<<<<<<<<<<<<<
 * 
 *         if not isinstance(format, bytes):
 */
  __pyx_tuple__153 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__153)) __PYX_ERR(4, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__153);
  __Pyx_GIVEREF(__pyx_tuple__153);

  /* "View.MemoryView":137
 * 
 *         if not isinstance(format, bytes):
 *             format = format.encode('ASCII')             # <<<<<<<<<<<<<<
 *         self._format = format  # keep a reference to the byte string
 *         self.format = self._format
 */
  __pyx_tuple__154 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__154)) __PYX_ERR(4, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__154);
  __Pyx_GIVEREF(__pyx_tuple__154);

  /* "View.MemoryView":146
 * 
 *         if not self._shape:
 *             raise MemoryError("unable to allocate shape and strides.")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__155 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__155)) __PYX_ERR(4, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__155);
  __Pyx_GIVEREF(__pyx_tuple__155);

  /* "View.MemoryView":174
 *             self.data = <char *>malloc(self.len)
 *             if not self.data:
 *                 raise MemoryError("unable to allocate array data.")             # <<<<<<<<<<<<<<
 * 
 *             if self.dtype_is_object:
 */
  __pyx_tuple__156 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__156)) __PYX_ERR(4, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__156);
  __Pyx_GIVEREF(__pyx_tuple__156);

  /* "View.MemoryView":190
 *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
 *         if not (flags & bufmode):
 *             raise ValueError("Can only create a buffer that is contiguous in memory.")             # <<<<<<<<<<<<<<
 *         info.buf = self.data
 *         info.len = self.len
 */
  __pyx_tuple__157 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__157)) __PYX_ERR(4, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__157);
  __Pyx_GIVEREF(__pyx_tuple__157);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__158 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__158)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__158);
  __Pyx_GIVEREF(__pyx_tuple__158);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__159 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__159)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__159);
  __Pyx_GIVEREF(__pyx_tuple__159);

  /* "View.MemoryView":486
 *             result = struct.unpack(self.view.format, bytesitem)
 *         except struct.error:
 *             raise ValueError("Unable to convert item to object")             # <<<<<<<<<<<<<<
 *         else:
 *             if len(self.view.format) == 1:
 */
  __pyx_tuple__160 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__160)) __PYX_ERR(4, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__160);
  __Pyx_GIVEREF(__pyx_tuple__160);

  /* "View.MemoryView":558
 *         if self.view.strides == NULL:
 * 
 *             raise ValueError("Buffer view does not expose strides")             # <<<<<<<<<<<<<<
 * 
 *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])
 */
  __pyx_tuple__161 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__161)) __PYX_ERR(4, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__161);
  __Pyx_GIVEREF(__pyx_tuple__161);

  /* "View.MemoryView":565
 *     def suboffsets(self):
 *         if self.view.suboffsets == NULL:
 *             return (-1,) * self.view.ndim             # <<<<<<<<<<<<<<
 * 
 *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
 */
  __pyx_tuple__162 = PyTuple_New(1); if (unlikely(!__pyx_tuple__162)) __PYX_ERR(4, 565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__162);
  __Pyx_INCREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_tuple__162, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_tuple__162);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__163 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__163)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__163);
  __Pyx_GIVEREF(__pyx_tuple__163);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__164 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__164)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__164);
  __Pyx_GIVEREF(__pyx_tuple__164);

  /* "View.MemoryView":670
 *         if item is Ellipsis:
 *             if not seen_ellipsis:
 *                 result.extend([slice(None)] * (ndim - len(tup) + 1))             # <<<<<<<<<<<<<<
 *                 seen_ellipsis = True
 *             else:
 */
  __pyx_slice__165 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__165)) __PYX_ERR(4, 670, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__165);
  __Pyx_GIVEREF(__pyx_slice__165);

  /* "View.MemoryView":673
 *                 seen_ellipsis = True
 *             else:
 *                 result.append(slice(None))             # <<<<<<<<<<<<<<
 *             have_slices = True
 *         else:
 */
  __pyx_slice__166 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__166)) __PYX_ERR(4, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__166);
  __Pyx_GIVEREF(__pyx_slice__166);

  /* "View.MemoryView":684
 *     nslices = ndim - len(result)
 *     if nslices:
 *         result.extend([slice(None)] * nslices)             # <<<<<<<<<<<<<<
 * 
 *     return have_slices or nslices, tuple(result)
 */
  __pyx_slice__167 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__167)) __PYX_ERR(4, 684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__167);
  __Pyx_GIVEREF(__pyx_slice__167);

  /* "View.MemoryView":691
 *     for suboffset in suboffsets[:ndim]:
 *         if suboffset >= 0:
 *             raise ValueError("Indirect dimensions not supported")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__168 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__168)) __PYX_ERR(4, 691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__168);
  __Pyx_GIVEREF(__pyx_tuple__168);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__169 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__169)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__169);
  __Pyx_GIVEREF(__pyx_tuple__169);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__170 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__170)) __PYX_ERR(4, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__170);
  __Pyx_GIVEREF(__pyx_tuple__170);

  /* "mujoco_py/generated/wrappers.pxi":3829
 *     return np.asarray(b)
 * 
 * def _mj_activate(str filename):             # <<<<<<<<<<<<<<
 *     return mj_activate(filename.encode())
 * 
 */
  __pyx_tuple__174 = PyTuple_Pack(1, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__174)) __PYX_ERR(3, 3829, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__174);
  __Pyx_GIVEREF(__pyx_tuple__174);
  __pyx_codeobj__175 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_activate, 3829, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) __PYX_ERR(3, 3829, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3832
 *     return mj_activate(filename.encode())
 * 
 * def _mj_deactivate():             # <<<<<<<<<<<<<<
 *     mj_deactivate()
 * 
 */
  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_deactivate, 3832, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) __PYX_ERR(3, 3832, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3835
 *     mj_deactivate()
 * 
 * def _mj_certQuestion(np.ndarray[np.float64_t, mode="c", ndim=1] question):             # <<<<<<<<<<<<<<
 *     mj_certQuestion(&question[0])
 * 
 */
  __pyx_tuple__177 = PyTuple_Pack(1, __pyx_n_s_question); if (unlikely(!__pyx_tuple__177)) __PYX_ERR(3, 3835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__177);
  __Pyx_GIVEREF(__pyx_tuple__177);
  __pyx_codeobj__178 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_certQuestion, 3835, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__178)) __PYX_ERR(3, 3835, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3838
 *     mj_certQuestion(&question[0])
 * 
 * def _mj_certAnswer(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):             # <<<<<<<<<<<<<<
 *     mj_certAnswer(&question[0], &answer[0])
 * 
 */
  __pyx_tuple__179 = PyTuple_Pack(2, __pyx_n_s_question, __pyx_n_s_answer); if (unlikely(!__pyx_tuple__179)) __PYX_ERR(3, 3838, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__179);
  __Pyx_GIVEREF(__pyx_tuple__179);
  __pyx_codeobj__180 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_certAnswer, 3838, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__180)) __PYX_ERR(3, 3838, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3841
 *     mj_certAnswer(&question[0], &answer[0])
 * 
 * def _mj_certCheck(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):             # <<<<<<<<<<<<<<
 *     return mj_certCheck(&question[0], &answer[0])
 * 
 */
  __pyx_tuple__181 = PyTuple_Pack(2, __pyx_n_s_question, __pyx_n_s_answer); if (unlikely(!__pyx_tuple__181)) __PYX_ERR(3, 3841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__181);
  __Pyx_GIVEREF(__pyx_tuple__181);
  __pyx_codeobj__182 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__181, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_certCheck, 3841, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__182)) __PYX_ERR(3, 3841, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3844
 *     return mj_certCheck(&question[0], &answer[0])
 * 
 * def _mj_defaultVFS(PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     mj_defaultVFS(vfs.ptr)
 * 
 */
  __pyx_tuple__183 = PyTuple_Pack(1, __pyx_n_s_vfs); if (unlikely(!__pyx_tuple__183)) __PYX_ERR(3, 3844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__183);
  __Pyx_GIVEREF(__pyx_tuple__183);
  __pyx_codeobj__184 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__183, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_defaultVFS, 3844, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__184)) __PYX_ERR(3, 3844, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3847
 *     mj_defaultVFS(vfs.ptr)
 * 
 * def _mj_addFileVFS(PyMjVFS vfs, str directory, str filename):             # <<<<<<<<<<<<<<
 *     return mj_addFileVFS(vfs.ptr, directory.encode(), filename.encode())
 * 
 */
  __pyx_tuple__185 = PyTuple_Pack(3, __pyx_n_s_vfs, __pyx_n_s_directory, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__185)) __PYX_ERR(3, 3847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__185);
  __Pyx_GIVEREF(__pyx_tuple__185);
  __pyx_codeobj__186 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_addFileVFS, 3847, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) __PYX_ERR(3, 3847, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3850
 *     return mj_addFileVFS(vfs.ptr, directory.encode(), filename.encode())
 * 
 * def _mj_makeEmptyFileVFS(PyMjVFS vfs, str filename, int filesize):             # <<<<<<<<<<<<<<
 *     return mj_makeEmptyFileVFS(vfs.ptr, filename.encode(), filesize)
 * 
 */
  __pyx_tuple__187 = PyTuple_Pack(3, __pyx_n_s_vfs, __pyx_n_s_filename, __pyx_n_s_filesize); if (unlikely(!__pyx_tuple__187)) __PYX_ERR(3, 3850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__187);
  __Pyx_GIVEREF(__pyx_tuple__187);
  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__187, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_makeEmptyFileVFS, 3850, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) __PYX_ERR(3, 3850, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3853
 *     return mj_makeEmptyFileVFS(vfs.ptr, filename.encode(), filesize)
 * 
 * def _mj_findFileVFS(PyMjVFS vfs, str filename):             # <<<<<<<<<<<<<<
 *     return mj_findFileVFS(vfs.ptr, filename.encode())
 * 
 */
  __pyx_tuple__189 = PyTuple_Pack(2, __pyx_n_s_vfs, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__189)) __PYX_ERR(3, 3853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__189);
  __Pyx_GIVEREF(__pyx_tuple__189);
  __pyx_codeobj__190 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__189, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_findFileVFS, 3853, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) __PYX_ERR(3, 3853, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3856
 *     return mj_findFileVFS(vfs.ptr, filename.encode())
 * 
 * def _mj_deleteFileVFS(PyMjVFS vfs, str filename):             # <<<<<<<<<<<<<<
 *     return mj_deleteFileVFS(vfs.ptr, filename.encode())
 * 
 */
  __pyx_tuple__191 = PyTuple_Pack(2, __pyx_n_s_vfs, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__191)) __PYX_ERR(3, 3856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__191);
  __Pyx_GIVEREF(__pyx_tuple__191);
  __pyx_codeobj__192 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__191, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_deleteFileVFS, 3856, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__192)) __PYX_ERR(3, 3856, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3859
 *     return mj_deleteFileVFS(vfs.ptr, filename.encode())
 * 
 * def _mj_deleteVFS(PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     mj_deleteVFS(vfs.ptr)
 * 
 */
  __pyx_tuple__193 = PyTuple_Pack(1, __pyx_n_s_vfs); if (unlikely(!__pyx_tuple__193)) __PYX_ERR(3, 3859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__193);
  __Pyx_GIVEREF(__pyx_tuple__193);
  __pyx_codeobj__194 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__193, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_deleteVFS, 3859, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__194)) __PYX_ERR(3, 3859, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3862
 *     mj_deleteVFS(vfs.ptr)
 * 
 * def _mj_loadXML(str filename, PyMjVFS vfs, str error, int error_sz):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_loadXML(filename.encode(), vfs.ptr, error.encode(), error_sz))
 * 
 */
  __pyx_tuple__195 = PyTuple_Pack(4, __pyx_n_s_filename, __pyx_n_s_vfs, __pyx_n_s_error, __pyx_n_s_error_sz); if (unlikely(!__pyx_tuple__195)) __PYX_ERR(3, 3862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__195);
  __Pyx_GIVEREF(__pyx_tuple__195);
  __pyx_codeobj__196 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__195, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_loadXML, 3862, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__196)) __PYX_ERR(3, 3862, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3865
 *     return WrapMjModel(mj_loadXML(filename.encode(), vfs.ptr, error.encode(), error_sz))
 * 
 * def _mj_saveLastXML(str filename, PyMjModel m, str error, int error_sz):             # <<<<<<<<<<<<<<
 *     return mj_saveLastXML(filename.encode(), m.ptr, error.encode(), error_sz)
 * 
 */
  __pyx_tuple__197 = PyTuple_Pack(4, __pyx_n_s_filename, __pyx_n_s_m, __pyx_n_s_error, __pyx_n_s_error_sz); if (unlikely(!__pyx_tuple__197)) __PYX_ERR(3, 3865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__197);
  __Pyx_GIVEREF(__pyx_tuple__197);
  __pyx_codeobj__198 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__197, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_saveLastXML, 3865, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__198)) __PYX_ERR(3, 3865, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3868
 *     return mj_saveLastXML(filename.encode(), m.ptr, error.encode(), error_sz)
 * 
 * def _mj_freeLastXML():             # <<<<<<<<<<<<<<
 *     mj_freeLastXML()
 * 
 */
  __pyx_codeobj__199 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_freeLastXML, 3868, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) __PYX_ERR(3, 3868, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3871
 *     mj_freeLastXML()
 * 
 * def _mj_printSchema(str filename, str buffer, int buffer_sz, int flg_html, int flg_pad):             # <<<<<<<<<<<<<<
 *     return mj_printSchema(filename.encode(), buffer.encode(), buffer_sz, flg_html, flg_pad)
 * 
 */
  __pyx_tuple__200 = PyTuple_Pack(5, __pyx_n_s_filename, __pyx_n_s_buffer, __pyx_n_s_buffer_sz, __pyx_n_s_flg_html, __pyx_n_s_flg_pad); if (unlikely(!__pyx_tuple__200)) __PYX_ERR(3, 3871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__200);
  __Pyx_GIVEREF(__pyx_tuple__200);
  __pyx_codeobj__201 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__200, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_printSchema, 3871, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) __PYX_ERR(3, 3871, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3874
 *     return mj_printSchema(filename.encode(), buffer.encode(), buffer_sz, flg_html, flg_pad)
 * 
 * def _mj_step(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__202 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__202)) __PYX_ERR(3, 3874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__202);
  __Pyx_GIVEREF(__pyx_tuple__202);
  __pyx_codeobj__203 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__202, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_step, 3874, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__203)) __PYX_ERR(3, 3874, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3877
 *     mj_step(m.ptr, d.ptr)
 * 
 * def _mj_step1(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step1(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__204 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__204)) __PYX_ERR(3, 3877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__204);
  __Pyx_GIVEREF(__pyx_tuple__204);
  __pyx_codeobj__205 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__204, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_step1, 3877, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) __PYX_ERR(3, 3877, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3880
 *     mj_step1(m.ptr, d.ptr)
 * 
 * def _mj_step2(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step2(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__206 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__206)) __PYX_ERR(3, 3880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__206);
  __Pyx_GIVEREF(__pyx_tuple__206);
  __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__206, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_step2, 3880, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(3, 3880, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3883
 *     mj_step2(m.ptr, d.ptr)
 * 
 * def _mj_forward(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_forward(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__208 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__208)) __PYX_ERR(3, 3883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__208);
  __Pyx_GIVEREF(__pyx_tuple__208);
  __pyx_codeobj__209 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__208, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_forward, 3883, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) __PYX_ERR(3, 3883, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3886
 *     mj_forward(m.ptr, d.ptr)
 * 
 * def _mj_inverse(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_inverse(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__210 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__210)) __PYX_ERR(3, 3886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__210);
  __Pyx_GIVEREF(__pyx_tuple__210);
  __pyx_codeobj__211 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__210, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_inverse, 3886, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__211)) __PYX_ERR(3, 3886, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3889
 *     mj_inverse(m.ptr, d.ptr)
 * 
 * def _mj_forwardSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):             # <<<<<<<<<<<<<<
 *     mj_forwardSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 */
  __pyx_tuple__212 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_skipstage, __pyx_n_s_skipsensorenergy); if (unlikely(!__pyx_tuple__212)) __PYX_ERR(3, 3889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__212);
  __Pyx_GIVEREF(__pyx_tuple__212);
  __pyx_codeobj__213 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__212, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_forwardSkip, 3889, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) __PYX_ERR(3, 3889, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3892
 *     mj_forwardSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 * def _mj_inverseSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):             # <<<<<<<<<<<<<<
 *     mj_inverseSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 */
  __pyx_tuple__214 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_skipstage, __pyx_n_s_skipsensorenergy); if (unlikely(!__pyx_tuple__214)) __PYX_ERR(3, 3892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__214);
  __Pyx_GIVEREF(__pyx_tuple__214);
  __pyx_codeobj__215 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__214, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_inverseSkip, 3892, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(3, 3892, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3895
 *     mj_inverseSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 * def _mj_defaultSolRefImp(np.ndarray[np.float64_t, mode="c", ndim=1] solref, np.ndarray[np.float64_t, mode="c", ndim=1] solimp):             # <<<<<<<<<<<<<<
 *     mj_defaultSolRefImp(&solref[0], &solimp[0])
 * 
 */
  __pyx_tuple__216 = PyTuple_Pack(2, __pyx_n_s_solref, __pyx_n_s_solimp); if (unlikely(!__pyx_tuple__216)) __PYX_ERR(3, 3895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__216);
  __Pyx_GIVEREF(__pyx_tuple__216);
  __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__216, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_defaultSolRefImp, 3895, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(3, 3895, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3898
 *     mj_defaultSolRefImp(&solref[0], &solimp[0])
 * 
 * def _mj_defaultOption(PyMjOption opt):             # <<<<<<<<<<<<<<
 *     mj_defaultOption(opt.ptr)
 * 
 */
  __pyx_tuple__218 = PyTuple_Pack(1, __pyx_n_s_opt); if (unlikely(!__pyx_tuple__218)) __PYX_ERR(3, 3898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__218);
  __Pyx_GIVEREF(__pyx_tuple__218);
  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_defaultOption, 3898, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(3, 3898, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3901
 *     mj_defaultOption(opt.ptr)
 * 
 * def _mj_defaultVisual(PyMjVisual vis):             # <<<<<<<<<<<<<<
 *     mj_defaultVisual(vis.ptr)
 * 
 */
  __pyx_tuple__220 = PyTuple_Pack(1, __pyx_n_s_vis); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(3, 3901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__220);
  __Pyx_GIVEREF(__pyx_tuple__220);
  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__220, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_defaultVisual, 3901, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(3, 3901, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3904
 *     mj_defaultVisual(vis.ptr)
 * 
 * def _mj_copyModel(PyMjModel dest, PyMjModel src):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_copyModel(dest.ptr, src.ptr))
 * 
 */
  __pyx_tuple__222 = PyTuple_Pack(2, __pyx_n_s_dest, __pyx_n_s_src); if (unlikely(!__pyx_tuple__222)) __PYX_ERR(3, 3904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__222);
  __Pyx_GIVEREF(__pyx_tuple__222);
  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__222, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_copyModel, 3904, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(3, 3904, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3907
 *     return WrapMjModel(mj_copyModel(dest.ptr, src.ptr))
 * 
 * def _mj_loadModel(str filename, PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_loadModel(filename.encode(), vfs.ptr))
 * 
 */
  __pyx_tuple__224 = PyTuple_Pack(2, __pyx_n_s_filename, __pyx_n_s_vfs); if (unlikely(!__pyx_tuple__224)) __PYX_ERR(3, 3907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__224);
  __Pyx_GIVEREF(__pyx_tuple__224);
  __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__224, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_loadModel, 3907, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(3, 3907, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3910
 *     return WrapMjModel(mj_loadModel(filename.encode(), vfs.ptr))
 * 
 * def _mj_deleteModel(PyMjModel m):             # <<<<<<<<<<<<<<
 *     mj_deleteModel(m.ptr)
 * 
 */
  __pyx_tuple__226 = PyTuple_Pack(1, __pyx_n_s_m); if (unlikely(!__pyx_tuple__226)) __PYX_ERR(3, 3910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__226);
  __Pyx_GIVEREF(__pyx_tuple__226);
  __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__226, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_deleteModel, 3910, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(3, 3910, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3913
 *     mj_deleteModel(m.ptr)
 * 
 * def _mj_sizeModel(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_sizeModel(m.ptr)
 * 
 */
  __pyx_tuple__228 = PyTuple_Pack(1, __pyx_n_s_m); if (unlikely(!__pyx_tuple__228)) __PYX_ERR(3, 3913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__228);
  __Pyx_GIVEREF(__pyx_tuple__228);
  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_sizeModel, 3913, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(3, 3913, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3916
 *     return mj_sizeModel(m.ptr)
 * 
 * def _mj_resetData(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_resetData(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__230 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__230)) __PYX_ERR(3, 3916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__230);
  __Pyx_GIVEREF(__pyx_tuple__230);
  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__230, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_resetData, 3916, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(3, 3916, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3919
 *     mj_resetData(m.ptr, d.ptr)
 * 
 * def _mj_resetDataKeyframe(PyMjModel m, PyMjData d, int key):             # <<<<<<<<<<<<<<
 *     mj_resetDataKeyframe(m.ptr, d.ptr, key)
 * 
 */
  __pyx_tuple__232 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_key); if (unlikely(!__pyx_tuple__232)) __PYX_ERR(3, 3919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__232);
  __Pyx_GIVEREF(__pyx_tuple__232);
  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_resetDataKeyframe, 3919, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(3, 3919, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3922
 *     mj_resetDataKeyframe(m.ptr, d.ptr, key)
 * 
 * def _mj_deleteData(PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_deleteData(d.ptr)
 * 
 */
  __pyx_tuple__234 = PyTuple_Pack(1, __pyx_n_s_d); if (unlikely(!__pyx_tuple__234)) __PYX_ERR(3, 3922, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__234);
  __Pyx_GIVEREF(__pyx_tuple__234);
  __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__234, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_deleteData, 3922, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(3, 3922, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3925
 *     mj_deleteData(d.ptr)
 * 
 * def _mj_resetCallbacks():             # <<<<<<<<<<<<<<
 *     mj_resetCallbacks()
 * 
 */
  __pyx_codeobj__236 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_resetCallbacks, 3925, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__236)) __PYX_ERR(3, 3925, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3928
 *     mj_resetCallbacks()
 * 
 * def _mj_setConst(PyMjModel m, PyMjData d, int flg_actrange):             # <<<<<<<<<<<<<<
 *     mj_setConst(m.ptr, d.ptr, flg_actrange)
 * 
 */
  __pyx_tuple__237 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_flg_actrange); if (unlikely(!__pyx_tuple__237)) __PYX_ERR(3, 3928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__237);
  __Pyx_GIVEREF(__pyx_tuple__237);
  __pyx_codeobj__238 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__237, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_setConst, 3928, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__238)) __PYX_ERR(3, 3928, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3931
 *     mj_setConst(m.ptr, d.ptr, flg_actrange)
 * 
 * def _mj_printModel(PyMjModel m, str filename):             # <<<<<<<<<<<<<<
 *     mj_printModel(m.ptr, filename.encode())
 * 
 */
  __pyx_tuple__239 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__239)) __PYX_ERR(3, 3931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__239);
  __Pyx_GIVEREF(__pyx_tuple__239);
  __pyx_codeobj__240 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__239, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_printModel, 3931, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__240)) __PYX_ERR(3, 3931, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3934
 *     mj_printModel(m.ptr, filename.encode())
 * 
 * def _mj_printData(PyMjModel m, PyMjData d, str filename):             # <<<<<<<<<<<<<<
 *     mj_printData(m.ptr, d.ptr, filename.encode())
 * 
 */
  __pyx_tuple__241 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__241)) __PYX_ERR(3, 3934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__241);
  __Pyx_GIVEREF(__pyx_tuple__241);
  __pyx_codeobj__242 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__241, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_printData, 3934, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__242)) __PYX_ERR(3, 3934, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3937
 *     mj_printData(m.ptr, d.ptr, filename.encode())
 * 
 * def _mju_printMat(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_printMat(&mat[0], nr, nc)
 * 
 */
  __pyx_tuple__243 = PyTuple_Pack(3, __pyx_n_s_mat, __pyx_n_s_nr, __pyx_n_s_nc); if (unlikely(!__pyx_tuple__243)) __PYX_ERR(3, 3937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__243);
  __Pyx_GIVEREF(__pyx_tuple__243);
  __pyx_codeobj__244 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__243, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_printMat, 3937, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__244)) __PYX_ERR(3, 3937, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3940
 *     mju_printMat(&mat[0], nr, nc)
 * 
 * def _mj_fwdPosition(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdPosition(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__245 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__245)) __PYX_ERR(3, 3940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__245);
  __Pyx_GIVEREF(__pyx_tuple__245);
  __pyx_codeobj__246 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__245, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_fwdPosition, 3940, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__246)) __PYX_ERR(3, 3940, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3943
 *     mj_fwdPosition(m.ptr, d.ptr)
 * 
 * def _mj_fwdVelocity(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdVelocity(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__247 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__247)) __PYX_ERR(3, 3943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__247);
  __Pyx_GIVEREF(__pyx_tuple__247);
  __pyx_codeobj__248 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__247, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_fwdVelocity, 3943, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__248)) __PYX_ERR(3, 3943, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3946
 *     mj_fwdVelocity(m.ptr, d.ptr)
 * 
 * def _mj_fwdActuation(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdActuation(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__249 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__249)) __PYX_ERR(3, 3946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__249);
  __Pyx_GIVEREF(__pyx_tuple__249);
  __pyx_codeobj__250 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__249, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_fwdActuation, 3946, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__250)) __PYX_ERR(3, 3946, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3949
 *     mj_fwdActuation(m.ptr, d.ptr)
 * 
 * def _mj_fwdAcceleration(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdAcceleration(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__251 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__251)) __PYX_ERR(3, 3949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__251);
  __Pyx_GIVEREF(__pyx_tuple__251);
  __pyx_codeobj__252 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__251, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_fwdAcceleration, 3949, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__252)) __PYX_ERR(3, 3949, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3952
 *     mj_fwdAcceleration(m.ptr, d.ptr)
 * 
 * def _mj_fwdConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__253 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__253)) __PYX_ERR(3, 3952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__253);
  __Pyx_GIVEREF(__pyx_tuple__253);
  __pyx_codeobj__254 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__253, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_fwdConstraint, 3952, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__254)) __PYX_ERR(3, 3952, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3955
 *     mj_fwdConstraint(m.ptr, d.ptr)
 * 
 * def _mj_Euler(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_Euler(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__255 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__255)) __PYX_ERR(3, 3955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__255);
  __Pyx_GIVEREF(__pyx_tuple__255);
  __pyx_codeobj__256 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__255, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_Euler, 3955, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__256)) __PYX_ERR(3, 3955, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3958
 *     mj_Euler(m.ptr, d.ptr)
 * 
 * def _mj_RungeKutta(PyMjModel m, PyMjData d, int N):             # <<<<<<<<<<<<<<
 *     mj_RungeKutta(m.ptr, d.ptr, N)
 * 
 */
  __pyx_tuple__257 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_N); if (unlikely(!__pyx_tuple__257)) __PYX_ERR(3, 3958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__257);
  __Pyx_GIVEREF(__pyx_tuple__257);
  __pyx_codeobj__258 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_RungeKutta, 3958, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__258)) __PYX_ERR(3, 3958, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3961
 *     mj_RungeKutta(m.ptr, d.ptr, N)
 * 
 * def _mj_invPosition(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invPosition(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__259 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__259)) __PYX_ERR(3, 3961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__259);
  __Pyx_GIVEREF(__pyx_tuple__259);
  __pyx_codeobj__260 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__259, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_invPosition, 3961, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__260)) __PYX_ERR(3, 3961, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3964
 *     mj_invPosition(m.ptr, d.ptr)
 * 
 * def _mj_invVelocity(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invVelocity(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__261 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__261)) __PYX_ERR(3, 3964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__261);
  __Pyx_GIVEREF(__pyx_tuple__261);
  __pyx_codeobj__262 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__261, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_invVelocity, 3964, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__262)) __PYX_ERR(3, 3964, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3967
 *     mj_invVelocity(m.ptr, d.ptr)
 * 
 * def _mj_invConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__263 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__263)) __PYX_ERR(3, 3967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__263);
  __Pyx_GIVEREF(__pyx_tuple__263);
  __pyx_codeobj__264 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__263, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_invConstraint, 3967, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__264)) __PYX_ERR(3, 3967, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3970
 *     mj_invConstraint(m.ptr, d.ptr)
 * 
 * def _mj_compareFwdInv(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_compareFwdInv(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__265 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__265)) __PYX_ERR(3, 3970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__265);
  __Pyx_GIVEREF(__pyx_tuple__265);
  __pyx_codeobj__266 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__265, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_compareFwdInv, 3970, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__266)) __PYX_ERR(3, 3970, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3973
 *     mj_compareFwdInv(m.ptr, d.ptr)
 * 
 * def _mj_sensorPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorPos(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__267 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__267)) __PYX_ERR(3, 3973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__267);
  __Pyx_GIVEREF(__pyx_tuple__267);
  __pyx_codeobj__268 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__267, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_sensorPos, 3973, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__268)) __PYX_ERR(3, 3973, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3976
 *     mj_sensorPos(m.ptr, d.ptr)
 * 
 * def _mj_sensorVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorVel(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__269 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__269)) __PYX_ERR(3, 3976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__269);
  __Pyx_GIVEREF(__pyx_tuple__269);
  __pyx_codeobj__270 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__269, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_sensorVel, 3976, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__270)) __PYX_ERR(3, 3976, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3979
 *     mj_sensorVel(m.ptr, d.ptr)
 * 
 * def _mj_sensorAcc(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorAcc(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__271 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__271)) __PYX_ERR(3, 3979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__271);
  __Pyx_GIVEREF(__pyx_tuple__271);
  __pyx_codeobj__272 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__271, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_sensorAcc, 3979, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__272)) __PYX_ERR(3, 3979, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3982
 *     mj_sensorAcc(m.ptr, d.ptr)
 * 
 * def _mj_energyPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_energyPos(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__273 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__273)) __PYX_ERR(3, 3982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__273);
  __Pyx_GIVEREF(__pyx_tuple__273);
  __pyx_codeobj__274 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__273, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_energyPos, 3982, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__274)) __PYX_ERR(3, 3982, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3985
 *     mj_energyPos(m.ptr, d.ptr)
 * 
 * def _mj_energyVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_energyVel(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__275 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__275)) __PYX_ERR(3, 3985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__275);
  __Pyx_GIVEREF(__pyx_tuple__275);
  __pyx_codeobj__276 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__275, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_energyVel, 3985, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__276)) __PYX_ERR(3, 3985, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3988
 *     mj_energyVel(m.ptr, d.ptr)
 * 
 * def _mj_checkPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkPos(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__277 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__277)) __PYX_ERR(3, 3988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__277);
  __Pyx_GIVEREF(__pyx_tuple__277);
  __pyx_codeobj__278 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_checkPos, 3988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__278)) __PYX_ERR(3, 3988, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3991
 *     mj_checkPos(m.ptr, d.ptr)
 * 
 * def _mj_checkVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkVel(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__279 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__279)) __PYX_ERR(3, 3991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__279);
  __Pyx_GIVEREF(__pyx_tuple__279);
  __pyx_codeobj__280 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__279, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_checkVel, 3991, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__280)) __PYX_ERR(3, 3991, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3994
 *     mj_checkVel(m.ptr, d.ptr)
 * 
 * def _mj_checkAcc(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkAcc(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__281 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__281)) __PYX_ERR(3, 3994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__281);
  __Pyx_GIVEREF(__pyx_tuple__281);
  __pyx_codeobj__282 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__281, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_checkAcc, 3994, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__282)) __PYX_ERR(3, 3994, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":3997
 *     mj_checkAcc(m.ptr, d.ptr)
 * 
 * def _mj_kinematics(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_kinematics(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__283 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__283)) __PYX_ERR(3, 3997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__283);
  __Pyx_GIVEREF(__pyx_tuple__283);
  __pyx_codeobj__284 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__283, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_kinematics, 3997, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__284)) __PYX_ERR(3, 3997, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4000
 *     mj_kinematics(m.ptr, d.ptr)
 * 
 * def _mj_comPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_comPos(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__285 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__285)) __PYX_ERR(3, 4000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__285);
  __Pyx_GIVEREF(__pyx_tuple__285);
  __pyx_codeobj__286 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__285, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_comPos, 4000, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__286)) __PYX_ERR(3, 4000, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4003
 *     mj_comPos(m.ptr, d.ptr)
 * 
 * def _mj_camlight(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_camlight(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__287 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__287)) __PYX_ERR(3, 4003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__287);
  __Pyx_GIVEREF(__pyx_tuple__287);
  __pyx_codeobj__288 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__287, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_camlight, 4003, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__288)) __PYX_ERR(3, 4003, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4006
 *     mj_camlight(m.ptr, d.ptr)
 * 
 * def _mj_tendon(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_tendon(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__289 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__289)) __PYX_ERR(3, 4006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__289);
  __Pyx_GIVEREF(__pyx_tuple__289);
  __pyx_codeobj__290 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__289, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_tendon, 4006, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__290)) __PYX_ERR(3, 4006, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4009
 *     mj_tendon(m.ptr, d.ptr)
 * 
 * def _mj_transmission(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_transmission(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__291 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__291)) __PYX_ERR(3, 4009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__291);
  __Pyx_GIVEREF(__pyx_tuple__291);
  __pyx_codeobj__292 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__291, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_transmission, 4009, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__292)) __PYX_ERR(3, 4009, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4012
 *     mj_transmission(m.ptr, d.ptr)
 * 
 * def _mj_crb(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_crb(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__293 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__293)) __PYX_ERR(3, 4012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__293);
  __Pyx_GIVEREF(__pyx_tuple__293);
  __pyx_codeobj__294 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__293, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_crb, 4012, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__294)) __PYX_ERR(3, 4012, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4015
 *     mj_crb(m.ptr, d.ptr)
 * 
 * def _mj_factorM(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_factorM(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__295 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__295)) __PYX_ERR(3, 4015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__295);
  __Pyx_GIVEREF(__pyx_tuple__295);
  __pyx_codeobj__296 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__295, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_factorM, 4015, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__296)) __PYX_ERR(3, 4015, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4018
 *     mj_factorM(m.ptr, d.ptr)
 * 
 * def _mj_solveM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):             # <<<<<<<<<<<<<<
 *     mj_solveM(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 */
  __pyx_tuple__297 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_n); if (unlikely(!__pyx_tuple__297)) __PYX_ERR(3, 4018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__297);
  __Pyx_GIVEREF(__pyx_tuple__297);
  __pyx_codeobj__298 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__297, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_solveM, 4018, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__298)) __PYX_ERR(3, 4018, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4021
 *     mj_solveM(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 * def _mj_solveM2(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):             # <<<<<<<<<<<<<<
 *     mj_solveM2(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 */
  __pyx_tuple__299 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_n); if (unlikely(!__pyx_tuple__299)) __PYX_ERR(3, 4021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__299);
  __Pyx_GIVEREF(__pyx_tuple__299);
  __pyx_codeobj__300 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__299, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_solveM2, 4021, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__300)) __PYX_ERR(3, 4021, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4024
 *     mj_solveM2(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 * def _mj_comVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_comVel(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__301 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__301)) __PYX_ERR(3, 4024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__301);
  __Pyx_GIVEREF(__pyx_tuple__301);
  __pyx_codeobj__302 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__301, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_comVel, 4024, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__302)) __PYX_ERR(3, 4024, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4027
 *     mj_comVel(m.ptr, d.ptr)
 * 
 * def _mj_passive(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_passive(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__303 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__303)) __PYX_ERR(3, 4027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__303);
  __Pyx_GIVEREF(__pyx_tuple__303);
  __pyx_codeobj__304 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__303, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_passive, 4027, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__304)) __PYX_ERR(3, 4027, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4030
 *     mj_passive(m.ptr, d.ptr)
 * 
 * def _mj_rne(PyMjModel m, PyMjData d, int flg_acc, np.ndarray[np.float64_t, mode="c", ndim=1] result):             # <<<<<<<<<<<<<<
 *     mj_rne(m.ptr, d.ptr, flg_acc, &result[0])
 * 
 */
  __pyx_tuple__305 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_flg_acc, __pyx_n_s_result); if (unlikely(!__pyx_tuple__305)) __PYX_ERR(3, 4030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__305);
  __Pyx_GIVEREF(__pyx_tuple__305);
  __pyx_codeobj__306 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__305, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_rne, 4030, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__306)) __PYX_ERR(3, 4030, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4033
 *     mj_rne(m.ptr, d.ptr, flg_acc, &result[0])
 * 
 * def _mj_rnePostConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_rnePostConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__307 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__307)) __PYX_ERR(3, 4033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__307);
  __Pyx_GIVEREF(__pyx_tuple__307);
  __pyx_codeobj__308 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__307, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_rnePostConstraint, 4033, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__308)) __PYX_ERR(3, 4033, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4036
 *     mj_rnePostConstraint(m.ptr, d.ptr)
 * 
 * def _mj_collision(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_collision(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__309 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__309)) __PYX_ERR(3, 4036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__309);
  __Pyx_GIVEREF(__pyx_tuple__309);
  __pyx_codeobj__310 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__309, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_collision, 4036, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__310)) __PYX_ERR(3, 4036, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4039
 *     mj_collision(m.ptr, d.ptr)
 * 
 * def _mj_makeConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_makeConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__311 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__311)) __PYX_ERR(3, 4039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__311);
  __Pyx_GIVEREF(__pyx_tuple__311);
  __pyx_codeobj__312 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__311, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_makeConstraint, 4039, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__312)) __PYX_ERR(3, 4039, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4042
 *     mj_makeConstraint(m.ptr, d.ptr)
 * 
 * def _mj_projectConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_projectConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__313 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__313)) __PYX_ERR(3, 4042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__313);
  __Pyx_GIVEREF(__pyx_tuple__313);
  __pyx_codeobj__314 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__313, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_projectConstraint, 4042, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__314)) __PYX_ERR(3, 4042, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4045
 *     mj_projectConstraint(m.ptr, d.ptr)
 * 
 * def _mj_referenceConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_referenceConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_tuple__315 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_d); if (unlikely(!__pyx_tuple__315)) __PYX_ERR(3, 4045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__315);
  __Pyx_GIVEREF(__pyx_tuple__315);
  __pyx_codeobj__316 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__315, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_referenceConstraint, 4045, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__316)) __PYX_ERR(3, 4045, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4048
 *     mj_referenceConstraint(m.ptr, d.ptr)
 * 
 * def _mj_constraintUpdate(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jar, np.ndarray[np.float64_t, mode="c", ndim=1] cost, int flg_coneHessian):             # <<<<<<<<<<<<<<
 *     mj_constraintUpdate(m.ptr, d.ptr, &jar[0], &cost[0], flg_coneHessian)
 * 
 */
  __pyx_tuple__317 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_jar, __pyx_n_s_cost, __pyx_n_s_flg_coneHessian); if (unlikely(!__pyx_tuple__317)) __PYX_ERR(3, 4048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__317);
  __Pyx_GIVEREF(__pyx_tuple__317);
  __pyx_codeobj__318 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__317, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_constraintUpdate, 4048, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__318)) __PYX_ERR(3, 4048, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4051
 *     mj_constraintUpdate(m.ptr, d.ptr, &jar[0], &cost[0], flg_coneHessian)
 * 
 * def _mj_addContact(PyMjModel m, PyMjData d, PyMjContact con):             # <<<<<<<<<<<<<<
 *     return mj_addContact(m.ptr, d.ptr, con.ptr)
 * 
 */
  __pyx_tuple__319 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_con); if (unlikely(!__pyx_tuple__319)) __PYX_ERR(3, 4051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__319);
  __Pyx_GIVEREF(__pyx_tuple__319);
  __pyx_codeobj__320 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__319, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_addContact, 4051, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__320)) __PYX_ERR(3, 4051, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4054
 *     return mj_addContact(m.ptr, d.ptr, con.ptr)
 * 
 * def _mj_isPyramidal(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isPyramidal(m.ptr)
 * 
 */
  __pyx_tuple__321 = PyTuple_Pack(1, __pyx_n_s_m); if (unlikely(!__pyx_tuple__321)) __PYX_ERR(3, 4054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__321);
  __Pyx_GIVEREF(__pyx_tuple__321);
  __pyx_codeobj__322 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__321, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_isPyramidal, 4054, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__322)) __PYX_ERR(3, 4054, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4057
 *     return mj_isPyramidal(m.ptr)
 * 
 * def _mj_isSparse(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isSparse(m.ptr)
 * 
 */
  __pyx_tuple__323 = PyTuple_Pack(1, __pyx_n_s_m); if (unlikely(!__pyx_tuple__323)) __PYX_ERR(3, 4057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__323);
  __Pyx_GIVEREF(__pyx_tuple__323);
  __pyx_codeobj__324 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__323, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_isSparse, 4057, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__324)) __PYX_ERR(3, 4057, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4060
 *     return mj_isSparse(m.ptr)
 * 
 * def _mj_isDual(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isDual(m.ptr)
 * 
 */
  __pyx_tuple__325 = PyTuple_Pack(1, __pyx_n_s_m); if (unlikely(!__pyx_tuple__325)) __PYX_ERR(3, 4060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__325);
  __Pyx_GIVEREF(__pyx_tuple__325);
  __pyx_codeobj__326 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__325, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_isDual, 4060, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__326)) __PYX_ERR(3, 4060, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4063
 *     return mj_isDual(m.ptr)
 * 
 * def _mj_mulJacVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulJacVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */
  __pyx_tuple__327 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_res, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__327)) __PYX_ERR(3, 4063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__327);
  __Pyx_GIVEREF(__pyx_tuple__327);
  __pyx_codeobj__328 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__327, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_mulJacVec, 4063, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__328)) __PYX_ERR(3, 4063, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4066
 *     mj_mulJacVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_mulJacTVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulJacTVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */
  __pyx_tuple__329 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_res, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__329)) __PYX_ERR(3, 4066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__329);
  __Pyx_GIVEREF(__pyx_tuple__329);
  __pyx_codeobj__330 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__329, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_mulJacTVec, 4066, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__330)) __PYX_ERR(3, 4066, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4069
 *     mj_mulJacTVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_jac(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body):             # <<<<<<<<<<<<<<
 *     mj_jac(m.ptr, d.ptr, &jacp[0], &jacr[0], &point[0], body)
 * 
 */
  __pyx_tuple__331 = PyTuple_Pack(6, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_jacp, __pyx_n_s_jacr, __pyx_n_s_point, __pyx_n_s_body); if (unlikely(!__pyx_tuple__331)) __PYX_ERR(3, 4069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__331);
  __Pyx_GIVEREF(__pyx_tuple__331);
  __pyx_codeobj__332 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__331, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_jac, 4069, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__332)) __PYX_ERR(3, 4069, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4072
 *     mj_jac(m.ptr, d.ptr, &jacp[0], &jacr[0], &point[0], body)
 * 
 * def _mj_jacBody(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):             # <<<<<<<<<<<<<<
 *     mj_jacBody(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 */
  __pyx_tuple__333 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_jacp, __pyx_n_s_jacr, __pyx_n_s_body); if (unlikely(!__pyx_tuple__333)) __PYX_ERR(3, 4072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__333);
  __Pyx_GIVEREF(__pyx_tuple__333);
  __pyx_codeobj__334 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__333, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_jacBody, 4072, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__334)) __PYX_ERR(3, 4072, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4075
 *     mj_jacBody(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 * def _mj_jacBodyCom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):             # <<<<<<<<<<<<<<
 *     mj_jacBodyCom(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 */
  __pyx_tuple__335 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_jacp, __pyx_n_s_jacr, __pyx_n_s_body); if (unlikely(!__pyx_tuple__335)) __PYX_ERR(3, 4075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__335);
  __Pyx_GIVEREF(__pyx_tuple__335);
  __pyx_codeobj__336 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__335, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_jacBodyCom, 4075, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__336)) __PYX_ERR(3, 4075, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4078
 *     mj_jacBodyCom(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 * def _mj_jacGeom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int geom):             # <<<<<<<<<<<<<<
 *     mj_jacGeom(m.ptr, d.ptr, &jacp[0], &jacr[0], geom)
 * 
 */
  __pyx_tuple__337 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_jacp, __pyx_n_s_jacr, __pyx_n_s_geom); if (unlikely(!__pyx_tuple__337)) __PYX_ERR(3, 4078, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__337);
  __Pyx_GIVEREF(__pyx_tuple__337);
  __pyx_codeobj__338 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__337, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_jacGeom, 4078, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__338)) __PYX_ERR(3, 4078, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4081
 *     mj_jacGeom(m.ptr, d.ptr, &jacp[0], &jacr[0], geom)
 * 
 * def _mj_jacSite(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int site):             # <<<<<<<<<<<<<<
 *     mj_jacSite(m.ptr, d.ptr, &jacp[0], &jacr[0], site)
 * 
 */
  __pyx_tuple__339 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_jacp, __pyx_n_s_jacr, __pyx_n_s_site); if (unlikely(!__pyx_tuple__339)) __PYX_ERR(3, 4081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__339);
  __Pyx_GIVEREF(__pyx_tuple__339);
  __pyx_codeobj__340 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__339, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_jacSite, 4081, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__340)) __PYX_ERR(3, 4081, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4084
 *     mj_jacSite(m.ptr, d.ptr, &jacp[0], &jacr[0], site)
 * 
 * def _mj_jacPointAxis(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacPoint, np.ndarray[np.float64_t, mode="c", ndim=1] jacAxis, np.ndarray[np.float64_t, mode="c", ndim=1] point, np.ndarray[np.float64_t, mode="c", ndim=1] axis, int body):             # <<<<<<<<<<<<<<
 *     mj_jacPointAxis(m.ptr, d.ptr, &jacPoint[0], &jacAxis[0], &point[0], &axis[0], body)
 * 
 */
  __pyx_tuple__341 = PyTuple_Pack(7, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_jacPoint, __pyx_n_s_jacAxis, __pyx_n_s_point, __pyx_n_s_axis, __pyx_n_s_body); if (unlikely(!__pyx_tuple__341)) __PYX_ERR(3, 4084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__341);
  __Pyx_GIVEREF(__pyx_tuple__341);
  __pyx_codeobj__342 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__341, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_jacPointAxis, 4084, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__342)) __PYX_ERR(3, 4084, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4087
 *     mj_jacPointAxis(m.ptr, d.ptr, &jacPoint[0], &jacAxis[0], &point[0], &axis[0], body)
 * 
 * def _mj_name2id(PyMjModel m, int type, str name):             # <<<<<<<<<<<<<<
 *     return mj_name2id(m.ptr, type, name.encode())
 * 
 */
  __pyx_tuple__343 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_type, __pyx_n_s_name); if (unlikely(!__pyx_tuple__343)) __PYX_ERR(3, 4087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__343);
  __Pyx_GIVEREF(__pyx_tuple__343);
  __pyx_codeobj__344 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__343, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_name2id, 4087, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__344)) __PYX_ERR(3, 4087, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4090
 *     return mj_name2id(m.ptr, type, name.encode())
 * 
 * def _mj_fullM(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] dst, np.ndarray[np.float64_t, mode="c", ndim=1] M):             # <<<<<<<<<<<<<<
 *     mj_fullM(m.ptr, &dst[0], &M[0])
 * 
 */
  __pyx_tuple__345 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_dst, __pyx_n_s_M); if (unlikely(!__pyx_tuple__345)) __PYX_ERR(3, 4090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__345);
  __Pyx_GIVEREF(__pyx_tuple__345);
  __pyx_codeobj__346 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__345, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_fullM, 4090, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__346)) __PYX_ERR(3, 4090, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4093
 *     mj_fullM(m.ptr, &dst[0], &M[0])
 * 
 * def _mj_mulM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulM(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */
  __pyx_tuple__347 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_res, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__347)) __PYX_ERR(3, 4093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__347);
  __Pyx_GIVEREF(__pyx_tuple__347);
  __pyx_codeobj__348 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_mulM, 4093, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__348)) __PYX_ERR(3, 4093, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4096
 *     mj_mulM(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_applyFT(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] torque, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body, np.ndarray[np.float64_t, mode="c", ndim=1] qfrc_target):             # <<<<<<<<<<<<<<
 *     mj_applyFT(m.ptr, d.ptr, &force[0], &torque[0], &point[0], body, &qfrc_target[0])
 * 
 */
  __pyx_tuple__349 = PyTuple_Pack(7, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_force, __pyx_n_s_torque, __pyx_n_s_point, __pyx_n_s_body, __pyx_n_s_qfrc_target); if (unlikely(!__pyx_tuple__349)) __PYX_ERR(3, 4096, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__349);
  __Pyx_GIVEREF(__pyx_tuple__349);
  __pyx_codeobj__350 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__349, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_applyFT, 4096, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__350)) __PYX_ERR(3, 4096, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4099
 *     mj_applyFT(m.ptr, d.ptr, &force[0], &torque[0], &point[0], body, &qfrc_target[0])
 * 
 * def _mj_objectVelocity(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):             # <<<<<<<<<<<<<<
 *     mj_objectVelocity(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 */
  __pyx_tuple__351 = PyTuple_Pack(6, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_objtype, __pyx_n_s_objid, __pyx_n_s_res, __pyx_n_s_flg_local); if (unlikely(!__pyx_tuple__351)) __PYX_ERR(3, 4099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__351);
  __Pyx_GIVEREF(__pyx_tuple__351);
  __pyx_codeobj__352 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__351, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_objectVelocity, 4099, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__352)) __PYX_ERR(3, 4099, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4102
 *     mj_objectVelocity(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 * def _mj_objectAcceleration(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):             # <<<<<<<<<<<<<<
 *     mj_objectAcceleration(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 */
  __pyx_tuple__353 = PyTuple_Pack(6, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_objtype, __pyx_n_s_objid, __pyx_n_s_res, __pyx_n_s_flg_local); if (unlikely(!__pyx_tuple__353)) __PYX_ERR(3, 4102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__353);
  __Pyx_GIVEREF(__pyx_tuple__353);
  __pyx_codeobj__354 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_objectAcceleration, 4102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__354)) __PYX_ERR(3, 4102, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4105
 *     mj_objectAcceleration(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 * def _mj_differentiatePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt, np.ndarray[np.float64_t, mode="c", ndim=1] qpos1, np.ndarray[np.float64_t, mode="c", ndim=1] qpos2):             # <<<<<<<<<<<<<<
 *     mj_differentiatePos(m.ptr, &qvel[0], dt, &qpos1[0], &qpos2[0])
 * 
 */
  __pyx_tuple__355 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_qvel, __pyx_n_s_dt, __pyx_n_s_qpos1, __pyx_n_s_qpos2); if (unlikely(!__pyx_tuple__355)) __PYX_ERR(3, 4105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__355);
  __Pyx_GIVEREF(__pyx_tuple__355);
  __pyx_codeobj__356 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__355, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_differentiatePos, 4105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__356)) __PYX_ERR(3, 4105, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4108
 *     mj_differentiatePos(m.ptr, &qvel[0], dt, &qpos1[0], &qpos2[0])
 * 
 * def _mj_contactForce(PyMjModel m, PyMjData d, int id, np.ndarray[np.float64_t, mode="c", ndim=1] result):             # <<<<<<<<<<<<<<
 *     mj_contactForce(m.ptr, d.ptr, id, &result[0])
 * 
 */
  __pyx_tuple__357 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_id, __pyx_n_s_result); if (unlikely(!__pyx_tuple__357)) __PYX_ERR(3, 4108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__357);
  __Pyx_GIVEREF(__pyx_tuple__357);
  __pyx_codeobj__358 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__357, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_contactForce, 4108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__358)) __PYX_ERR(3, 4108, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4111
 *     mj_contactForce(m.ptr, d.ptr, id, &result[0])
 * 
 * def _mj_integratePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt):             # <<<<<<<<<<<<<<
 *     mj_integratePos(m.ptr, &qpos[0], &qvel[0], dt)
 * 
 */
  __pyx_tuple__359 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_qpos, __pyx_n_s_qvel, __pyx_n_s_dt); if (unlikely(!__pyx_tuple__359)) __PYX_ERR(3, 4111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__359);
  __Pyx_GIVEREF(__pyx_tuple__359);
  __pyx_codeobj__360 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__359, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_integratePos, 4111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__360)) __PYX_ERR(3, 4111, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4114
 *     mj_integratePos(m.ptr, &qpos[0], &qvel[0], dt)
 * 
 * def _mj_normalizeQuat(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos):             # <<<<<<<<<<<<<<
 *     mj_normalizeQuat(m.ptr, &qpos[0])
 * 
 */
  __pyx_tuple__361 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_qpos); if (unlikely(!__pyx_tuple__361)) __PYX_ERR(3, 4114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__361);
  __Pyx_GIVEREF(__pyx_tuple__361);
  __pyx_codeobj__362 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__361, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_normalizeQuat, 4114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__362)) __PYX_ERR(3, 4114, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4117
 *     mj_normalizeQuat(m.ptr, &qpos[0])
 * 
 * def _mj_local2Global(PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] xpos, np.ndarray[np.float64_t, mode="c", ndim=1] xmat, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, int body):             # <<<<<<<<<<<<<<
 *     mj_local2Global(d.ptr, &xpos[0], &xmat[0], &pos[0], &quat[0], body)
 * 
 */
  __pyx_tuple__363 = PyTuple_Pack(6, __pyx_n_s_d, __pyx_n_s_xpos, __pyx_n_s_xmat, __pyx_n_s_pos, __pyx_n_s_quat, __pyx_n_s_body); if (unlikely(!__pyx_tuple__363)) __PYX_ERR(3, 4117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__363);
  __Pyx_GIVEREF(__pyx_tuple__363);
  __pyx_codeobj__364 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__363, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_local2Global, 4117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__364)) __PYX_ERR(3, 4117, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4120
 *     mj_local2Global(d.ptr, &xpos[0], &xmat[0], &pos[0], &quat[0], body)
 * 
 * def _mj_getTotalmass(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_getTotalmass(m.ptr)
 * 
 */
  __pyx_tuple__365 = PyTuple_Pack(1, __pyx_n_s_m); if (unlikely(!__pyx_tuple__365)) __PYX_ERR(3, 4120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__365);
  __Pyx_GIVEREF(__pyx_tuple__365);
  __pyx_codeobj__366 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__365, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_getTotalmass, 4120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__366)) __PYX_ERR(3, 4120, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4123
 *     return mj_getTotalmass(m.ptr)
 * 
 * def _mj_setTotalmass(PyMjModel m, float newmass):             # <<<<<<<<<<<<<<
 *     mj_setTotalmass(m.ptr, newmass)
 * 
 */
  __pyx_tuple__367 = PyTuple_Pack(2, __pyx_n_s_m, __pyx_n_s_newmass); if (unlikely(!__pyx_tuple__367)) __PYX_ERR(3, 4123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__367);
  __Pyx_GIVEREF(__pyx_tuple__367);
  __pyx_codeobj__368 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__367, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_setTotalmass, 4123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__368)) __PYX_ERR(3, 4123, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4126
 *     mj_setTotalmass(m.ptr, newmass)
 * 
 * def _mj_version():             # <<<<<<<<<<<<<<
 *     return mj_version()
 * 
 */
  __pyx_codeobj__369 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_version, 4126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__369)) __PYX_ERR(3, 4126, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4129
 *     return mj_version()
 * 
 * def _mj_rayHfield(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mj_rayHfield(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 */
  __pyx_tuple__370 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_geomid, __pyx_n_s_pnt, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__370)) __PYX_ERR(3, 4129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__370);
  __Pyx_GIVEREF(__pyx_tuple__370);
  __pyx_codeobj__371 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__370, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_rayHfield, 4129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__371)) __PYX_ERR(3, 4129, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4132
 *     return mj_rayHfield(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 * def _mj_rayMesh(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mj_rayMesh(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 */
  __pyx_tuple__372 = PyTuple_Pack(5, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_geomid, __pyx_n_s_pnt, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__372)) __PYX_ERR(3, 4132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__372);
  __Pyx_GIVEREF(__pyx_tuple__372);
  __pyx_codeobj__373 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__372, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_rayMesh, 4132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__373)) __PYX_ERR(3, 4132, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4135
 *     return mj_rayMesh(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 * def _mju_rayGeom(np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] size, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int geomtype):             # <<<<<<<<<<<<<<
 *     return mju_rayGeom(&pos[0], &mat[0], &size[0], &pnt[0], &vec[0], geomtype)
 * 
 */
  __pyx_tuple__374 = PyTuple_Pack(6, __pyx_n_s_pos, __pyx_n_s_mat, __pyx_n_s_size, __pyx_n_s_pnt, __pyx_n_s_vec, __pyx_n_s_geomtype); if (unlikely(!__pyx_tuple__374)) __PYX_ERR(3, 4135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__374);
  __Pyx_GIVEREF(__pyx_tuple__374);
  __pyx_codeobj__375 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__374, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_rayGeom, 4135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__375)) __PYX_ERR(3, 4135, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4138
 *     return mju_rayGeom(&pos[0], &mat[0], &size[0], &pnt[0], &vec[0], geomtype)
 * 
 * def _mjv_defaultCamera(PyMjvCamera cam):             # <<<<<<<<<<<<<<
 *     mjv_defaultCamera(cam.ptr)
 * 
 */
  __pyx_tuple__376 = PyTuple_Pack(1, __pyx_n_s_cam); if (unlikely(!__pyx_tuple__376)) __PYX_ERR(3, 4138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__376);
  __Pyx_GIVEREF(__pyx_tuple__376);
  __pyx_codeobj__377 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__376, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_defaultCamera, 4138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__377)) __PYX_ERR(3, 4138, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4141
 *     mjv_defaultCamera(cam.ptr)
 * 
 * def _mjv_defaultPerturb(PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_defaultPerturb(pert.ptr)
 * 
 */
  __pyx_tuple__378 = PyTuple_Pack(1, __pyx_n_s_pert); if (unlikely(!__pyx_tuple__378)) __PYX_ERR(3, 4141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__378);
  __Pyx_GIVEREF(__pyx_tuple__378);
  __pyx_codeobj__379 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__378, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_defaultPerturb, 4141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__379)) __PYX_ERR(3, 4141, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4144
 *     mjv_defaultPerturb(pert.ptr)
 * 
 * def _mjv_room2model(np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_room2model(&modelpos[0], &modelquat[0], &roompos[0], &roomquat[0], scn.ptr)
 * 
 */
  __pyx_tuple__380 = PyTuple_Pack(5, __pyx_n_s_modelpos, __pyx_n_s_modelquat, __pyx_n_s_roompos, __pyx_n_s_roomquat, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__380)) __PYX_ERR(3, 4144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__380);
  __Pyx_GIVEREF(__pyx_tuple__380);
  __pyx_codeobj__381 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__380, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_room2model, 4144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__381)) __PYX_ERR(3, 4144, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4147
 *     mjv_room2model(&modelpos[0], &modelquat[0], &roompos[0], &roomquat[0], scn.ptr)
 * 
 * def _mjv_model2room(np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_model2room(&roompos[0], &roomquat[0], &modelpos[0], &modelquat[0], scn.ptr)
 * 
 */
  __pyx_tuple__382 = PyTuple_Pack(5, __pyx_n_s_roompos, __pyx_n_s_roomquat, __pyx_n_s_modelpos, __pyx_n_s_modelquat, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__382)) __PYX_ERR(3, 4147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__382);
  __Pyx_GIVEREF(__pyx_tuple__382);
  __pyx_codeobj__383 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_model2room, 4147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__383)) __PYX_ERR(3, 4147, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4150
 *     mjv_model2room(&roompos[0], &roomquat[0], &modelpos[0], &modelquat[0], scn.ptr)
 * 
 * def _mjv_cameraInModel(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_cameraInModel(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 */
  __pyx_tuple__384 = PyTuple_Pack(4, __pyx_n_s_headpos, __pyx_n_s_forward, __pyx_n_s_up, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__384)) __PYX_ERR(3, 4150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__384);
  __Pyx_GIVEREF(__pyx_tuple__384);
  __pyx_codeobj__385 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__384, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_cameraInModel, 4150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__385)) __PYX_ERR(3, 4150, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4153
 *     mjv_cameraInModel(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 * def _mjv_cameraInRoom(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_cameraInRoom(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 */
  __pyx_tuple__386 = PyTuple_Pack(4, __pyx_n_s_headpos, __pyx_n_s_forward, __pyx_n_s_up, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__386)) __PYX_ERR(3, 4153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__386);
  __Pyx_GIVEREF(__pyx_tuple__386);
  __pyx_codeobj__387 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__386, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_cameraInRoom, 4153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__387)) __PYX_ERR(3, 4153, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4156
 *     mjv_cameraInRoom(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 * def _mjv_frustumHeight(PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     return mjv_frustumHeight(scn.ptr)
 * 
 */
  __pyx_tuple__388 = PyTuple_Pack(1, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__388)) __PYX_ERR(3, 4156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__388);
  __Pyx_GIVEREF(__pyx_tuple__388);
  __pyx_codeobj__389 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__388, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_frustumHeight, 4156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__389)) __PYX_ERR(3, 4156, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4159
 *     return mjv_frustumHeight(scn.ptr)
 * 
 * def _mjv_alignToCamera(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] forward):             # <<<<<<<<<<<<<<
 *     mjv_alignToCamera(&res[0], &vec[0], &forward[0])
 * 
 */
  __pyx_tuple__390 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_forward); if (unlikely(!__pyx_tuple__390)) __PYX_ERR(3, 4159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__390);
  __Pyx_GIVEREF(__pyx_tuple__390);
  __pyx_codeobj__391 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__390, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_alignToCamera, 4159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__391)) __PYX_ERR(3, 4159, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4162
 *     mjv_alignToCamera(&res[0], &vec[0], &forward[0])
 * 
 * def _mjv_moveCamera(PyMjModel m, int action, float reldx, float reldy, PyMjvScene scn, PyMjvCamera cam):             # <<<<<<<<<<<<<<
 *     mjv_moveCamera(m.ptr, action, reldx, reldy, scn.ptr, cam.ptr)
 * 
 */
  __pyx_tuple__392 = PyTuple_Pack(6, __pyx_n_s_m, __pyx_n_s_action, __pyx_n_s_reldx, __pyx_n_s_reldy, __pyx_n_s_scn, __pyx_n_s_cam); if (unlikely(!__pyx_tuple__392)) __PYX_ERR(3, 4162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__392);
  __Pyx_GIVEREF(__pyx_tuple__392);
  __pyx_codeobj__393 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__392, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_moveCamera, 4162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__393)) __PYX_ERR(3, 4162, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4165
 *     mjv_moveCamera(m.ptr, action, reldx, reldy, scn.ptr, cam.ptr)
 * 
 * def _mjv_movePerturb(PyMjModel m, PyMjData d, int action, float reldx, float reldy, PyMjvScene scn, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_movePerturb(m.ptr, d.ptr, action, reldx, reldy, scn.ptr, pert.ptr)
 * 
 */
  __pyx_tuple__394 = PyTuple_Pack(7, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_action, __pyx_n_s_reldx, __pyx_n_s_reldy, __pyx_n_s_scn, __pyx_n_s_pert); if (unlikely(!__pyx_tuple__394)) __PYX_ERR(3, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__394);
  __Pyx_GIVEREF(__pyx_tuple__394);
  __pyx_codeobj__395 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__394, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_movePerturb, 4165, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__395)) __PYX_ERR(3, 4165, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4168
 *     mjv_movePerturb(m.ptr, d.ptr, action, reldx, reldy, scn.ptr, pert.ptr)
 * 
 * def _mjv_moveModel(PyMjModel m, int action, float reldx, float reldy, np.ndarray[np.float64_t, mode="c", ndim=1] roomup, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_moveModel(m.ptr, action, reldx, reldy, &roomup[0], scn.ptr)
 * 
 */
  __pyx_tuple__396 = PyTuple_Pack(6, __pyx_n_s_m, __pyx_n_s_action, __pyx_n_s_reldx, __pyx_n_s_reldy, __pyx_n_s_roomup, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__396)) __PYX_ERR(3, 4168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__396);
  __Pyx_GIVEREF(__pyx_tuple__396);
  __pyx_codeobj__397 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__396, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_moveModel, 4168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__397)) __PYX_ERR(3, 4168, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4171
 *     mjv_moveModel(m.ptr, action, reldx, reldy, &roomup[0], scn.ptr)
 * 
 * def _mjv_initPerturb(PyMjModel m, PyMjData d, PyMjvScene scn, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_initPerturb(m.ptr, d.ptr, scn.ptr, pert.ptr)
 * 
 */
  __pyx_tuple__398 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_scn, __pyx_n_s_pert); if (unlikely(!__pyx_tuple__398)) __PYX_ERR(3, 4171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__398);
  __Pyx_GIVEREF(__pyx_tuple__398);
  __pyx_codeobj__399 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__398, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_initPerturb, 4171, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__399)) __PYX_ERR(3, 4171, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4174
 *     mjv_initPerturb(m.ptr, d.ptr, scn.ptr, pert.ptr)
 * 
 * def _mjv_applyPerturbPose(PyMjModel m, PyMjData d, PyMjvPerturb pert, int flg_paused):             # <<<<<<<<<<<<<<
 *     mjv_applyPerturbPose(m.ptr, d.ptr, pert.ptr, flg_paused)
 * 
 */
  __pyx_tuple__400 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_pert, __pyx_n_s_flg_paused); if (unlikely(!__pyx_tuple__400)) __PYX_ERR(3, 4174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__400);
  __Pyx_GIVEREF(__pyx_tuple__400);
  __pyx_codeobj__401 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__400, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_applyPerturbPose, 4174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__401)) __PYX_ERR(3, 4174, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4177
 *     mjv_applyPerturbPose(m.ptr, d.ptr, pert.ptr, flg_paused)
 * 
 * def _mjv_applyPerturbForce(PyMjModel m, PyMjData d, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_applyPerturbForce(m.ptr, d.ptr, pert.ptr)
 * 
 */
  __pyx_tuple__402 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_pert); if (unlikely(!__pyx_tuple__402)) __PYX_ERR(3, 4177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__402);
  __Pyx_GIVEREF(__pyx_tuple__402);
  __pyx_codeobj__403 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__402, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_applyPerturbForce, 4177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__403)) __PYX_ERR(3, 4177, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4180
 *     mjv_applyPerturbForce(m.ptr, d.ptr, pert.ptr)
 * 
 * def _mjv_select(PyMjModel m, PyMjData d, PyMjvOption vopt, float aspectratio, float relx, float rely, PyMjvScene scn, np.ndarray[np.float64_t, mode="c", ndim=1] selpnt):             # <<<<<<<<<<<<<<
 *     return mjv_select(m.ptr, d.ptr, vopt.ptr, aspectratio, relx, rely, scn.ptr, &selpnt[0])
 * 
 */
  __pyx_tuple__404 = PyTuple_Pack(8, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_vopt, __pyx_n_s_aspectratio, __pyx_n_s_relx, __pyx_n_s_rely, __pyx_n_s_scn, __pyx_n_s_selpnt); if (unlikely(!__pyx_tuple__404)) __PYX_ERR(3, 4180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__404);
  __Pyx_GIVEREF(__pyx_tuple__404);
  __pyx_codeobj__405 = (PyObject*)__Pyx_PyCode_New(8, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__404, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_select, 4180, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__405)) __PYX_ERR(3, 4180, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4183
 *     return mjv_select(m.ptr, d.ptr, vopt.ptr, aspectratio, relx, rely, scn.ptr, &selpnt[0])
 * 
 * def _mjv_defaultOption(PyMjvOption opt):             # <<<<<<<<<<<<<<
 *     mjv_defaultOption(opt.ptr)
 * 
 */
  __pyx_tuple__406 = PyTuple_Pack(1, __pyx_n_s_opt); if (unlikely(!__pyx_tuple__406)) __PYX_ERR(3, 4183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__406);
  __Pyx_GIVEREF(__pyx_tuple__406);
  __pyx_codeobj__407 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__406, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_defaultOption, 4183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__407)) __PYX_ERR(3, 4183, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4186
 *     mjv_defaultOption(opt.ptr)
 * 
 * def _mjv_defaultFigure(PyMjvFigure fig):             # <<<<<<<<<<<<<<
 *     mjv_defaultFigure(fig.ptr)
 * 
 */
  __pyx_tuple__408 = PyTuple_Pack(1, __pyx_n_s_fig); if (unlikely(!__pyx_tuple__408)) __PYX_ERR(3, 4186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__408);
  __Pyx_GIVEREF(__pyx_tuple__408);
  __pyx_codeobj__409 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__408, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_defaultFigure, 4186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__409)) __PYX_ERR(3, 4186, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4189
 *     mjv_defaultFigure(fig.ptr)
 * 
 * def _mjv_makeConnector(PyMjvGeom geom, int type, float width, float a0, float a1, float a2, float b0, float b1, float b2):             # <<<<<<<<<<<<<<
 *     mjv_makeConnector(geom.ptr, type, width, a0, a1, a2, b0, b1, b2)
 * 
 */
  __pyx_tuple__410 = PyTuple_Pack(9, __pyx_n_s_geom, __pyx_n_s_type, __pyx_n_s_width, __pyx_n_s_a0, __pyx_n_s_a1, __pyx_n_s_a2, __pyx_n_s_b0, __pyx_n_s_b1, __pyx_n_s_b2); if (unlikely(!__pyx_tuple__410)) __PYX_ERR(3, 4189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__410);
  __Pyx_GIVEREF(__pyx_tuple__410);
  __pyx_codeobj__411 = (PyObject*)__Pyx_PyCode_New(9, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__410, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_makeConnector, 4189, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__411)) __PYX_ERR(3, 4189, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4192
 *     mjv_makeConnector(geom.ptr, type, width, a0, a1, a2, b0, b1, b2)
 * 
 * def _mjv_makeScene(PyMjvScene scn, int maxgeom):             # <<<<<<<<<<<<<<
 *     mjv_makeScene(scn.ptr, maxgeom)
 * 
 */
  __pyx_tuple__412 = PyTuple_Pack(2, __pyx_n_s_scn, __pyx_n_s_maxgeom); if (unlikely(!__pyx_tuple__412)) __PYX_ERR(3, 4192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__412);
  __Pyx_GIVEREF(__pyx_tuple__412);
  __pyx_codeobj__413 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_makeScene, 4192, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__413)) __PYX_ERR(3, 4192, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4195
 *     mjv_makeScene(scn.ptr, maxgeom)
 * 
 * def _mjv_freeScene(PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_freeScene(scn.ptr)
 * 
 */
  __pyx_tuple__414 = PyTuple_Pack(1, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__414)) __PYX_ERR(3, 4195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__414);
  __Pyx_GIVEREF(__pyx_tuple__414);
  __pyx_codeobj__415 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__414, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_freeScene, 4195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__415)) __PYX_ERR(3, 4195, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4198
 *     mjv_freeScene(scn.ptr)
 * 
 * def _mjv_updateScene(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, PyMjvCamera cam, int catmask, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_updateScene(m.ptr, d.ptr, opt.ptr, pert.ptr, cam.ptr, catmask, scn.ptr)
 * 
 */
  __pyx_tuple__416 = PyTuple_Pack(7, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_opt, __pyx_n_s_pert, __pyx_n_s_cam, __pyx_n_s_catmask, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__416)) __PYX_ERR(3, 4198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__416);
  __Pyx_GIVEREF(__pyx_tuple__416);
  __pyx_codeobj__417 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_updateScene, 4198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__417)) __PYX_ERR(3, 4198, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4201
 *     mjv_updateScene(m.ptr, d.ptr, opt.ptr, pert.ptr, cam.ptr, catmask, scn.ptr)
 * 
 * def _mjv_addGeoms(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, int catmask, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_addGeoms(m.ptr, d.ptr, opt.ptr, pert.ptr, catmask, scn.ptr)
 * 
 */
  __pyx_tuple__418 = PyTuple_Pack(6, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_opt, __pyx_n_s_pert, __pyx_n_s_catmask, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__418)) __PYX_ERR(3, 4201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__418);
  __Pyx_GIVEREF(__pyx_tuple__418);
  __pyx_codeobj__419 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__418, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_addGeoms, 4201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__419)) __PYX_ERR(3, 4201, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4204
 *     mjv_addGeoms(m.ptr, d.ptr, opt.ptr, pert.ptr, catmask, scn.ptr)
 * 
 * def _mjv_updateCamera(PyMjModel m, PyMjData d, PyMjvCamera cam, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_updateCamera(m.ptr, d.ptr, cam.ptr, scn.ptr)
 * 
 */
  __pyx_tuple__420 = PyTuple_Pack(4, __pyx_n_s_m, __pyx_n_s_d, __pyx_n_s_cam, __pyx_n_s_scn); if (unlikely(!__pyx_tuple__420)) __PYX_ERR(3, 4204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__420);
  __Pyx_GIVEREF(__pyx_tuple__420);
  __pyx_codeobj__421 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__420, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjv_updateCamera, 4204, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__421)) __PYX_ERR(3, 4204, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4207
 *     mjv_updateCamera(m.ptr, d.ptr, cam.ptr, scn.ptr)
 * 
 * def _mjr_defaultContext(PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_defaultContext(con.ptr)
 * 
 */
  __pyx_tuple__422 = PyTuple_Pack(1, __pyx_n_s_con); if (unlikely(!__pyx_tuple__422)) __PYX_ERR(3, 4207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__422);
  __Pyx_GIVEREF(__pyx_tuple__422);
  __pyx_codeobj__423 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__422, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_defaultContext, 4207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__423)) __PYX_ERR(3, 4207, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4210
 *     mjr_defaultContext(con.ptr)
 * 
 * def _mjr_makeContext(PyMjModel m, PyMjrContext con, int fontscale):             # <<<<<<<<<<<<<<
 *     mjr_makeContext(m.ptr, con.ptr, fontscale)
 * 
 */
  __pyx_tuple__424 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_con, __pyx_n_s_fontscale); if (unlikely(!__pyx_tuple__424)) __PYX_ERR(3, 4210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__424);
  __Pyx_GIVEREF(__pyx_tuple__424);
  __pyx_codeobj__425 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__424, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_makeContext, 4210, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__425)) __PYX_ERR(3, 4210, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4213
 *     mjr_makeContext(m.ptr, con.ptr, fontscale)
 * 
 * def _mjr_freeContext(PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_freeContext(con.ptr)
 * 
 */
  __pyx_tuple__426 = PyTuple_Pack(1, __pyx_n_s_con); if (unlikely(!__pyx_tuple__426)) __PYX_ERR(3, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__426);
  __Pyx_GIVEREF(__pyx_tuple__426);
  __pyx_codeobj__427 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__426, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_freeContext, 4213, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__427)) __PYX_ERR(3, 4213, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4216
 *     mjr_freeContext(con.ptr)
 * 
 * def _mjr_uploadTexture(PyMjModel m, PyMjrContext con, int texid):             # <<<<<<<<<<<<<<
 *     mjr_uploadTexture(m.ptr, con.ptr, texid)
 * 
 */
  __pyx_tuple__428 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_con, __pyx_n_s_texid); if (unlikely(!__pyx_tuple__428)) __PYX_ERR(3, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__428);
  __Pyx_GIVEREF(__pyx_tuple__428);
  __pyx_codeobj__429 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__428, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_uploadTexture, 4216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__429)) __PYX_ERR(3, 4216, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4219
 *     mjr_uploadTexture(m.ptr, con.ptr, texid)
 * 
 * def _mjr_uploadMesh(PyMjModel m, PyMjrContext con, int meshid):             # <<<<<<<<<<<<<<
 *     mjr_uploadMesh(m.ptr, con.ptr, meshid)
 * 
 */
  __pyx_tuple__430 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_con, __pyx_n_s_meshid); if (unlikely(!__pyx_tuple__430)) __PYX_ERR(3, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__430);
  __Pyx_GIVEREF(__pyx_tuple__430);
  __pyx_codeobj__431 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__430, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_uploadMesh, 4219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__431)) __PYX_ERR(3, 4219, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4222
 *     mjr_uploadMesh(m.ptr, con.ptr, meshid)
 * 
 * def _mjr_uploadHField(PyMjModel m, PyMjrContext con, int hfieldid):             # <<<<<<<<<<<<<<
 *     mjr_uploadHField(m.ptr, con.ptr, hfieldid)
 * 
 */
  __pyx_tuple__432 = PyTuple_Pack(3, __pyx_n_s_m, __pyx_n_s_con, __pyx_n_s_hfieldid); if (unlikely(!__pyx_tuple__432)) __PYX_ERR(3, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__432);
  __Pyx_GIVEREF(__pyx_tuple__432);
  __pyx_codeobj__433 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__432, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_uploadHField, 4222, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__433)) __PYX_ERR(3, 4222, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4225
 *     mjr_uploadHField(m.ptr, con.ptr, hfieldid)
 * 
 * def _mjr_setBuffer(int framebuffer, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_setBuffer(framebuffer, con.ptr)
 * 
 */
  __pyx_tuple__434 = PyTuple_Pack(2, __pyx_n_s_framebuffer, __pyx_n_s_con); if (unlikely(!__pyx_tuple__434)) __PYX_ERR(3, 4225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__434);
  __Pyx_GIVEREF(__pyx_tuple__434);
  __pyx_codeobj__435 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__434, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_setBuffer, 4225, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__435)) __PYX_ERR(3, 4225, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4228
 *     mjr_setBuffer(framebuffer, con.ptr)
 * 
 * def _mjr_blitBuffer(PyMjrRect src, PyMjrRect dst, int flg_color, int flg_depth, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_blitBuffer(src.ptr[0], dst.ptr[0], flg_color, flg_depth, con.ptr)
 * 
 */
  __pyx_tuple__436 = PyTuple_Pack(5, __pyx_n_s_src, __pyx_n_s_dst, __pyx_n_s_flg_color, __pyx_n_s_flg_depth, __pyx_n_s_con); if (unlikely(!__pyx_tuple__436)) __PYX_ERR(3, 4228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__436);
  __Pyx_GIVEREF(__pyx_tuple__436);
  __pyx_codeobj__437 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__436, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_blitBuffer, 4228, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__437)) __PYX_ERR(3, 4228, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4231
 *     mjr_blitBuffer(src.ptr[0], dst.ptr[0], flg_color, flg_depth, con.ptr)
 * 
 * def _mjr_overlay(int font, int gridpos, PyMjrRect viewport, str overlay, str overlay2, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_overlay(font, gridpos, viewport.ptr[0], overlay.encode(), overlay2.encode(), con.ptr)
 * 
 */
  __pyx_tuple__438 = PyTuple_Pack(6, __pyx_n_s_font, __pyx_n_s_gridpos, __pyx_n_s_viewport, __pyx_n_s_overlay, __pyx_n_s_overlay2, __pyx_n_s_con); if (unlikely(!__pyx_tuple__438)) __PYX_ERR(3, 4231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__438);
  __Pyx_GIVEREF(__pyx_tuple__438);
  __pyx_codeobj__439 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__438, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_overlay, 4231, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__439)) __PYX_ERR(3, 4231, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4234
 *     mjr_overlay(font, gridpos, viewport.ptr[0], overlay.encode(), overlay2.encode(), con.ptr)
 * 
 * def _mjr_figure(PyMjrRect viewport, PyMjvFigure fig, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_figure(viewport.ptr[0], fig.ptr, con.ptr)
 * 
 */
  __pyx_tuple__440 = PyTuple_Pack(3, __pyx_n_s_viewport, __pyx_n_s_fig, __pyx_n_s_con); if (unlikely(!__pyx_tuple__440)) __PYX_ERR(3, 4234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__440);
  __Pyx_GIVEREF(__pyx_tuple__440);
  __pyx_codeobj__441 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__440, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_figure, 4234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__441)) __PYX_ERR(3, 4234, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4237
 *     mjr_figure(viewport.ptr[0], fig.ptr, con.ptr)
 * 
 * def _mjr_render(PyMjrRect viewport, PyMjvScene scn, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_render(viewport.ptr[0], scn.ptr, con.ptr)
 * 
 */
  __pyx_tuple__442 = PyTuple_Pack(3, __pyx_n_s_viewport, __pyx_n_s_scn, __pyx_n_s_con); if (unlikely(!__pyx_tuple__442)) __PYX_ERR(3, 4237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__442);
  __Pyx_GIVEREF(__pyx_tuple__442);
  __pyx_codeobj__443 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__442, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_render, 4237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__443)) __PYX_ERR(3, 4237, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4240
 *     mjr_render(viewport.ptr[0], scn.ptr, con.ptr)
 * 
 * def _mjr_finish():             # <<<<<<<<<<<<<<
 *     mjr_finish()
 * 
 */
  __pyx_codeobj__444 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_finish, 4240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__444)) __PYX_ERR(3, 4240, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4243
 *     mjr_finish()
 * 
 * def _mjr_getError():             # <<<<<<<<<<<<<<
 *     return mjr_getError()
 * 
 */
  __pyx_codeobj__445 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mjr_getError, 4243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__445)) __PYX_ERR(3, 4243, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4246
 *     return mjr_getError()
 * 
 * def _mju_error(str msg):             # <<<<<<<<<<<<<<
 *     mju_error(msg.encode())
 * 
 */
  __pyx_tuple__446 = PyTuple_Pack(1, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__446)) __PYX_ERR(3, 4246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__446);
  __Pyx_GIVEREF(__pyx_tuple__446);
  __pyx_codeobj__447 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__446, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_error, 4246, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__447)) __PYX_ERR(3, 4246, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4249
 *     mju_error(msg.encode())
 * 
 * def _mju_error_i(str msg, int i):             # <<<<<<<<<<<<<<
 *     mju_error_i(msg.encode(), i)
 * 
 */
  __pyx_tuple__448 = PyTuple_Pack(2, __pyx_n_s_msg, __pyx_n_s_i); if (unlikely(!__pyx_tuple__448)) __PYX_ERR(3, 4249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__448);
  __Pyx_GIVEREF(__pyx_tuple__448);
  __pyx_codeobj__449 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__448, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_error_i, 4249, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__449)) __PYX_ERR(3, 4249, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4252
 *     mju_error_i(msg.encode(), i)
 * 
 * def _mju_error_s(str msg, str text):             # <<<<<<<<<<<<<<
 *     mju_error_s(msg.encode(), text.encode())
 * 
 */
  __pyx_tuple__450 = PyTuple_Pack(2, __pyx_n_s_msg, __pyx_n_s_text); if (unlikely(!__pyx_tuple__450)) __PYX_ERR(3, 4252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__450);
  __Pyx_GIVEREF(__pyx_tuple__450);
  __pyx_codeobj__451 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__450, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_error_s, 4252, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__451)) __PYX_ERR(3, 4252, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4255
 *     mju_error_s(msg.encode(), text.encode())
 * 
 * def _mju_warning(str msg):             # <<<<<<<<<<<<<<
 *     mju_warning(msg.encode())
 * 
 */
  __pyx_tuple__452 = PyTuple_Pack(1, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__452)) __PYX_ERR(3, 4255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__452);
  __Pyx_GIVEREF(__pyx_tuple__452);
  __pyx_codeobj__453 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__452, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_warning, 4255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__453)) __PYX_ERR(3, 4255, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4258
 *     mju_warning(msg.encode())
 * 
 * def _mju_warning_i(str msg, int i):             # <<<<<<<<<<<<<<
 *     mju_warning_i(msg.encode(), i)
 * 
 */
  __pyx_tuple__454 = PyTuple_Pack(2, __pyx_n_s_msg, __pyx_n_s_i); if (unlikely(!__pyx_tuple__454)) __PYX_ERR(3, 4258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__454);
  __Pyx_GIVEREF(__pyx_tuple__454);
  __pyx_codeobj__455 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__454, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_warning_i, 4258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__455)) __PYX_ERR(3, 4258, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4261
 *     mju_warning_i(msg.encode(), i)
 * 
 * def _mju_warning_s(str msg, str text):             # <<<<<<<<<<<<<<
 *     mju_warning_s(msg.encode(), text.encode())
 * 
 */
  __pyx_tuple__456 = PyTuple_Pack(2, __pyx_n_s_msg, __pyx_n_s_text); if (unlikely(!__pyx_tuple__456)) __PYX_ERR(3, 4261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__456);
  __Pyx_GIVEREF(__pyx_tuple__456);
  __pyx_codeobj__457 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__456, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_warning_s, 4261, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__457)) __PYX_ERR(3, 4261, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4264
 *     mju_warning_s(msg.encode(), text.encode())
 * 
 * def _mju_clearHandlers():             # <<<<<<<<<<<<<<
 *     mju_clearHandlers()
 * 
 */
  __pyx_codeobj__458 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_clearHandlers, 4264, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__458)) __PYX_ERR(3, 4264, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4267
 *     mju_clearHandlers()
 * 
 * def _mj_warning(PyMjData d, int warning, int info):             # <<<<<<<<<<<<<<
 *     mj_warning(d.ptr, warning, info)
 * 
 */
  __pyx_tuple__459 = PyTuple_Pack(3, __pyx_n_s_d, __pyx_n_s_warning, __pyx_n_s_info); if (unlikely(!__pyx_tuple__459)) __PYX_ERR(3, 4267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__459);
  __Pyx_GIVEREF(__pyx_tuple__459);
  __pyx_codeobj__460 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__459, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mj_warning, 4267, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__460)) __PYX_ERR(3, 4267, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4270
 *     mj_warning(d.ptr, warning, info)
 * 
 * def _mju_writeLog(str type, str msg):             # <<<<<<<<<<<<<<
 *     mju_writeLog(type.encode(), msg.encode())
 * 
 */
  __pyx_tuple__461 = PyTuple_Pack(2, __pyx_n_s_type, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__461)) __PYX_ERR(3, 4270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__461);
  __Pyx_GIVEREF(__pyx_tuple__461);
  __pyx_codeobj__462 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__461, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_writeLog, 4270, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__462)) __PYX_ERR(3, 4270, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4273
 *     mju_writeLog(type.encode(), msg.encode())
 * 
 * def _mju_zero3(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_zero3(&res[0])
 * 
 */
  __pyx_tuple__463 = PyTuple_Pack(1, __pyx_n_s_res); if (unlikely(!__pyx_tuple__463)) __PYX_ERR(3, 4273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__463);
  __Pyx_GIVEREF(__pyx_tuple__463);
  __pyx_codeobj__464 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__463, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_zero3, 4273, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__464)) __PYX_ERR(3, 4273, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4276
 *     mju_zero3(&res[0])
 * 
 * def _mju_copy3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):             # <<<<<<<<<<<<<<
 *     mju_copy3(&res[0], &data[0])
 * 
 */
  __pyx_tuple__465 = PyTuple_Pack(2, __pyx_n_s_res, __pyx_n_s_data); if (unlikely(!__pyx_tuple__465)) __PYX_ERR(3, 4276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__465);
  __Pyx_GIVEREF(__pyx_tuple__465);
  __pyx_codeobj__466 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__465, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_copy3, 4276, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__466)) __PYX_ERR(3, 4276, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4279
 *     mju_copy3(&res[0], &data[0])
 * 
 * def _mju_scl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):             # <<<<<<<<<<<<<<
 *     mju_scl3(&res[0], &vec[0], scl)
 * 
 */
  __pyx_tuple__467 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_scl); if (unlikely(!__pyx_tuple__467)) __PYX_ERR(3, 4279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__467);
  __Pyx_GIVEREF(__pyx_tuple__467);
  __pyx_codeobj__468 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__467, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_scl3, 4279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__468)) __PYX_ERR(3, 4279, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4282
 *     mju_scl3(&res[0], &vec[0], scl)
 * 
 * def _mju_add3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     mju_add3(&res[0], &vec1[0], &vec2[0])
 * 
 */
  __pyx_tuple__469 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec1, __pyx_n_s_vec2); if (unlikely(!__pyx_tuple__469)) __PYX_ERR(3, 4282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__469);
  __Pyx_GIVEREF(__pyx_tuple__469);
  __pyx_codeobj__470 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__469, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_add3, 4282, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__470)) __PYX_ERR(3, 4282, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4285
 *     mju_add3(&res[0], &vec1[0], &vec2[0])
 * 
 * def _mju_sub3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     mju_sub3(&res[0], &vec1[0], &vec2[0])
 * 
 */
  __pyx_tuple__471 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec1, __pyx_n_s_vec2); if (unlikely(!__pyx_tuple__471)) __PYX_ERR(3, 4285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__471);
  __Pyx_GIVEREF(__pyx_tuple__471);
  __pyx_codeobj__472 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__471, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_sub3, 4285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__472)) __PYX_ERR(3, 4285, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4288
 *     mju_sub3(&res[0], &vec1[0], &vec2[0])
 * 
 * def _mju_addTo3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_addTo3(&res[0], &vec[0])
 * 
 */
  __pyx_tuple__473 = PyTuple_Pack(2, __pyx_n_s_res, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__473)) __PYX_ERR(3, 4288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__473);
  __Pyx_GIVEREF(__pyx_tuple__473);
  __pyx_codeobj__474 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__473, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_addTo3, 4288, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__474)) __PYX_ERR(3, 4288, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4291
 *     mju_addTo3(&res[0], &vec[0])
 * 
 * def _mju_subFrom3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_subFrom3(&res[0], &vec[0])
 * 
 */
  __pyx_tuple__475 = PyTuple_Pack(2, __pyx_n_s_res, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__475)) __PYX_ERR(3, 4291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__475);
  __Pyx_GIVEREF(__pyx_tuple__475);
  __pyx_codeobj__476 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__475, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_subFrom3, 4291, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__476)) __PYX_ERR(3, 4291, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4294
 *     mju_subFrom3(&res[0], &vec[0])
 * 
 * def _mju_addToScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):             # <<<<<<<<<<<<<<
 *     mju_addToScl3(&res[0], &vec[0], scl)
 * 
 */
  __pyx_tuple__477 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_scl); if (unlikely(!__pyx_tuple__477)) __PYX_ERR(3, 4294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__477);
  __Pyx_GIVEREF(__pyx_tuple__477);
  __pyx_codeobj__478 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__477, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_addToScl3, 4294, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__478)) __PYX_ERR(3, 4294, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4297
 *     mju_addToScl3(&res[0], &vec[0], scl)
 * 
 * def _mju_addScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl):             # <<<<<<<<<<<<<<
 *     mju_addScl3(&res[0], &vec1[0], &vec2[0], scl)
 * 
 */
  __pyx_tuple__479 = PyTuple_Pack(4, __pyx_n_s_res, __pyx_n_s_vec1, __pyx_n_s_vec2, __pyx_n_s_scl); if (unlikely(!__pyx_tuple__479)) __PYX_ERR(3, 4297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__479);
  __Pyx_GIVEREF(__pyx_tuple__479);
  __pyx_codeobj__480 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__479, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_addScl3, 4297, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__480)) __PYX_ERR(3, 4297, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4300
 *     mju_addScl3(&res[0], &vec1[0], &vec2[0], scl)
 * 
 * def _mju_normalize3(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     return mju_normalize3(&res[0])
 * 
 */
  __pyx_tuple__481 = PyTuple_Pack(1, __pyx_n_s_res); if (unlikely(!__pyx_tuple__481)) __PYX_ERR(3, 4300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__481);
  __Pyx_GIVEREF(__pyx_tuple__481);
  __pyx_codeobj__482 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__481, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_normalize3, 4300, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__482)) __PYX_ERR(3, 4300, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4303
 *     return mju_normalize3(&res[0])
 * 
 * def _mju_norm3(np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mju_norm3(&vec[0])
 * 
 */
  __pyx_tuple__483 = PyTuple_Pack(1, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__483)) __PYX_ERR(3, 4303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__483);
  __Pyx_GIVEREF(__pyx_tuple__483);
  __pyx_codeobj__484 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__483, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_norm3, 4303, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__484)) __PYX_ERR(3, 4303, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4306
 *     return mju_norm3(&vec[0])
 * 
 * def _mju_dot3(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     return mju_dot3(&vec1[0], &vec2[0])
 * 
 */
  __pyx_tuple__485 = PyTuple_Pack(2, __pyx_n_s_vec1, __pyx_n_s_vec2); if (unlikely(!__pyx_tuple__485)) __PYX_ERR(3, 4306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__485);
  __Pyx_GIVEREF(__pyx_tuple__485);
  __pyx_codeobj__486 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__485, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_dot3, 4306, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__486)) __PYX_ERR(3, 4306, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4309
 *     return mju_dot3(&vec1[0], &vec2[0])
 * 
 * def _mju_dist3(np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2):             # <<<<<<<<<<<<<<
 *     return mju_dist3(&pos1[0], &pos2[0])
 * 
 */
  __pyx_tuple__487 = PyTuple_Pack(2, __pyx_n_s_pos1, __pyx_n_s_pos2); if (unlikely(!__pyx_tuple__487)) __PYX_ERR(3, 4309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__487);
  __Pyx_GIVEREF(__pyx_tuple__487);
  __pyx_codeobj__488 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__487, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_dist3, 4309, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__488)) __PYX_ERR(3, 4309, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4312
 *     return mju_dist3(&pos1[0], &pos2[0])
 * 
 * def _mju_rotVecMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_rotVecMat(&res[0], &vec[0], &mat[0])
 * 
 */
  __pyx_tuple__489 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_mat); if (unlikely(!__pyx_tuple__489)) __PYX_ERR(3, 4312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__489);
  __Pyx_GIVEREF(__pyx_tuple__489);
  __pyx_codeobj__490 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__489, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_rotVecMat, 4312, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__490)) __PYX_ERR(3, 4312, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4315
 *     mju_rotVecMat(&res[0], &vec[0], &mat[0])
 * 
 * def _mju_rotVecMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_rotVecMatT(&res[0], &vec[0], &mat[0])
 * 
 */
  __pyx_tuple__491 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_mat); if (unlikely(!__pyx_tuple__491)) __PYX_ERR(3, 4315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__491);
  __Pyx_GIVEREF(__pyx_tuple__491);
  __pyx_codeobj__492 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__491, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_rotVecMatT, 4315, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__492)) __PYX_ERR(3, 4315, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4318
 *     mju_rotVecMatT(&res[0], &vec[0], &mat[0])
 * 
 * def _mju_cross(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] a, np.ndarray[np.float64_t, mode="c", ndim=1] b):             # <<<<<<<<<<<<<<
 *     mju_cross(&res[0], &a[0], &b[0])
 * 
 */
  __pyx_tuple__493 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_a, __pyx_n_s_b); if (unlikely(!__pyx_tuple__493)) __PYX_ERR(3, 4318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__493);
  __Pyx_GIVEREF(__pyx_tuple__493);
  __pyx_codeobj__494 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__493, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_cross, 4318, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__494)) __PYX_ERR(3, 4318, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4321
 *     mju_cross(&res[0], &a[0], &b[0])
 * 
 * def _mju_zero4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_zero4(&res[0])
 * 
 */
  __pyx_tuple__495 = PyTuple_Pack(1, __pyx_n_s_res); if (unlikely(!__pyx_tuple__495)) __PYX_ERR(3, 4321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__495);
  __Pyx_GIVEREF(__pyx_tuple__495);
  __pyx_codeobj__496 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__495, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_zero4, 4321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__496)) __PYX_ERR(3, 4321, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4324
 *     mju_zero4(&res[0])
 * 
 * def _mju_unit4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_unit4(&res[0])
 * 
 */
  __pyx_tuple__497 = PyTuple_Pack(1, __pyx_n_s_res); if (unlikely(!__pyx_tuple__497)) __PYX_ERR(3, 4324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__497);
  __Pyx_GIVEREF(__pyx_tuple__497);
  __pyx_codeobj__498 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__497, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_unit4, 4324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__498)) __PYX_ERR(3, 4324, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4327
 *     mju_unit4(&res[0])
 * 
 * def _mju_copy4(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):             # <<<<<<<<<<<<<<
 *     mju_copy4(&res[0], &data[0])
 * 
 */
  __pyx_tuple__499 = PyTuple_Pack(2, __pyx_n_s_res, __pyx_n_s_data); if (unlikely(!__pyx_tuple__499)) __PYX_ERR(3, 4327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__499);
  __Pyx_GIVEREF(__pyx_tuple__499);
  __pyx_codeobj__500 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__499, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_copy4, 4327, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__500)) __PYX_ERR(3, 4327, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4330
 *     mju_copy4(&res[0], &data[0])
 * 
 * def _mju_normalize4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     return mju_normalize4(&res[0])
 * 
 */
  __pyx_tuple__501 = PyTuple_Pack(1, __pyx_n_s_res); if (unlikely(!__pyx_tuple__501)) __PYX_ERR(3, 4330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__501);
  __Pyx_GIVEREF(__pyx_tuple__501);
  __pyx_codeobj__502 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__501, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_normalize4, 4330, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__502)) __PYX_ERR(3, 4330, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4333
 *     return mju_normalize4(&res[0])
 * 
 * def _mju_zero(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     mju_zero(&res[0], n)
 * 
 */
  __pyx_tuple__503 = PyTuple_Pack(2, __pyx_n_s_res, __pyx_n_s_n); if (unlikely(!__pyx_tuple__503)) __PYX_ERR(3, 4333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__503);
  __Pyx_GIVEREF(__pyx_tuple__503);
  __pyx_codeobj__504 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__503, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_zero, 4333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__504)) __PYX_ERR(3, 4333, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4336
 *     mju_zero(&res[0], n)
 * 
 * def _mju_copy(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data, int n):             # <<<<<<<<<<<<<<
 *     mju_copy(&res[0], &data[0], n)
 * 
 */
  __pyx_tuple__505 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_data, __pyx_n_s_n); if (unlikely(!__pyx_tuple__505)) __PYX_ERR(3, 4336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__505);
  __Pyx_GIVEREF(__pyx_tuple__505);
  __pyx_codeobj__506 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_copy, 4336, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__506)) __PYX_ERR(3, 4336, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4339
 *     mju_copy(&res[0], &data[0], n)
 * 
 * def _mju_scl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_scl(&res[0], &vec[0], scl, n)
 * 
 */
  __pyx_tuple__507 = PyTuple_Pack(4, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_scl, __pyx_n_s_n); if (unlikely(!__pyx_tuple__507)) __PYX_ERR(3, 4339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__507);
  __Pyx_GIVEREF(__pyx_tuple__507);
  __pyx_codeobj__508 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__507, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_scl, 4339, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__508)) __PYX_ERR(3, 4339, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4342
 *     mju_scl(&res[0], &vec[0], scl, n)
 * 
 * def _mju_add(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     mju_add(&res[0], &vec1[0], &vec2[0], n)
 * 
 */
  __pyx_tuple__509 = PyTuple_Pack(4, __pyx_n_s_res, __pyx_n_s_vec1, __pyx_n_s_vec2, __pyx_n_s_n); if (unlikely(!__pyx_tuple__509)) __PYX_ERR(3, 4342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__509);
  __Pyx_GIVEREF(__pyx_tuple__509);
  __pyx_codeobj__510 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__509, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_add, 4342, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__510)) __PYX_ERR(3, 4342, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4345
 *     mju_add(&res[0], &vec1[0], &vec2[0], n)
 * 
 * def _mju_sub(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     mju_sub(&res[0], &vec1[0], &vec2[0], n)
 * 
 */
  __pyx_tuple__511 = PyTuple_Pack(4, __pyx_n_s_res, __pyx_n_s_vec1, __pyx_n_s_vec2, __pyx_n_s_n); if (unlikely(!__pyx_tuple__511)) __PYX_ERR(3, 4345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__511);
  __Pyx_GIVEREF(__pyx_tuple__511);
  __pyx_codeobj__512 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__511, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_sub, 4345, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__512)) __PYX_ERR(3, 4345, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4348
 *     mju_sub(&res[0], &vec1[0], &vec2[0], n)
 * 
 * def _mju_addTo(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_addTo(&res[0], &vec[0], n)
 * 
 */
  __pyx_tuple__513 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_n); if (unlikely(!__pyx_tuple__513)) __PYX_ERR(3, 4348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__513);
  __Pyx_GIVEREF(__pyx_tuple__513);
  __pyx_codeobj__514 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__513, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_addTo, 4348, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__514)) __PYX_ERR(3, 4348, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4351
 *     mju_addTo(&res[0], &vec[0], n)
 * 
 * def _mju_subFrom(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_subFrom(&res[0], &vec[0], n)
 * 
 */
  __pyx_tuple__515 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_n); if (unlikely(!__pyx_tuple__515)) __PYX_ERR(3, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__515);
  __Pyx_GIVEREF(__pyx_tuple__515);
  __pyx_codeobj__516 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__515, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_subFrom, 4351, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__516)) __PYX_ERR(3, 4351, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4354
 *     mju_subFrom(&res[0], &vec[0], n)
 * 
 * def _mju_addToScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_addToScl(&res[0], &vec[0], scl, n)
 * 
 */
  __pyx_tuple__517 = PyTuple_Pack(4, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_scl, __pyx_n_s_n); if (unlikely(!__pyx_tuple__517)) __PYX_ERR(3, 4354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__517);
  __Pyx_GIVEREF(__pyx_tuple__517);
  __pyx_codeobj__518 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__517, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_addToScl, 4354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__518)) __PYX_ERR(3, 4354, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4357
 *     mju_addToScl(&res[0], &vec[0], scl, n)
 * 
 * def _mju_addScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_addScl(&res[0], &vec1[0], &vec2[0], scl, n)
 * 
 */
  __pyx_tuple__519 = PyTuple_Pack(5, __pyx_n_s_res, __pyx_n_s_vec1, __pyx_n_s_vec2, __pyx_n_s_scl, __pyx_n_s_n); if (unlikely(!__pyx_tuple__519)) __PYX_ERR(3, 4357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__519);
  __Pyx_GIVEREF(__pyx_tuple__519);
  __pyx_codeobj__520 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__519, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_addScl, 4357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__520)) __PYX_ERR(3, 4357, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4360
 *     mju_addScl(&res[0], &vec1[0], &vec2[0], scl, n)
 * 
 * def _mju_normalize(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     return mju_normalize(&res[0], n)
 * 
 */
  __pyx_tuple__521 = PyTuple_Pack(2, __pyx_n_s_res, __pyx_n_s_n); if (unlikely(!__pyx_tuple__521)) __PYX_ERR(3, 4360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__521);
  __Pyx_GIVEREF(__pyx_tuple__521);
  __pyx_codeobj__522 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__521, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_normalize, 4360, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__522)) __PYX_ERR(3, 4360, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4363
 *     return mju_normalize(&res[0], n)
 * 
 * def _mju_norm(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     return mju_norm(&res[0], n)
 * 
 */
  __pyx_tuple__523 = PyTuple_Pack(2, __pyx_n_s_res, __pyx_n_s_n); if (unlikely(!__pyx_tuple__523)) __PYX_ERR(3, 4363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__523);
  __Pyx_GIVEREF(__pyx_tuple__523);
  __pyx_codeobj__524 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__523, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_norm, 4363, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__524)) __PYX_ERR(3, 4363, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4366
 *     return mju_norm(&res[0], n)
 * 
 * def _mju_dot(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     return mju_dot(&vec1[0], &vec2[0], n)
 * 
 */
  __pyx_tuple__525 = PyTuple_Pack(3, __pyx_n_s_vec1, __pyx_n_s_vec2, __pyx_n_s_n); if (unlikely(!__pyx_tuple__525)) __PYX_ERR(3, 4366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__525);
  __Pyx_GIVEREF(__pyx_tuple__525);
  __pyx_codeobj__526 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__525, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_dot, 4366, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__526)) __PYX_ERR(3, 4366, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4369
 *     return mju_dot(&vec1[0], &vec2[0], n)
 * 
 * def _mju_mulMatVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_mulMatVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 */
  __pyx_tuple__527 = PyTuple_Pack(5, __pyx_n_s_res, __pyx_n_s_mat, __pyx_n_s_vec, __pyx_n_s_nr, __pyx_n_s_nc); if (unlikely(!__pyx_tuple__527)) __PYX_ERR(3, 4369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__527);
  __Pyx_GIVEREF(__pyx_tuple__527);
  __pyx_codeobj__528 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__527, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_mulMatVec, 4369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__528)) __PYX_ERR(3, 4369, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4372
 *     mju_mulMatVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 * def _mju_mulMatTVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_mulMatTVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 */
  __pyx_tuple__529 = PyTuple_Pack(5, __pyx_n_s_res, __pyx_n_s_mat, __pyx_n_s_vec, __pyx_n_s_nr, __pyx_n_s_nc); if (unlikely(!__pyx_tuple__529)) __PYX_ERR(3, 4372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__529);
  __Pyx_GIVEREF(__pyx_tuple__529);
  __pyx_codeobj__530 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__529, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_mulMatTVec, 4372, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__530)) __PYX_ERR(3, 4372, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4375
 *     mju_mulMatTVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 * def _mju_transpose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_transpose(&res[0], &mat[0], nr, nc)
 * 
 */
  __pyx_tuple__531 = PyTuple_Pack(4, __pyx_n_s_res, __pyx_n_s_mat, __pyx_n_s_nr, __pyx_n_s_nc); if (unlikely(!__pyx_tuple__531)) __PYX_ERR(3, 4375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__531);
  __Pyx_GIVEREF(__pyx_tuple__531);
  __pyx_codeobj__532 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__531, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_transpose, 4375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__532)) __PYX_ERR(3, 4375, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4378
 *     mju_transpose(&res[0], &mat[0], nr, nc)
 * 
 * def _mju_mulMatMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):             # <<<<<<<<<<<<<<
 *     mju_mulMatMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 */
  __pyx_tuple__533 = PyTuple_Pack(6, __pyx_n_s_res, __pyx_n_s_mat1, __pyx_n_s_mat2, __pyx_n_s_r1, __pyx_n_s_c1, __pyx_n_s_c2); if (unlikely(!__pyx_tuple__533)) __PYX_ERR(3, 4378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__533);
  __Pyx_GIVEREF(__pyx_tuple__533);
  __pyx_codeobj__534 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__533, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_mulMatMat, 4378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__534)) __PYX_ERR(3, 4378, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4381
 *     mju_mulMatMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 * def _mju_mulMatMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int r2):             # <<<<<<<<<<<<<<
 *     mju_mulMatMatT(&res[0], &mat1[0], &mat2[0], r1, c1, r2)
 * 
 */
  __pyx_tuple__535 = PyTuple_Pack(6, __pyx_n_s_res, __pyx_n_s_mat1, __pyx_n_s_mat2, __pyx_n_s_r1, __pyx_n_s_c1, __pyx_n_s_r2); if (unlikely(!__pyx_tuple__535)) __PYX_ERR(3, 4381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__535);
  __Pyx_GIVEREF(__pyx_tuple__535);
  __pyx_codeobj__536 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__535, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_mulMatMatT, 4381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__536)) __PYX_ERR(3, 4381, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4384
 *     mju_mulMatMatT(&res[0], &mat1[0], &mat2[0], r1, c1, r2)
 * 
 * def _mju_mulMatTMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):             # <<<<<<<<<<<<<<
 *     mju_mulMatTMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 */
  __pyx_tuple__537 = PyTuple_Pack(6, __pyx_n_s_res, __pyx_n_s_mat1, __pyx_n_s_mat2, __pyx_n_s_r1, __pyx_n_s_c1, __pyx_n_s_c2); if (unlikely(!__pyx_tuple__537)) __PYX_ERR(3, 4384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__537);
  __Pyx_GIVEREF(__pyx_tuple__537);
  __pyx_codeobj__538 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__537, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_mulMatTMat, 4384, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__538)) __PYX_ERR(3, 4384, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4387
 *     mju_mulMatTMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 * def _mju_sqrMatTD(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] diag, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_sqrMatTD(&res[0], &mat[0], &diag[0], nr, nc)
 * 
 */
  __pyx_tuple__539 = PyTuple_Pack(5, __pyx_n_s_res, __pyx_n_s_mat, __pyx_n_s_diag, __pyx_n_s_nr, __pyx_n_s_nc); if (unlikely(!__pyx_tuple__539)) __PYX_ERR(3, 4387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__539);
  __Pyx_GIVEREF(__pyx_tuple__539);
  __pyx_codeobj__540 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__539, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_sqrMatTD, 4387, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__540)) __PYX_ERR(3, 4387, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4390
 *     mju_sqrMatTD(&res[0], &mat[0], &diag[0], nr, nc)
 * 
 * def _mju_transformSpatial(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int flg_force, np.ndarray[np.float64_t, mode="c", ndim=1] newpos, np.ndarray[np.float64_t, mode="c", ndim=1] oldpos, np.ndarray[np.float64_t, mode="c", ndim=1] rotnew2old):             # <<<<<<<<<<<<<<
 *     mju_transformSpatial(&res[0], &vec[0], flg_force, &newpos[0], &oldpos[0], &rotnew2old[0])
 * 
 */
  __pyx_tuple__541 = PyTuple_Pack(6, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_flg_force, __pyx_n_s_newpos, __pyx_n_s_oldpos, __pyx_n_s_rotnew2old); if (unlikely(!__pyx_tuple__541)) __PYX_ERR(3, 4390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__541);
  __Pyx_GIVEREF(__pyx_tuple__541);
  __pyx_codeobj__542 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__541, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_transformSpatial, 4390, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__542)) __PYX_ERR(3, 4390, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4393
 *     mju_transformSpatial(&res[0], &vec[0], flg_force, &newpos[0], &oldpos[0], &rotnew2old[0])
 * 
 * def _mju_rotVecQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_rotVecQuat(&res[0], &vec[0], &quat[0])
 * 
 */
  __pyx_tuple__543 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_vec, __pyx_n_s_quat); if (unlikely(!__pyx_tuple__543)) __PYX_ERR(3, 4393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__543);
  __Pyx_GIVEREF(__pyx_tuple__543);
  __pyx_codeobj__544 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__543, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_rotVecQuat, 4393, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__544)) __PYX_ERR(3, 4393, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4396
 *     mju_rotVecQuat(&res[0], &vec[0], &quat[0])
 * 
 * def _mju_negQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_negQuat(&res[0], &quat[0])
 * 
 */
  __pyx_tuple__545 = PyTuple_Pack(2, __pyx_n_s_res, __pyx_n_s_quat); if (unlikely(!__pyx_tuple__545)) __PYX_ERR(3, 4396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__545);
  __Pyx_GIVEREF(__pyx_tuple__545);
  __pyx_codeobj__546 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__545, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_negQuat, 4396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__546)) __PYX_ERR(3, 4396, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4399
 *     mju_negQuat(&res[0], &quat[0])
 * 
 * def _mju_mulQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):             # <<<<<<<<<<<<<<
 *     mju_mulQuat(&res[0], &quat1[0], &quat2[0])
 * 
 */
  __pyx_tuple__547 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_quat1, __pyx_n_s_quat2); if (unlikely(!__pyx_tuple__547)) __PYX_ERR(3, 4399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__547);
  __Pyx_GIVEREF(__pyx_tuple__547);
  __pyx_codeobj__548 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__547, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_mulQuat, 4399, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__548)) __PYX_ERR(3, 4399, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4402
 *     mju_mulQuat(&res[0], &quat1[0], &quat2[0])
 * 
 * def _mju_mulQuatAxis(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] axis):             # <<<<<<<<<<<<<<
 *     mju_mulQuatAxis(&res[0], &quat[0], &axis[0])
 * 
 */
  __pyx_tuple__549 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_quat, __pyx_n_s_axis); if (unlikely(!__pyx_tuple__549)) __PYX_ERR(3, 4402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__549);
  __Pyx_GIVEREF(__pyx_tuple__549);
  __pyx_codeobj__550 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_mulQuatAxis, 4402, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__550)) __PYX_ERR(3, 4402, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4405
 *     mju_mulQuatAxis(&res[0], &quat[0], &axis[0])
 * 
 * def _mju_axisAngle2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] axis, float angle):             # <<<<<<<<<<<<<<
 *     mju_axisAngle2Quat(&res[0], &axis[0], angle)
 * 
 */
  __pyx_tuple__551 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_axis, __pyx_n_s_angle); if (unlikely(!__pyx_tuple__551)) __PYX_ERR(3, 4405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__551);
  __Pyx_GIVEREF(__pyx_tuple__551);
  __pyx_codeobj__552 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__551, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_axisAngle2Quat, 4405, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__552)) __PYX_ERR(3, 4405, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4408
 *     mju_axisAngle2Quat(&res[0], &axis[0], angle)
 * 
 * def _mju_quat2Vel(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, float dt):             # <<<<<<<<<<<<<<
 *     mju_quat2Vel(&res[0], &quat[0], dt)
 * 
 */
  __pyx_tuple__553 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_quat, __pyx_n_s_dt); if (unlikely(!__pyx_tuple__553)) __PYX_ERR(3, 4408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__553);
  __Pyx_GIVEREF(__pyx_tuple__553);
  __pyx_codeobj__554 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__553, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_quat2Vel, 4408, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__554)) __PYX_ERR(3, 4408, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4411
 *     mju_quat2Vel(&res[0], &quat[0], dt)
 * 
 * def _mju_quat2Mat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_quat2Mat(&res[0], &quat[0])
 * 
 */
  __pyx_tuple__555 = PyTuple_Pack(2, __pyx_n_s_res, __pyx_n_s_quat); if (unlikely(!__pyx_tuple__555)) __PYX_ERR(3, 4411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__555);
  __Pyx_GIVEREF(__pyx_tuple__555);
  __pyx_codeobj__556 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__555, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_quat2Mat, 4411, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__556)) __PYX_ERR(3, 4411, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4414
 *     mju_quat2Mat(&res[0], &quat[0])
 * 
 * def _mju_mat2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_mat2Quat(&quat[0], &mat[0])
 * 
 */
  __pyx_tuple__557 = PyTuple_Pack(2, __pyx_n_s_quat, __pyx_n_s_mat); if (unlikely(!__pyx_tuple__557)) __PYX_ERR(3, 4414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__557);
  __Pyx_GIVEREF(__pyx_tuple__557);
  __pyx_codeobj__558 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__557, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_mat2Quat, 4414, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__558)) __PYX_ERR(3, 4414, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4417
 *     mju_mat2Quat(&quat[0], &mat[0])
 * 
 * def _mju_derivQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel):             # <<<<<<<<<<<<<<
 *     mju_derivQuat(&res[0], &quat[0], &vel[0])
 * 
 */
  __pyx_tuple__559 = PyTuple_Pack(3, __pyx_n_s_res, __pyx_n_s_quat, __pyx_n_s_vel); if (unlikely(!__pyx_tuple__559)) __PYX_ERR(3, 4417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__559);
  __Pyx_GIVEREF(__pyx_tuple__559);
  __pyx_codeobj__560 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__559, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_derivQuat, 4417, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__560)) __PYX_ERR(3, 4417, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4420
 *     mju_derivQuat(&res[0], &quat[0], &vel[0])
 * 
 * def _mju_quatIntegrate(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel, float scale):             # <<<<<<<<<<<<<<
 *     mju_quatIntegrate(&quat[0], &vel[0], scale)
 * 
 */
  __pyx_tuple__561 = PyTuple_Pack(3, __pyx_n_s_quat, __pyx_n_s_vel, __pyx_n_s_scale); if (unlikely(!__pyx_tuple__561)) __PYX_ERR(3, 4420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__561);
  __Pyx_GIVEREF(__pyx_tuple__561);
  __pyx_codeobj__562 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__561, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_quatIntegrate, 4420, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__562)) __PYX_ERR(3, 4420, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4423
 *     mju_quatIntegrate(&quat[0], &vel[0], scale)
 * 
 * def _mju_quatZ2Vec(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_quatZ2Vec(&quat[0], &vec[0])
 * 
 */
  __pyx_tuple__563 = PyTuple_Pack(2, __pyx_n_s_quat, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__563)) __PYX_ERR(3, 4423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__563);
  __Pyx_GIVEREF(__pyx_tuple__563);
  __pyx_codeobj__564 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__563, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_quatZ2Vec, 4423, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__564)) __PYX_ERR(3, 4423, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4426
 *     mju_quatZ2Vec(&quat[0], &vec[0])
 * 
 * def _mju_mulPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):             # <<<<<<<<<<<<<<
 *     mju_mulPose(&posres[0], &quatres[0], &pos1[0], &quat1[0], &pos2[0], &quat2[0])
 * 
 */
  __pyx_tuple__565 = PyTuple_Pack(6, __pyx_n_s_posres, __pyx_n_s_quatres, __pyx_n_s_pos1, __pyx_n_s_quat1, __pyx_n_s_pos2, __pyx_n_s_quat2); if (unlikely(!__pyx_tuple__565)) __PYX_ERR(3, 4426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__565);
  __Pyx_GIVEREF(__pyx_tuple__565);
  __pyx_codeobj__566 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__565, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_mulPose, 4426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__566)) __PYX_ERR(3, 4426, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4429
 *     mju_mulPose(&posres[0], &quatres[0], &pos1[0], &quat1[0], &pos2[0], &quat2[0])
 * 
 * def _mju_negPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_negPose(&posres[0], &quatres[0], &pos[0], &quat[0])
 * 
 */
  __pyx_tuple__567 = PyTuple_Pack(4, __pyx_n_s_posres, __pyx_n_s_quatres, __pyx_n_s_pos, __pyx_n_s_quat); if (unlikely(!__pyx_tuple__567)) __PYX_ERR(3, 4429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__567);
  __Pyx_GIVEREF(__pyx_tuple__567);
  __pyx_codeobj__568 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__567, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_negPose, 4429, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__568)) __PYX_ERR(3, 4429, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4432
 *     mju_negPose(&posres[0], &quatres[0], &pos[0], &quat[0])
 * 
 * def _mju_trnVecPose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_trnVecPose(&res[0], &pos[0], &quat[0], &vec[0])
 * 
 */
  __pyx_tuple__569 = PyTuple_Pack(4, __pyx_n_s_res, __pyx_n_s_pos, __pyx_n_s_quat, __pyx_n_s_vec); if (unlikely(!__pyx_tuple__569)) __PYX_ERR(3, 4432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__569);
  __Pyx_GIVEREF(__pyx_tuple__569);
  __pyx_codeobj__570 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_trnVecPose, 4432, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__570)) __PYX_ERR(3, 4432, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4435
 *     mju_trnVecPose(&res[0], &pos[0], &quat[0], &vec[0])
 * 
 * def _mju_cholFactor(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int n):             # <<<<<<<<<<<<<<
 *     return mju_cholFactor(&mat[0], n)
 * 
 */
  __pyx_tuple__571 = PyTuple_Pack(2, __pyx_n_s_mat, __pyx_n_s_n); if (unlikely(!__pyx_tuple__571)) __PYX_ERR(3, 4435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__571);
  __Pyx_GIVEREF(__pyx_tuple__571);
  __pyx_codeobj__572 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__571, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_cholFactor, 4435, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__572)) __PYX_ERR(3, 4435, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4438
 *     return mju_cholFactor(&mat[0], n)
 * 
 * def _mju_cholSolve(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_cholSolve(&res[0], &mat[0], &vec[0], n)
 * 
 */
  __pyx_tuple__573 = PyTuple_Pack(4, __pyx_n_s_res, __pyx_n_s_mat, __pyx_n_s_vec, __pyx_n_s_n); if (unlikely(!__pyx_tuple__573)) __PYX_ERR(3, 4438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__573);
  __Pyx_GIVEREF(__pyx_tuple__573);
  __pyx_codeobj__574 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__573, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_cholSolve, 4438, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__574)) __PYX_ERR(3, 4438, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4441
 *     mju_cholSolve(&res[0], &mat[0], &vec[0], n)
 * 
 * def _mju_cholUpdate(np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] x, int n, int flg_plus):             # <<<<<<<<<<<<<<
 *     return mju_cholUpdate(&mat[0], &x[0], n, flg_plus)
 * 
 */
  __pyx_tuple__575 = PyTuple_Pack(4, __pyx_n_s_mat, __pyx_n_s_x, __pyx_n_s_n, __pyx_n_s_flg_plus); if (unlikely(!__pyx_tuple__575)) __PYX_ERR(3, 4441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__575);
  __Pyx_GIVEREF(__pyx_tuple__575);
  __pyx_codeobj__576 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__575, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_cholUpdate, 4441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__576)) __PYX_ERR(3, 4441, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4444
 *     return mju_cholUpdate(&mat[0], &x[0], n, flg_plus)
 * 
 * def _mju_eig3(np.ndarray[np.float64_t, mode="c", ndim=1] eigval, np.ndarray[np.float64_t, mode="c", ndim=1] eigvec, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     return mju_eig3(&eigval[0], &eigvec[0], &quat[0], &mat[0])
 * 
 */
  __pyx_tuple__577 = PyTuple_Pack(4, __pyx_n_s_eigval, __pyx_n_s_eigvec, __pyx_n_s_quat, __pyx_n_s_mat); if (unlikely(!__pyx_tuple__577)) __PYX_ERR(3, 4444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__577);
  __Pyx_GIVEREF(__pyx_tuple__577);
  __pyx_codeobj__578 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__577, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_eig3, 4444, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__578)) __PYX_ERR(3, 4444, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4447
 *     return mju_eig3(&eigval[0], &eigvec[0], &quat[0], &mat[0])
 * 
 * def _mju_muscleFVL(float len, float vel, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):             # <<<<<<<<<<<<<<
 *     return mju_muscleFVL(len, vel, lmin, lmax, &prm[0])
 * 
 */
  __pyx_tuple__579 = PyTuple_Pack(5, __pyx_n_s_len, __pyx_n_s_vel, __pyx_n_s_lmin, __pyx_n_s_lmax, __pyx_n_s_prm); if (unlikely(!__pyx_tuple__579)) __PYX_ERR(3, 4447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__579);
  __Pyx_GIVEREF(__pyx_tuple__579);
  __pyx_codeobj__580 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__579, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_muscleFVL, 4447, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__580)) __PYX_ERR(3, 4447, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4450
 *     return mju_muscleFVL(len, vel, lmin, lmax, &prm[0])
 * 
 * def _mju_musclePassive(float len, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):             # <<<<<<<<<<<<<<
 *     return mju_musclePassive(len, lmin, lmax, &prm[0])
 * 
 */
  __pyx_tuple__581 = PyTuple_Pack(4, __pyx_n_s_len, __pyx_n_s_lmin, __pyx_n_s_lmax, __pyx_n_s_prm); if (unlikely(!__pyx_tuple__581)) __PYX_ERR(3, 4450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__581);
  __Pyx_GIVEREF(__pyx_tuple__581);
  __pyx_codeobj__582 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__581, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_musclePassive, 4450, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__582)) __PYX_ERR(3, 4450, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4453
 *     return mju_musclePassive(len, lmin, lmax, &prm[0])
 * 
 * def _mju_pneumatic(float len, float len0, float vel, np.ndarray[np.float64_t, mode="c", ndim=1] prm, float act, float ctrl, float timestep, np.ndarray[np.float64_t, mode="c", ndim=1] jac):             # <<<<<<<<<<<<<<
 *     return mju_pneumatic(len, len0, vel, &prm[0], act, ctrl, timestep, &jac[0])
 * 
 */
  __pyx_tuple__583 = PyTuple_Pack(8, __pyx_n_s_len, __pyx_n_s_len0, __pyx_n_s_vel, __pyx_n_s_prm, __pyx_n_s_act, __pyx_n_s_ctrl, __pyx_n_s_timestep, __pyx_n_s_jac); if (unlikely(!__pyx_tuple__583)) __PYX_ERR(3, 4453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__583);
  __Pyx_GIVEREF(__pyx_tuple__583);
  __pyx_codeobj__584 = (PyObject*)__Pyx_PyCode_New(8, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__583, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_pneumatic, 4453, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__584)) __PYX_ERR(3, 4453, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4456
 *     return mju_pneumatic(len, len0, vel, &prm[0], act, ctrl, timestep, &jac[0])
 * 
 * def _mju_encodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):             # <<<<<<<<<<<<<<
 *     mju_encodePyramid(&pyramid[0], &force[0], &mu[0], dim)
 * 
 */
  __pyx_tuple__585 = PyTuple_Pack(4, __pyx_n_s_pyramid, __pyx_n_s_force, __pyx_n_s_mu, __pyx_n_s_dim); if (unlikely(!__pyx_tuple__585)) __PYX_ERR(3, 4456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__585);
  __Pyx_GIVEREF(__pyx_tuple__585);
  __pyx_codeobj__586 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__585, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_encodePyramid, 4456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__586)) __PYX_ERR(3, 4456, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4459
 *     mju_encodePyramid(&pyramid[0], &force[0], &mu[0], dim)
 * 
 * def _mju_decodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):             # <<<<<<<<<<<<<<
 *     mju_decodePyramid(&force[0], &pyramid[0], &mu[0], dim)
 * 
 */
  __pyx_tuple__587 = PyTuple_Pack(4, __pyx_n_s_force, __pyx_n_s_pyramid, __pyx_n_s_mu, __pyx_n_s_dim); if (unlikely(!__pyx_tuple__587)) __PYX_ERR(3, 4459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__587);
  __Pyx_GIVEREF(__pyx_tuple__587);
  __pyx_codeobj__588 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__587, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_decodePyramid, 4459, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__588)) __PYX_ERR(3, 4459, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4462
 *     mju_decodePyramid(&force[0], &pyramid[0], &mu[0], dim)
 * 
 * def _mju_springDamper(float pos0, float vel0, float Kp, float Kv, float dt):             # <<<<<<<<<<<<<<
 *     return mju_springDamper(pos0, vel0, Kp, Kv, dt)
 * 
 */
  __pyx_tuple__589 = PyTuple_Pack(5, __pyx_n_s_pos0, __pyx_n_s_vel0, __pyx_n_s_Kp, __pyx_n_s_Kv, __pyx_n_s_dt); if (unlikely(!__pyx_tuple__589)) __PYX_ERR(3, 4462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__589);
  __Pyx_GIVEREF(__pyx_tuple__589);
  __pyx_codeobj__590 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__589, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_springDamper, 4462, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__590)) __PYX_ERR(3, 4462, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4465
 *     return mju_springDamper(pos0, vel0, Kp, Kv, dt)
 * 
 * def _mju_min(float a, float b):             # <<<<<<<<<<<<<<
 *     return mju_min(a, b)
 * 
 */
  __pyx_tuple__591 = PyTuple_Pack(2, __pyx_n_s_a, __pyx_n_s_b); if (unlikely(!__pyx_tuple__591)) __PYX_ERR(3, 4465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__591);
  __Pyx_GIVEREF(__pyx_tuple__591);
  __pyx_codeobj__592 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__591, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_min, 4465, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__592)) __PYX_ERR(3, 4465, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4468
 *     return mju_min(a, b)
 * 
 * def _mju_max(float a, float b):             # <<<<<<<<<<<<<<
 *     return mju_max(a, b)
 * 
 */
  __pyx_tuple__593 = PyTuple_Pack(2, __pyx_n_s_a, __pyx_n_s_b); if (unlikely(!__pyx_tuple__593)) __PYX_ERR(3, 4468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__593);
  __Pyx_GIVEREF(__pyx_tuple__593);
  __pyx_codeobj__594 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__593, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_max, 4468, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__594)) __PYX_ERR(3, 4468, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4471
 *     return mju_max(a, b)
 * 
 * def _mju_sign(float x):             # <<<<<<<<<<<<<<
 *     return mju_sign(x)
 * 
 */
  __pyx_tuple__595 = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_x); if (unlikely(!__pyx_tuple__595)) __PYX_ERR(3, 4471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__595);
  __Pyx_GIVEREF(__pyx_tuple__595);
  __pyx_codeobj__596 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__595, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_sign, 4471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__596)) __PYX_ERR(3, 4471, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4474
 *     return mju_sign(x)
 * 
 * def _mju_round(float x):             # <<<<<<<<<<<<<<
 *     return mju_round(x)
 * 
 */
  __pyx_tuple__597 = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_x); if (unlikely(!__pyx_tuple__597)) __PYX_ERR(3, 4474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__597);
  __Pyx_GIVEREF(__pyx_tuple__597);
  __pyx_codeobj__598 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__597, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_round, 4474, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__598)) __PYX_ERR(3, 4474, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4477
 *     return mju_round(x)
 * 
 * def _mju_str2Type(str str):             # <<<<<<<<<<<<<<
 *     return mju_str2Type(str.encode())
 * 
 */
  __pyx_tuple__599 = PyTuple_Pack(1, __pyx_n_s_str); if (unlikely(!__pyx_tuple__599)) __PYX_ERR(3, 4477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__599);
  __Pyx_GIVEREF(__pyx_tuple__599);
  __pyx_codeobj__600 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__599, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_str2Type, 4477, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__600)) __PYX_ERR(3, 4477, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4480
 *     return mju_str2Type(str.encode())
 * 
 * def _mju_isBad(float x):             # <<<<<<<<<<<<<<
 *     return mju_isBad(x)
 * 
 */
  __pyx_tuple__601 = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_x); if (unlikely(!__pyx_tuple__601)) __PYX_ERR(3, 4480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__601);
  __Pyx_GIVEREF(__pyx_tuple__601);
  __pyx_codeobj__602 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__601, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_isBad, 4480, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__602)) __PYX_ERR(3, 4480, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4483
 *     return mju_isBad(x)
 * 
 * def _mju_isZero(np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     return mju_isZero(&vec[0], n)
 * 
 */
  __pyx_tuple__603 = PyTuple_Pack(2, __pyx_n_s_vec, __pyx_n_s_n); if (unlikely(!__pyx_tuple__603)) __PYX_ERR(3, 4483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__603);
  __Pyx_GIVEREF(__pyx_tuple__603);
  __pyx_codeobj__604 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__603, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_isZero, 4483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__604)) __PYX_ERR(3, 4483, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4486
 *     return mju_isZero(&vec[0], n)
 * 
 * def _mju_standardNormal(np.ndarray[np.float64_t, mode="c", ndim=1] num2):             # <<<<<<<<<<<<<<
 *     return mju_standardNormal(&num2[0])
 * 
 */
  __pyx_tuple__605 = PyTuple_Pack(1, __pyx_n_s_num2); if (unlikely(!__pyx_tuple__605)) __PYX_ERR(3, 4486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__605);
  __Pyx_GIVEREF(__pyx_tuple__605);
  __pyx_codeobj__606 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__605, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_standardNormal, 4486, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__606)) __PYX_ERR(3, 4486, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4489
 *     return mju_standardNormal(&num2[0])
 * 
 * def _mju_insertionSort(np.ndarray[np.float64_t, mode="c", ndim=1] list, int n):             # <<<<<<<<<<<<<<
 *     mju_insertionSort(&list[0], n)
 * 
 */
  __pyx_tuple__607 = PyTuple_Pack(2, __pyx_n_s_list, __pyx_n_s_n); if (unlikely(!__pyx_tuple__607)) __PYX_ERR(3, 4489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__607);
  __Pyx_GIVEREF(__pyx_tuple__607);
  __pyx_codeobj__608 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__607, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_insertionSort, 4489, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__608)) __PYX_ERR(3, 4489, __pyx_L1_error)

  /* "mujoco_py/generated/wrappers.pxi":4492
 *     mju_insertionSort(&list[0], n)
 * 
 * def _mju_Halton(int index, int base):             # <<<<<<<<<<<<<<
 *     return mju_Halton(index, base)
 * 
 */
  __pyx_tuple__609 = PyTuple_Pack(2, __pyx_n_s_index, __pyx_n_s_base); if (unlikely(!__pyx_tuple__609)) __PYX_ERR(3, 4492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__609);
  __Pyx_GIVEREF(__pyx_tuple__609);
  __pyx_codeobj__610 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__609, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_generated_wrappers_pxi, __pyx_n_s_mju_Halton, 4492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__610)) __PYX_ERR(3, 4492, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":7
 * 
 * 
 * def _add_mujoco_bin_to_dyld_library_path():             # <<<<<<<<<<<<<<
 *     mujoco_path, _ = discover_mujoco()
 *     bin_path = os.path.join(mujoco_path, "bin")
 */
  __pyx_tuple__612 = PyTuple_Pack(4, __pyx_n_s_mujoco_path, __pyx_n_s__611, __pyx_n_s_bin_path, __pyx_n_s_old_dyld_library_path); if (unlikely(!__pyx_tuple__612)) __PYX_ERR(0, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__612);
  __Pyx_GIVEREF(__pyx_tuple__612);
  __pyx_codeobj__613 = (PyObject*)__Pyx_PyCode_New(0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__612, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_add_mujoco_bin_to_dyld_library, 7, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__613)) __PYX_ERR(0, 7, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":25
 * 
 *     @abstractmethod
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError()
 * 
 */
  __pyx_tuple__614 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__614)) __PYX_ERR(0, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__614);
  __Pyx_GIVEREF(__pyx_tuple__614);
  __pyx_codeobj__615 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__614, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_make_context_current, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__615)) __PYX_ERR(0, 25, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":29
 * 
 *     @abstractmethod
 *     def set_buffer_size(self, width, height):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError()
 * 
 */
  __pyx_tuple__616 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_width, __pyx_n_s_height); if (unlikely(!__pyx_tuple__616)) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__616);
  __Pyx_GIVEREF(__pyx_tuple__616);
  __pyx_codeobj__617 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__616, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_set_buffer_size, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__617)) __PYX_ERR(0, 29, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":33
 * 
 * 
 * class GlfwError(RuntimeError):             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
  __pyx_tuple__618 = PyTuple_Pack(1, __pyx_builtin_RuntimeError); if (unlikely(!__pyx_tuple__618)) __PYX_ERR(0, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__618);
  __Pyx_GIVEREF(__pyx_tuple__618);

  /* "mujoco_py/opengl_context.pyx":43
 *     _GLFW_IS_INITIALIZED = False
 * 
 *     def __init__(self, offscreen=False):             # <<<<<<<<<<<<<<
 *         GlfwContext._init_glfw()
 * 
 */
  __pyx_tuple__619 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_offscreen); if (unlikely(!__pyx_tuple__619)) __PYX_ERR(0, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__619);
  __Pyx_GIVEREF(__pyx_tuple__619);
  __pyx_codeobj__620 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__619, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_init_2, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__620)) __PYX_ERR(0, 43, __pyx_L1_error)
  __pyx_tuple__621 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__621)) __PYX_ERR(0, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__621);
  __Pyx_GIVEREF(__pyx_tuple__621);

  /* "mujoco_py/opengl_context.pyx":52
 * 
 *     @staticmethod
 *     def _init_glfw():             # <<<<<<<<<<<<<<
 *         if GlfwContext._GLFW_IS_INITIALIZED:
 *             return
 */
  __pyx_codeobj__622 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_init_glfw, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__622)) __PYX_ERR(0, 52, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":68
 *         GlfwContext._GLFW_IS_INITIALIZED = True
 * 
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         glfw.make_context_current(self.window)
 * 
 */
  __pyx_tuple__623 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__623)) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__623);
  __Pyx_GIVEREF(__pyx_tuple__623);
  __pyx_codeobj__624 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__623, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_make_context_current, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__624)) __PYX_ERR(0, 68, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":71
 *         glfw.make_context_current(self.window)
 * 
 *     def set_buffer_size(self, width, height):             # <<<<<<<<<<<<<<
 *         self._set_window_size(width, height)
 *         self._width = width
 */
  __pyx_tuple__625 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_width, __pyx_n_s_height); if (unlikely(!__pyx_tuple__625)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__625);
  __Pyx_GIVEREF(__pyx_tuple__625);
  __pyx_codeobj__626 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__625, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_set_buffer_size, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__626)) __PYX_ERR(0, 71, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":76
 *         self._height = height
 * 
 *     def _create_window(self, offscreen):             # <<<<<<<<<<<<<<
 *         if offscreen:
 *             print("Creating offscreen glfw")
 */
  __pyx_tuple__627 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_offscreen, __pyx_n_s_init_width, __pyx_n_s_init_height, __pyx_n_s_resolution, __pyx_n_s__611, __pyx_n_s_refresh_rate, __pyx_n_s_window); if (unlikely(!__pyx_tuple__627)) __PYX_ERR(0, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__627);
  __Pyx_GIVEREF(__pyx_tuple__627);
  __pyx_codeobj__628 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__627, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_create_window, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__628)) __PYX_ERR(0, 76, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":101
 *         return window
 * 
 *     def get_buffer_size(self):             # <<<<<<<<<<<<<<
 *         return glfw.get_framebuffer_size(self.window)
 * 
 */
  __pyx_tuple__629 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__629)) __PYX_ERR(0, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__629);
  __Pyx_GIVEREF(__pyx_tuple__629);
  __pyx_codeobj__630 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__629, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_get_buffer_size, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__630)) __PYX_ERR(0, 101, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":104
 *         return glfw.get_framebuffer_size(self.window)
 * 
 *     def _set_window_size(self, target_width, target_height):             # <<<<<<<<<<<<<<
 *         self.make_context_current()
 *         if target_width != self._width or target_height != self._height:
 */
  __pyx_tuple__631 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_target_width, __pyx_n_s_target_height, __pyx_n_s_width, __pyx_n_s_height); if (unlikely(!__pyx_tuple__631)) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__631);
  __Pyx_GIVEREF(__pyx_tuple__631);
  __pyx_codeobj__632 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__631, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_set_window_size, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__632)) __PYX_ERR(0, 104, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":118
 * 
 *     @staticmethod
 *     def _glfw_error_callback(error_code, description):             # <<<<<<<<<<<<<<
 *         print("GLFW error (code %d): %s", error_code, description)
 * 
 */
  __pyx_tuple__633 = PyTuple_Pack(2, __pyx_n_s_error_code, __pyx_n_s_description); if (unlikely(!__pyx_tuple__633)) __PYX_ERR(0, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__633);
  __Pyx_GIVEREF(__pyx_tuple__633);
  __pyx_codeobj__634 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__633, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_glfw_error_callback, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__634)) __PYX_ERR(0, 118, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":124
 * class OffscreenOpenGLContext():
 * 
 *     def __init__(self, device_id):             # <<<<<<<<<<<<<<
 *         self.device_id = device_id
 *         res = initOpenGL(device_id)
 */
  __pyx_tuple__635 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_device_id, __pyx_n_s_res); if (unlikely(!__pyx_tuple__635)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__635);
  __Pyx_GIVEREF(__pyx_tuple__635);
  __pyx_codeobj__636 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__635, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_init_2, 124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__636)) __PYX_ERR(0, 124, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":130
 *             raise RuntimeError("Failed to initialize OpenGL")
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         # TODO: properly close OpenGL in our contexts
 *         closeOpenGL()
 */
  __pyx_tuple__637 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__637)) __PYX_ERR(0, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__637);
  __Pyx_GIVEREF(__pyx_tuple__637);
  __pyx_codeobj__638 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__637, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_close, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__638)) __PYX_ERR(0, 130, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":134
 *         closeOpenGL()
 * 
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         makeOpenGLContextCurrent(self.device_id)
 * 
 */
  __pyx_tuple__639 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__639)) __PYX_ERR(0, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__639);
  __Pyx_GIVEREF(__pyx_tuple__639);
  __pyx_codeobj__640 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__639, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_make_context_current, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__640)) __PYX_ERR(0, 134, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":137
 *         makeOpenGLContextCurrent(self.device_id)
 * 
 *     def set_buffer_size(self, int width, int height):             # <<<<<<<<<<<<<<
 *         res = setOpenGLBufferSize(self.device_id, width, height)
 *         if res != 1:
 */
  __pyx_tuple__641 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_res); if (unlikely(!__pyx_tuple__641)) __PYX_ERR(0, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__641);
  __Pyx_GIVEREF(__pyx_tuple__641);
  __pyx_codeobj__642 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__641, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_opengl_context_pyx, __pyx_n_s_set_buffer_size, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__642)) __PYX_ERR(0, 137, __pyx_L1_error)

  /* "mujoco_py/mjsimstate.pyx":2
 * 
 * class MjSimState(namedtuple('SimStateBase', 'time qpos qvel act udd_state')):             # <<<<<<<<<<<<<<
 *     """Represents a snapshot of the simulator's state.
 * 
 */
  __pyx_tuple__643 = PyTuple_Pack(2, __pyx_n_u_SimStateBase, __pyx_kp_u_time_qpos_qvel_act_udd_state); if (unlikely(!__pyx_tuple__643)) __PYX_ERR(6, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__643);
  __Pyx_GIVEREF(__pyx_tuple__643);

  /* "mujoco_py/mjsimstate.pyx":10
 * 
 *     # need to implement this because numpy doesn't support == on arrays
 *     def __eq__(self, other):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, self.__class__):
 *             return NotImplemented
 */
  __pyx_tuple__644 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_other, __pyx_n_s_k); if (unlikely(!__pyx_tuple__644)) __PYX_ERR(6, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__644);
  __Pyx_GIVEREF(__pyx_tuple__644);
  __pyx_codeobj__645 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__644, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjsimstate_pyx, __pyx_n_s_eq, 10, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__645)) __PYX_ERR(6, 10, __pyx_L1_error)

  /* "mujoco_py/mjsimstate.pyx":28
 *                 np.array_equal(self.act, other.act))
 * 
 *     def __ne__(self, other):             # <<<<<<<<<<<<<<
 *         return not self.__eq__(other)
 * 
 */
  __pyx_tuple__646 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__646)) __PYX_ERR(6, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__646);
  __Pyx_GIVEREF(__pyx_tuple__646);
  __pyx_codeobj__647 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__646, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjsimstate_pyx, __pyx_n_s_ne_2, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__647)) __PYX_ERR(6, 28, __pyx_L1_error)

  /* "mujoco_py/mjsimstate.pyx":31
 *         return not self.__eq__(other)
 * 
 *     def flatten(self):             # <<<<<<<<<<<<<<
 *         """ Flattens a state into a numpy array of numbers."""
 *         if self.act is None:
 */
  __pyx_tuple__648 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_act, __pyx_n_s_state_tuple); if (unlikely(!__pyx_tuple__648)) __PYX_ERR(6, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__648);
  __Pyx_GIVEREF(__pyx_tuple__648);
  __pyx_codeobj__649 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__648, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjsimstate_pyx, __pyx_n_s_flatten, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__649)) __PYX_ERR(6, 31, __pyx_L1_error)

  /* "mujoco_py/mjsimstate.pyx":42
 * 
 *     @staticmethod
 *     def _flatten_dict(d):             # <<<<<<<<<<<<<<
 *         a = []
 *         for k in sorted(d.keys()):
 */
  __pyx_tuple__650 = PyTuple_Pack(4, __pyx_n_s_d, __pyx_n_s_a, __pyx_n_s_k, __pyx_n_s_v); if (unlikely(!__pyx_tuple__650)) __PYX_ERR(6, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__650);
  __Pyx_GIVEREF(__pyx_tuple__650);
  __pyx_codeobj__651 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__650, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjsimstate_pyx, __pyx_n_s_flatten_dict, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__651)) __PYX_ERR(6, 42, __pyx_L1_error)

  /* "mujoco_py/mjsimstate.pyx":54
 * 
 *     @staticmethod
 *     def from_flattened(array, sim):             # <<<<<<<<<<<<<<
 *         idx_time = 0
 *         idx_qpos = idx_time + 1
 */
  __pyx_tuple__652 = PyTuple_Pack(13, __pyx_n_s_array, __pyx_n_s_sim, __pyx_n_s_idx_time, __pyx_n_s_idx_qpos, __pyx_n_s_idx_qvel, __pyx_n_s_idx_act, __pyx_n_s_idx_udd, __pyx_n_s_time, __pyx_n_s_qpos, __pyx_n_s_qvel, __pyx_n_s_act, __pyx_n_s_flat_udd_state, __pyx_n_s_udd_state); if (unlikely(!__pyx_tuple__652)) __PYX_ERR(6, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__652);
  __Pyx_GIVEREF(__pyx_tuple__652);
  __pyx_codeobj__653 = (PyObject*)__Pyx_PyCode_New(2, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__652, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjsimstate_pyx, __pyx_n_s_from_flattened, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__653)) __PYX_ERR(6, 54, __pyx_L1_error)

  /* "mujoco_py/mjsimstate.pyx":74
 * 
 *     @staticmethod
 *     def _unflatten_dict(a, schema_example):             # <<<<<<<<<<<<<<
 *         d = {}
 *         idx = 0
 */
  __pyx_tuple__654 = PyTuple_Pack(8, __pyx_n_s_a, __pyx_n_s_schema_example, __pyx_n_s_d, __pyx_n_s_idx, __pyx_n_s_k, __pyx_n_s_schema_val, __pyx_n_s_val, __pyx_n_s_val_array); if (unlikely(!__pyx_tuple__654)) __PYX_ERR(6, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__654);
  __Pyx_GIVEREF(__pyx_tuple__654);
  __pyx_codeobj__655 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__654, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjsimstate_pyx, __pyx_n_s_unflatten_dict, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__655)) __PYX_ERR(6, 74, __pyx_L1_error)

  /* "mujoco_py/mjrendercontext.pyx":261
 * class MjRenderContextOffscreen(MjRenderContext):
 * 
 *     def __cinit__(self, MjSim sim, int device_id):             # <<<<<<<<<<<<<<
 *         super().__init__(sim, offscreen=True, device_id=device_id)
 * 
 */
  __pyx_tuple__656 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_sim, __pyx_n_s_device_id); if (unlikely(!__pyx_tuple__656)) __PYX_ERR(1, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__656);
  __Pyx_GIVEREF(__pyx_tuple__656);
  __pyx_codeobj__657 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__656, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjrendercontext_pyx, __pyx_n_s_cinit, 261, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__657)) __PYX_ERR(1, 261, __pyx_L1_error)

  /* "mujoco_py/mjrendercontext.pyx":266
 * class MjRenderContextWindow(MjRenderContext):
 * 
 *     def __init__(self, MjSim sim):             # <<<<<<<<<<<<<<
 *         super().__init__(sim, offscreen=False)
 * 
 */
  __pyx_tuple__658 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_sim); if (unlikely(!__pyx_tuple__658)) __PYX_ERR(1, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__658);
  __Pyx_GIVEREF(__pyx_tuple__658);
  __pyx_codeobj__659 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__658, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjrendercontext_pyx, __pyx_n_s_init_2, 266, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__659)) __PYX_ERR(1, 266, __pyx_L1_error)

  /* "mujoco_py/mjrendercontext.pyx":273
 * 
 *     @property
 *     def window(self):             # <<<<<<<<<<<<<<
 *         return self.opengl_context.window
 * 
 */
  __pyx_tuple__660 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__660)) __PYX_ERR(1, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__660);
  __Pyx_GIVEREF(__pyx_tuple__660);
  __pyx_codeobj__661 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__660, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjrendercontext_pyx, __pyx_n_s_window, 273, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__661)) __PYX_ERR(1, 273, __pyx_L1_error)

  /* "mujoco_py/mjrendercontext.pyx":276
 *         return self.opengl_context.window
 * 
 *     def render(self):             # <<<<<<<<<<<<<<
 *         if self.window is None or glfw.window_should_close(self.window):
 *             return
 */
  __pyx_tuple__662 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__662)) __PYX_ERR(1, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__662);
  __Pyx_GIVEREF(__pyx_tuple__662);
  __pyx_codeobj__663 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__662, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjrendercontext_pyx, __pyx_n_s_render, 276, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__663)) __PYX_ERR(1, 276, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":27
 * 
 * 
 * class MjBatchRenderer(object):             # <<<<<<<<<<<<<<
 *     """
 *     Utility class for rendering into OpenGL Pixel Buffer Objects (PBOs),
 */
  __pyx_tuple__665 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__665)) __PYX_ERR(2, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__665);
  __Pyx_GIVEREF(__pyx_tuple__665);

  /* "mujoco_py/mjbatchrenderer.pyx":44
 *     """
 * 
 *     def __init__(self, width, height, batch_size=1, device_id=0,             # <<<<<<<<<<<<<<
 *                  depth=False, use_cuda=False):
 *         """
 */
  __pyx_tuple__666 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_batch_size, __pyx_n_s_device_id, __pyx_n_s_depth, __pyx_n_s_use_cuda); if (unlikely(!__pyx_tuple__666)) __PYX_ERR(2, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__666);
  __Pyx_GIVEREF(__pyx_tuple__666);
  __pyx_codeobj__667 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__666, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_init_2, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__667)) __PYX_ERR(2, 44, __pyx_L1_error)
  __pyx_tuple__668 = PyTuple_Pack(4, ((PyObject *)__pyx_int_1), ((PyObject *)__pyx_int_0), ((PyObject *)Py_False), ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__668)) __PYX_ERR(2, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__668);
  __Pyx_GIVEREF(__pyx_tuple__668);

  /* "mujoco_py/mjbatchrenderer.pyx":86
 *             self._init_cuda()
 * 
 *     def _init_cuda(self):             # <<<<<<<<<<<<<<
 *         if drv is None:
 *             raise ImportError("Failed to import pycuda.")
 */
  __pyx_tuple__669 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_RegisteredBuffer, __pyx_n_s_device); if (unlikely(!__pyx_tuple__669)) __PYX_ERR(2, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__669);
  __Pyx_GIVEREF(__pyx_tuple__669);
  __pyx_codeobj__670 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__669, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_init_cuda, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__670)) __PYX_ERR(2, 86, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":102
 *             self._cuda_depth_pbo = RegisteredBuffer(self.pbo_depth)
 * 
 *     def map(self):             # <<<<<<<<<<<<<<
 *         """ Map OpenGL buffer to CUDA for reading. """
 *         if not self._use_cuda:
 */
  __pyx_tuple__671 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_ptr); if (unlikely(!__pyx_tuple__671)) __PYX_ERR(2, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__671);
  __Pyx_GIVEREF(__pyx_tuple__671);
  __pyx_codeobj__672 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__671, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_map, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__672)) __PYX_ERR(2, 102, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":139
 *         self._cuda_buffers_are_mapped = True
 * 
 *     def unmap(self):             # <<<<<<<<<<<<<<
 *         """ Unmap OpenGL buffer from CUDA so that it can be rendered into. """
 *         if not self._use_cuda:
 */
  __pyx_tuple__673 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__673)) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__673);
  __Pyx_GIVEREF(__pyx_tuple__673);
  __pyx_codeobj__674 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__673, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_unmap, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__674)) __PYX_ERR(2, 139, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":157
 *         self._cuda_buffers_are_mapped = False
 * 
 *     def prepare_render_context(self, sim):             # <<<<<<<<<<<<<<
 *         """
 *         Set up the rendering context for an MjSim. Also happens automatically
 */
  __pyx_tuple__675 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_sim, __pyx_n_s_c); if (unlikely(!__pyx_tuple__675)) __PYX_ERR(2, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__675);
  __Pyx_GIVEREF(__pyx_tuple__675);
  __pyx_codeobj__676 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__675, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_prepare_render_context, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__676)) __PYX_ERR(2, 157, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":170
 *         return MjRenderContext(sim, device_id=self._device_id)
 * 
 *     def render(self, sim, camera_id=None, batch_offset=None):             # <<<<<<<<<<<<<<
 *         """
 *         Render current scene from the MjSim into the buffer. By
 */
  __pyx_tuple__677 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_sim, __pyx_n_s_camera_id, __pyx_n_s_batch_offset, __pyx_n_s_render_context, __pyx_n_s_viewport, __pyx_n_s_con); if (unlikely(!__pyx_tuple__677)) __PYX_ERR(2, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__677);
  __Pyx_GIVEREF(__pyx_tuple__677);
  __pyx_codeobj__678 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__677, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_render, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__678)) __PYX_ERR(2, 170, __pyx_L1_error)
  __pyx_tuple__679 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__679)) __PYX_ERR(2, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__679);
  __Pyx_GIVEREF(__pyx_tuple__679);

  /* "mujoco_py/mjbatchrenderer.pyx":214
 *         self._current_batch_offset = (self._current_batch_offset + 1) % self._batch_size
 * 
 *     def read(self):             # <<<<<<<<<<<<<<
 *         """
 *         Transfer a copy of the buffer from the GPU to the CPU as a numpy array.
 */
  __pyx_tuple__680 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__680)) __PYX_ERR(2, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__680);
  __Pyx_GIVEREF(__pyx_tuple__680);
  __pyx_codeobj__681 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__680, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_read, 214, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__681)) __PYX_ERR(2, 214, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":227
 *             return self._read_nocuda()
 * 
 *     def _read_cuda(self):             # <<<<<<<<<<<<<<
 *         if not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError(
 */
  __pyx_tuple__682 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_rgb_arr, __pyx_n_s_depth_arr); if (unlikely(!__pyx_tuple__682)) __PYX_ERR(2, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__682);
  __Pyx_GIVEREF(__pyx_tuple__682);
  __pyx_codeobj__683 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__682, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_read_cuda, 227, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__683)) __PYX_ERR(2, 227, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":247
 *         return rgb_arr, depth_arr
 * 
 *     def _read_nocuda(self):             # <<<<<<<<<<<<<<
 *         rgb_arr = np.zeros(3 * self._width * self._height * self._batch_size, dtype=np.uint8)
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 */
  __pyx_tuple__684 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_rgb_arr, __pyx_n_s_rgb_view, __pyx_n_s_depth_arr, __pyx_n_s_depth_view); if (unlikely(!__pyx_tuple__684)) __PYX_ERR(2, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__684);
  __Pyx_GIVEREF(__pyx_tuple__684);
  __pyx_codeobj__685 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__684, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_read_nocuda, 247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__685)) __PYX_ERR(2, 247, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":267
 * 
 *     @property
 *     def cuda_rgb_buffer_pointer(self):             # <<<<<<<<<<<<<<
 *         """ Pointer to CUDA buffer for RGB batch. """
 *         if not self._use_cuda:
 */
  __pyx_tuple__686 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__686)) __PYX_ERR(2, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__686);
  __Pyx_GIVEREF(__pyx_tuple__686);
  __pyx_codeobj__687 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__686, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_cuda_rgb_buffer_pointer, 267, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__687)) __PYX_ERR(2, 267, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":276
 * 
 *     @property
 *     def cuda_depth_buffer_pointer(self):             # <<<<<<<<<<<<<<
 *         """ Pointer to CUDA buffer for depth batch. """
 *         if not self._use_cuda:
 */
  __pyx_tuple__688 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__688)) __PYX_ERR(2, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__688);
  __Pyx_GIVEREF(__pyx_tuple__688);
  __pyx_codeobj__689 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_cuda_depth_buffer_pointer, 276, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__689)) __PYX_ERR(2, 276, __pyx_L1_error)

  /* "mujoco_py/mjbatchrenderer.pyx":286
 *         return self._cuda_depth_ptr
 * 
 *     def __del__(self):             # <<<<<<<<<<<<<<
 *         if self._use_cuda:
 *             self._cuda_context.push()
 */
  __pyx_tuple__690 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__690)) __PYX_ERR(2, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__690);
  __Pyx_GIVEREF(__pyx_tuple__690);
  __pyx_codeobj__691 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__690, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_mjbatchrenderer_pyx, __pyx_n_s_del, 286, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__691)) __PYX_ERR(2, 286, __pyx_L1_error)

  /* "mujoco_py/cymj.pyx":81
 * 
 * 
 * def set_warning_callback(warn):             # <<<<<<<<<<<<<<
 *     '''
 *     Set a user-defined warning callback.  It should take in a string message
 */
  __pyx_tuple__692 = PyTuple_Pack(1, __pyx_n_s_warn); if (unlikely(!__pyx_tuple__692)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__692);
  __Pyx_GIVEREF(__pyx_tuple__692);
  __pyx_codeobj__693 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__692, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_cymj_pyx, __pyx_n_s_set_warning_callback, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__693)) __PYX_ERR(7, 81, __pyx_L1_error)

  /* "mujoco_py/cymj.pyx":93
 * 
 * 
 * def get_warning_callback():             # <<<<<<<<<<<<<<
 *     '''
 *     Returns the user-defined warning callback, for use in e.g. a context
 */
  __pyx_codeobj__694 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_cymj_pyx, __pyx_n_s_get_warning_callback, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__694)) __PYX_ERR(7, 93, __pyx_L1_error)

  /* "mujoco_py/cymj.pyx":102
 * 
 * 
 * class wrap_mujoco_warning(object):             # <<<<<<<<<<<<<<
 *     '''
 *     Class to wrap capturing exceptions raised during warning callbacks.
 */
  __pyx_tuple__695 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__695)) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__695);
  __Pyx_GIVEREF(__pyx_tuple__695);

  /* "mujoco_py/cymj.pyx":109
 *             mj_somefunc()
 *     '''
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         py_warning_exception = None
 */
  __pyx_tuple__696 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__696)) __PYX_ERR(7, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__696);
  __Pyx_GIVEREF(__pyx_tuple__696);
  __pyx_codeobj__697 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__696, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_cymj_pyx, __pyx_n_s_enter, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__697)) __PYX_ERR(7, 109, __pyx_L1_error)

  /* "mujoco_py/cymj.pyx":112
 *         global py_warning_exception
 *         py_warning_exception = None
 *     def __exit__(self, type, value, traceback):             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         if py_warning_exception is not None:
 */
  __pyx_tuple__698 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_type, __pyx_n_s_value, __pyx_n_s_traceback); if (unlikely(!__pyx_tuple__698)) __PYX_ERR(7, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__698);
  __Pyx_GIVEREF(__pyx_tuple__698);
  __pyx_codeobj__699 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__698, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_cymj_pyx, __pyx_n_s_exit, 112, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__699)) __PYX_ERR(7, 112, __pyx_L1_error)

  /* "mujoco_py/cymj.pyx":118
 * 
 * 
 * def load_model_from_path(str path):             # <<<<<<<<<<<<<<
 *     """Loads model from path."""
 *     cdef char errstr[300]
 */
  __pyx_tuple__700 = PyTuple_Pack(3, __pyx_n_s_path, __pyx_n_s_errstr, __pyx_n_s_model); if (unlikely(!__pyx_tuple__700)) __PYX_ERR(7, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__700);
  __Pyx_GIVEREF(__pyx_tuple__700);
  __pyx_codeobj__701 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__700, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_cymj_pyx, __pyx_n_s_load_model_from_path, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__701)) __PYX_ERR(7, 118, __pyx_L1_error)

  /* "mujoco_py/cymj.pyx":134
 *     return WrapMjModel(model)
 * 
 * def load_model_from_xml(str xml_str):             # <<<<<<<<<<<<<<
 *     """
 *     Loads and returns a PyMjModel model from a string containing XML markup.
 */
  __pyx_tuple__702 = PyTuple_Pack(4, __pyx_n_s_xml_str, __pyx_n_s_errstr, __pyx_n_s_model, __pyx_n_s_fp); if (unlikely(!__pyx_tuple__702)) __PYX_ERR(7, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__702);
  __Pyx_GIVEREF(__pyx_tuple__702);
  __pyx_codeobj__703 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__702, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_cymj_pyx, __pyx_n_s_load_model_from_xml, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__703)) __PYX_ERR(7, 134, __pyx_L1_error)

  /* "mujoco_py/cymj.pyx":151
 * 
 * 
 * def load_model_from_mjb(bytes mjb_bytes):             # <<<<<<<<<<<<<<
 *     """
 *     Loads and returns a PyMjModel model from bytes encoded MJB.
 */
  __pyx_tuple__704 = PyTuple_Pack(5, __pyx_n_s_mjb_bytes, __pyx_n_s_model, __pyx_n_s_td, __pyx_n_s_filename, __pyx_n_s_f); if (unlikely(!__pyx_tuple__704)) __PYX_ERR(7, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__704);
  __Pyx_GIVEREF(__pyx_tuple__704);
  __pyx_codeobj__705 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__704, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_mujoco_py_cymj_pyx, __pyx_n_s_load_model_from_mjb, 151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__705)) __PYX_ERR(7, 151, __pyx_L1_error)

  /* "View.MemoryView":284
 *         return self.name
 * 
 * cdef generic = Enum("<strided and direct or indirect>")             # <<<<<<<<<<<<<<
 * cdef strided = Enum("<strided and direct>") # default
 * cdef indirect = Enum("<strided and indirect>")
 */
  __pyx_tuple__706 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__706)) __PYX_ERR(4, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__706);
  __Pyx_GIVEREF(__pyx_tuple__706);

  /* "View.MemoryView":285
 * 
 * cdef generic = Enum("<strided and direct or indirect>")
 * cdef strided = Enum("<strided and direct>") # default             # <<<<<<<<<<<<<<
 * cdef indirect = Enum("<strided and indirect>")
 * 
 */
  __pyx_tuple__707 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__707)) __PYX_ERR(4, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__707);
  __Pyx_GIVEREF(__pyx_tuple__707);

  /* "View.MemoryView":286
 * cdef generic = Enum("<strided and direct or indirect>")
 * cdef strided = Enum("<strided and direct>") # default
 * cdef indirect = Enum("<strided and indirect>")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__708 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__708)) __PYX_ERR(4, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__708);
  __Pyx_GIVEREF(__pyx_tuple__708);

  /* "View.MemoryView":289
 * 
 * 
 * cdef contiguous = Enum("<contiguous and direct>")             # <<<<<<<<<<<<<<
 * cdef indirect_contiguous = Enum("<contiguous and indirect>")
 * 
 */
  __pyx_tuple__709 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__709)) __PYX_ERR(4, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__709);
  __Pyx_GIVEREF(__pyx_tuple__709);

  /* "View.MemoryView":290
 * 
 * cdef contiguous = Enum("<contiguous and direct>")
 * cdef indirect_contiguous = Enum("<contiguous and indirect>")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__710 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__710)) __PYX_ERR(4, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__710);
  __Pyx_GIVEREF(__pyx_tuple__710);

  /* "(tree fragment)":1
 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     if __pyx_checksum != 0xb068931:
 *         from pickle import PickleError as __pyx_PickleError
 */
  __pyx_tuple__711 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__711)) __PYX_ERR(4, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__711);
  __Pyx_GIVEREF(__pyx_tuple__711);
  __pyx_codeobj__712 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__711, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__712)) __PYX_ERR(4, 1, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_InitGlobals(void) {
  /* InitThreads.init */
  #ifdef WITH_THREAD
PyEval_InitThreads();
#endif

if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 1, __pyx_L1_error)

  __pyx_umethod_PyDict_Type_keys.type = (PyObject*)&PyDict_Type;
  __pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
  __pyx_umethod_PyList_Type_pop.type = (PyObject*)&PyList_Type;
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(7, 1, __pyx_L1_error);
  __pyx_float_0_1 = PyFloat_FromDouble(0.1); if (unlikely(!__pyx_float_0_1)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_1000 = PyInt_FromLong(1000); if (unlikely(!__pyx_int_1000)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(7, 1, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC initcymj(void); /*proto*/
PyMODINIT_FUNC initcymj(void)
#else
PyMODINIT_FUNC PyInit_cymj(void); /*proto*/
PyMODINIT_FUNC PyInit_cymj(void)
#if CYTHON_PEP489_MULTI_PHASE_INIT
{
  return PyModuleDef_Init(&__pyx_moduledef);
}
static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        result = PyDict_SetItemString(moddict, to_name, value);
        Py_DECREF(value);
    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Clear();
    } else {
        result = -1;
    }
    return result;
}
static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
    PyObject *module = NULL, *moddict, *modname;
    if (__pyx_m)
        return __Pyx_NewRef(__pyx_m);
    modname = PyObject_GetAttrString(spec, "name");
    if (unlikely(!modname)) goto bad;
    module = PyModule_NewObject(modname);
    Py_DECREF(modname);
    if (unlikely(!module)) goto bad;
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad;
    return module;
bad:
    Py_XDECREF(module);
    return NULL;
}


static int __pyx_pymod_exec_cymj(PyObject *__pyx_pyinit_module)
#endif
#endif
{
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  static PyThread_type_lock __pyx_t_13[8];
  __Pyx_RefNannyDeclarations
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
  #endif
  #if CYTHON_REFNANNY
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
  if (!__Pyx_RefNanny) {
      PyErr_Clear();
      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
      if (!__Pyx_RefNanny)
          Py_FatalError("failed to import 'refnanny' module");
  }
  #endif
  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_cymj(void)", 0);
  if (__Pyx_check_binary_version() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(7, 1, __pyx_L1_error)
  #ifdef __Pyx_CyFunction_USED
  if (__pyx_CyFunction_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Coroutine_USED
  if (__pyx_Coroutine_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_AsyncGen_USED
  if (__pyx_AsyncGen_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_StopAsyncIteration_USED
  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  #ifdef WITH_THREAD /* Python build with threading support? */
  PyEval_InitThreads();
  #endif
  #endif
  /*--- Module creation code ---*/
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __pyx_m = __pyx_pyinit_module;
  Py_INCREF(__pyx_m);
  #else
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4("cymj", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (unlikely(!__pyx_m)) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(7, 1, __pyx_L1_error)
  Py_INCREF(__pyx_d);
  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(7, 1, __pyx_L1_error)
  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(7, 1, __pyx_L1_error)
  #if CYTHON_COMPILING_IN_PYPY
  Py_INCREF(__pyx_b);
  #endif
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(7, 1, __pyx_L1_error);
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitGlobals() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  if (__pyx_module_is_main_mujoco_py__cymj) {
    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  }
  #if PY_MAJOR_VERSION >= 3
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(7, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "mujoco_py.cymj")) {
      if (unlikely(PyDict_SetItemString(modules, "mujoco_py.cymj", __pyx_m) < 0)) __PYX_ERR(7, 1, __pyx_L1_error)
    }
  }
  #endif
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  /*--- Global init code ---*/
  __pyx_v_9mujoco_py_4cymj_py_warning_callback = Py_None; Py_INCREF(Py_None);
  __pyx_v_9mujoco_py_4cymj_py_warning_exception = Py_None; Py_INCREF(Py_None);
  generic = Py_None; Py_INCREF(Py_None);
  strided = Py_None; Py_INCREF(Py_None);
  indirect = Py_None; Py_INCREF(Py_None);
  contiguous = Py_None; Py_INCREF(Py_None);
  indirect_contiguous = Py_None; Py_INCREF(Py_None);
  /*--- Variable export code ---*/
  /*--- Function export code ---*/
  /*--- Type init code ---*/
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjVFS = &__pyx_vtable_9mujoco_py_4cymj_PyMjVFS;
  __pyx_vtable_9mujoco_py_4cymj_PyMjVFS._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVFS *, mjVFS *))__pyx_f_9mujoco_py_4cymj_7PyMjVFS__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjVFS) < 0) __PYX_ERR(3, 11, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjVFS.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjVFS.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjVFS) < 0) __PYX_ERR(3, 11, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjVFS", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjVFS) < 0) __PYX_ERR(3, 11, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjVFS) < 0) __PYX_ERR(3, 11, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjVFS = &__pyx_type_9mujoco_py_4cymj_PyMjVFS;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjOption = &__pyx_vtable_9mujoco_py_4cymj_PyMjOption;
  __pyx_vtable_9mujoco_py_4cymj_PyMjOption._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjOption *, mjOption *))__pyx_f_9mujoco_py_4cymj_10PyMjOption__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjOption) < 0) __PYX_ERR(3, 48, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjOption.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjOption.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjOption) < 0) __PYX_ERR(3, 48, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjOption", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjOption) < 0) __PYX_ERR(3, 48, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjOption) < 0) __PYX_ERR(3, 48, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjOption = &__pyx_type_9mujoco_py_4cymj_PyMjOption;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual = &__pyx_vtable_9mujoco_py_4cymj_PyMjVisual;
  __pyx_vtable_9mujoco_py_4cymj_PyMjVisual._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual *, mjVisual *))__pyx_f_9mujoco_py_4cymj_10PyMjVisual__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjVisual) < 0) __PYX_ERR(3, 176, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjVisual.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjVisual.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual) < 0) __PYX_ERR(3, 176, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjVisual", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjVisual) < 0) __PYX_ERR(3, 176, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjVisual) < 0) __PYX_ERR(3, 176, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjVisual = &__pyx_type_9mujoco_py_4cymj_PyMjVisual;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_global_ = &__pyx_vtable_9mujoco_py_4cymj_PyMjVisual_global_;
  __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_global_._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_global_ *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_global_ *))__pyx_f_9mujoco_py_4cymj_18PyMjVisual_global___set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjVisual_global_) < 0) __PYX_ERR(3, 224, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjVisual_global_.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjVisual_global_.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_global_) < 0) __PYX_ERR(3, 224, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjVisual_global_", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_global_) < 0) __PYX_ERR(3, 224, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_global_) < 0) __PYX_ERR(3, 224, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjVisual_global_ = &__pyx_type_9mujoco_py_4cymj_PyMjVisual_global_;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_quality = &__pyx_vtable_9mujoco_py_4cymj_PyMjVisual_quality;
  __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_quality._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_quality *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_quality *))__pyx_f_9mujoco_py_4cymj_18PyMjVisual_quality__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjVisual_quality) < 0) __PYX_ERR(3, 272, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjVisual_quality.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjVisual_quality.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_quality) < 0) __PYX_ERR(3, 272, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjVisual_quality", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_quality) < 0) __PYX_ERR(3, 272, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_quality) < 0) __PYX_ERR(3, 272, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjVisual_quality = &__pyx_type_9mujoco_py_4cymj_PyMjVisual_quality;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_headlight = &__pyx_vtable_9mujoco_py_4cymj_PyMjVisual_headlight;
  __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_headlight._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_headlight *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_headlight *))__pyx_f_9mujoco_py_4cymj_20PyMjVisual_headlight__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjVisual_headlight) < 0) __PYX_ERR(3, 320, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjVisual_headlight.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjVisual_headlight.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_headlight) < 0) __PYX_ERR(3, 320, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjVisual_headlight", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_headlight) < 0) __PYX_ERR(3, 320, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_headlight) < 0) __PYX_ERR(3, 320, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjVisual_headlight = &__pyx_type_9mujoco_py_4cymj_PyMjVisual_headlight;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_map = &__pyx_vtable_9mujoco_py_4cymj_PyMjVisual_map;
  __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_map._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_map *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_map *))__pyx_f_9mujoco_py_4cymj_14PyMjVisual_map__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjVisual_map) < 0) __PYX_ERR(3, 360, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjVisual_map.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjVisual_map.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_map) < 0) __PYX_ERR(3, 360, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjVisual_map", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_map) < 0) __PYX_ERR(3, 360, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_map) < 0) __PYX_ERR(3, 360, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjVisual_map = &__pyx_type_9mujoco_py_4cymj_PyMjVisual_map;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_scale = &__pyx_vtable_9mujoco_py_4cymj_PyMjVisual_scale;
  __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_scale._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_scale *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_scale *))__pyx_f_9mujoco_py_4cymj_16PyMjVisual_scale__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjVisual_scale) < 0) __PYX_ERR(3, 428, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjVisual_scale.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjVisual_scale.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_scale) < 0) __PYX_ERR(3, 428, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjVisual_scale", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_scale) < 0) __PYX_ERR(3, 428, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_scale) < 0) __PYX_ERR(3, 428, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjVisual_scale = &__pyx_type_9mujoco_py_4cymj_PyMjVisual_scale;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_rgba = &__pyx_vtable_9mujoco_py_4cymj_PyMjVisual_rgba;
  __pyx_vtable_9mujoco_py_4cymj_PyMjVisual_rgba._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjVisual_rgba *, struct __pyx_t_9mujoco_py_4cymj_mjVisual_rgba *))__pyx_f_9mujoco_py_4cymj_15PyMjVisual_rgba__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjVisual_rgba) < 0) __PYX_ERR(3, 516, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjVisual_rgba.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjVisual_rgba.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjVisual_rgba) < 0) __PYX_ERR(3, 516, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjVisual_rgba", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_rgba) < 0) __PYX_ERR(3, 516, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjVisual_rgba) < 0) __PYX_ERR(3, 516, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjVisual_rgba = &__pyx_type_9mujoco_py_4cymj_PyMjVisual_rgba;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjStatistic = &__pyx_vtable_9mujoco_py_4cymj_PyMjStatistic;
  __pyx_vtable_9mujoco_py_4cymj_PyMjStatistic._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjStatistic *, mjStatistic *))__pyx_f_9mujoco_py_4cymj_13PyMjStatistic__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjStatistic) < 0) __PYX_ERR(3, 608, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjStatistic.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjStatistic.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjStatistic) < 0) __PYX_ERR(3, 608, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjStatistic", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjStatistic) < 0) __PYX_ERR(3, 608, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjStatistic) < 0) __PYX_ERR(3, 608, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjStatistic = &__pyx_type_9mujoco_py_4cymj_PyMjStatistic;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjModel = &__pyx_vtable_9mujoco_py_4cymj_PyMjModel;
  __pyx_vtable_9mujoco_py_4cymj_PyMjModel._extract_mj_names = (PyObject *(*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *, mjModel *, int *, int, mjtObj))__pyx_f_9mujoco_py_4cymj_9PyMjModel__extract_mj_names;
  __pyx_vtable_9mujoco_py_4cymj_PyMjModel._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *, mjModel *))__pyx_f_9mujoco_py_4cymj_9PyMjModel__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjModel) < 0) __PYX_ERR(3, 652, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjModel.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjModel.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjModel) < 0) __PYX_ERR(3, 652, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjModel", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjModel) < 0) __PYX_ERR(3, 652, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjModel) < 0) __PYX_ERR(3, 652, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjModel = &__pyx_type_9mujoco_py_4cymj_PyMjModel;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjContact = &__pyx_vtable_9mujoco_py_4cymj_PyMjContact;
  __pyx_vtable_9mujoco_py_4cymj_PyMjContact._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjContact *, mjContact *))__pyx_f_9mujoco_py_4cymj_11PyMjContact__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjContact) < 0) __PYX_ERR(3, 2005, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjContact.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjContact.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjContact) < 0) __PYX_ERR(3, 2005, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjContact", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjContact) < 0) __PYX_ERR(3, 2005, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjContact) < 0) __PYX_ERR(3, 2005, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjContact = &__pyx_type_9mujoco_py_4cymj_PyMjContact;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjWarningStat = &__pyx_vtable_9mujoco_py_4cymj_PyMjWarningStat;
  __pyx_vtable_9mujoco_py_4cymj_PyMjWarningStat._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjWarningStat *, mjWarningStat *))__pyx_f_9mujoco_py_4cymj_15PyMjWarningStat__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjWarningStat) < 0) __PYX_ERR(3, 2085, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjWarningStat.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjWarningStat.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjWarningStat) < 0) __PYX_ERR(3, 2085, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjWarningStat", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjWarningStat) < 0) __PYX_ERR(3, 2085, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjWarningStat) < 0) __PYX_ERR(3, 2085, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjWarningStat = &__pyx_type_9mujoco_py_4cymj_PyMjWarningStat;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjTimerStat = &__pyx_vtable_9mujoco_py_4cymj_PyMjTimerStat;
  __pyx_vtable_9mujoco_py_4cymj_PyMjTimerStat._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjTimerStat *, mjTimerStat *))__pyx_f_9mujoco_py_4cymj_13PyMjTimerStat__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjTimerStat) < 0) __PYX_ERR(3, 2117, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjTimerStat.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjTimerStat.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjTimerStat) < 0) __PYX_ERR(3, 2117, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjTimerStat", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjTimerStat) < 0) __PYX_ERR(3, 2117, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjTimerStat) < 0) __PYX_ERR(3, 2117, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjTimerStat = &__pyx_type_9mujoco_py_4cymj_PyMjTimerStat;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjSolverStat = &__pyx_vtable_9mujoco_py_4cymj_PyMjSolverStat;
  __pyx_vtable_9mujoco_py_4cymj_PyMjSolverStat._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjSolverStat *, mjSolverStat *))__pyx_f_9mujoco_py_4cymj_14PyMjSolverStat__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjSolverStat) < 0) __PYX_ERR(3, 2149, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjSolverStat.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjSolverStat.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjSolverStat) < 0) __PYX_ERR(3, 2149, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjSolverStat", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjSolverStat) < 0) __PYX_ERR(3, 2149, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjSolverStat) < 0) __PYX_ERR(3, 2149, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjSolverStat = &__pyx_type_9mujoco_py_4cymj_PyMjSolverStat;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjData = &__pyx_vtable_9mujoco_py_4cymj_PyMjData;
  __pyx_vtable_9mujoco_py_4cymj_PyMjData._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjData *, mjData *, struct __pyx_obj_9mujoco_py_4cymj_PyMjModel *))__pyx_f_9mujoco_py_4cymj_8PyMjData__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjData) < 0) __PYX_ERR(3, 2201, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjData.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjData.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjData) < 0) __PYX_ERR(3, 2201, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjData", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjData) < 0) __PYX_ERR(3, 2201, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjData) < 0) __PYX_ERR(3, 2201, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjData = &__pyx_type_9mujoco_py_4cymj_PyMjData;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjvPerturb = &__pyx_vtable_9mujoco_py_4cymj_PyMjvPerturb;
  __pyx_vtable_9mujoco_py_4cymj_PyMjvPerturb._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvPerturb *, mjvPerturb *))__pyx_f_9mujoco_py_4cymj_12PyMjvPerturb__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjvPerturb) < 0) __PYX_ERR(3, 3013, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjvPerturb.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjvPerturb.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjvPerturb) < 0) __PYX_ERR(3, 3013, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjvPerturb", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjvPerturb) < 0) __PYX_ERR(3, 3013, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjvPerturb) < 0) __PYX_ERR(3, 3013, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjvPerturb = &__pyx_type_9mujoco_py_4cymj_PyMjvPerturb;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjvCamera = &__pyx_vtable_9mujoco_py_4cymj_PyMjvCamera;
  __pyx_vtable_9mujoco_py_4cymj_PyMjvCamera._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvCamera *, mjvCamera *))__pyx_f_9mujoco_py_4cymj_11PyMjvCamera__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjvCamera) < 0) __PYX_ERR(3, 3061, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjvCamera.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjvCamera.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjvCamera) < 0) __PYX_ERR(3, 3061, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjvCamera", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjvCamera) < 0) __PYX_ERR(3, 3061, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjvCamera) < 0) __PYX_ERR(3, 3061, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjvCamera = &__pyx_type_9mujoco_py_4cymj_PyMjvCamera;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjvGLCamera = &__pyx_vtable_9mujoco_py_4cymj_PyMjvGLCamera;
  __pyx_vtable_9mujoco_py_4cymj_PyMjvGLCamera._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGLCamera *, mjvGLCamera *))__pyx_f_9mujoco_py_4cymj_13PyMjvGLCamera__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjvGLCamera) < 0) __PYX_ERR(3, 3113, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjvGLCamera.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjvGLCamera.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjvGLCamera) < 0) __PYX_ERR(3, 3113, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjvGLCamera", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjvGLCamera) < 0) __PYX_ERR(3, 3113, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjvGLCamera) < 0) __PYX_ERR(3, 3113, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjvGLCamera = &__pyx_type_9mujoco_py_4cymj_PyMjvGLCamera;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjvGeom = &__pyx_vtable_9mujoco_py_4cymj_PyMjvGeom;
  __pyx_vtable_9mujoco_py_4cymj_PyMjvGeom._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvGeom *, mjvGeom *))__pyx_f_9mujoco_py_4cymj_9PyMjvGeom__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjvGeom) < 0) __PYX_ERR(3, 3169, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjvGeom.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjvGeom.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjvGeom) < 0) __PYX_ERR(3, 3169, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjvGeom", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjvGeom) < 0) __PYX_ERR(3, 3169, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjvGeom) < 0) __PYX_ERR(3, 3169, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjvGeom = &__pyx_type_9mujoco_py_4cymj_PyMjvGeom;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjvLight = &__pyx_vtable_9mujoco_py_4cymj_PyMjvLight;
  __pyx_vtable_9mujoco_py_4cymj_PyMjvLight._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvLight *, mjvLight *))__pyx_f_9mujoco_py_4cymj_10PyMjvLight__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjvLight) < 0) __PYX_ERR(3, 3273, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjvLight.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjvLight.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjvLight) < 0) __PYX_ERR(3, 3273, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjvLight", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjvLight) < 0) __PYX_ERR(3, 3273, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjvLight) < 0) __PYX_ERR(3, 3273, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjvLight = &__pyx_type_9mujoco_py_4cymj_PyMjvLight;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjvOption = &__pyx_vtable_9mujoco_py_4cymj_PyMjvOption;
  __pyx_vtable_9mujoco_py_4cymj_PyMjvOption._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvOption *, mjvOption *))__pyx_f_9mujoco_py_4cymj_11PyMjvOption__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjvOption) < 0) __PYX_ERR(3, 3341, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjvOption.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjvOption.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjvOption) < 0) __PYX_ERR(3, 3341, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjvOption", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjvOption) < 0) __PYX_ERR(3, 3341, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjvOption) < 0) __PYX_ERR(3, 3341, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjvOption = &__pyx_type_9mujoco_py_4cymj_PyMjvOption;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjvScene = &__pyx_vtable_9mujoco_py_4cymj_PyMjvScene;
  __pyx_vtable_9mujoco_py_4cymj_PyMjvScene._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvScene *, mjvScene *))__pyx_f_9mujoco_py_4cymj_10PyMjvScene__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjvScene) < 0) __PYX_ERR(3, 3385, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjvScene.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjvScene.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjvScene) < 0) __PYX_ERR(3, 3385, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjvScene", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjvScene) < 0) __PYX_ERR(3, 3385, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjvScene) < 0) __PYX_ERR(3, 3385, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjvScene = &__pyx_type_9mujoco_py_4cymj_PyMjvScene;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjvFigure = &__pyx_vtable_9mujoco_py_4cymj_PyMjvFigure;
  __pyx_vtable_9mujoco_py_4cymj_PyMjvFigure._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjvFigure *, mjvFigure *))__pyx_f_9mujoco_py_4cymj_11PyMjvFigure__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjvFigure) < 0) __PYX_ERR(3, 3453, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjvFigure.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjvFigure.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjvFigure) < 0) __PYX_ERR(3, 3453, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjvFigure", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjvFigure) < 0) __PYX_ERR(3, 3453, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjvFigure) < 0) __PYX_ERR(3, 3453, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjvFigure = &__pyx_type_9mujoco_py_4cymj_PyMjvFigure;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjrRect = &__pyx_vtable_9mujoco_py_4cymj_PyMjrRect;
  __pyx_vtable_9mujoco_py_4cymj_PyMjrRect._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjrRect *, mjrRect *))__pyx_f_9mujoco_py_4cymj_9PyMjrRect__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjrRect) < 0) __PYX_ERR(3, 3545, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjrRect.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjrRect.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjrRect) < 0) __PYX_ERR(3, 3545, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjrRect", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjrRect) < 0) __PYX_ERR(3, 3545, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjrRect) < 0) __PYX_ERR(3, 3545, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjrRect = &__pyx_type_9mujoco_py_4cymj_PyMjrRect;
  __pyx_vtabptr_9mujoco_py_4cymj_PyMjrContext = &__pyx_vtable_9mujoco_py_4cymj_PyMjrContext;
  __pyx_vtable_9mujoco_py_4cymj_PyMjrContext._set = (void (*)(struct __pyx_obj_9mujoco_py_4cymj_PyMjrContext *, mjrContext *))__pyx_f_9mujoco_py_4cymj_12PyMjrContext__set;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_PyMjrContext) < 0) __PYX_ERR(3, 3590, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_PyMjrContext.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_PyMjrContext.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_PyMjrContext) < 0) __PYX_ERR(3, 3590, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "PyMjrContext", (PyObject *)&__pyx_type_9mujoco_py_4cymj_PyMjrContext) < 0) __PYX_ERR(3, 3590, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_PyMjrContext) < 0) __PYX_ERR(3, 3590, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_PyMjrContext = &__pyx_type_9mujoco_py_4cymj_PyMjrContext;
  __pyx_vtabptr_9mujoco_py_4cymj_MjSim = &__pyx_vtable_9mujoco_py_4cymj_MjSim;
  __pyx_vtable_9mujoco_py_4cymj_MjSim.substep_callback = (PyObject *(*)(struct __pyx_obj_9mujoco_py_4cymj_MjSim *, int __pyx_skip_dispatch))__pyx_f_9mujoco_py_4cymj_5MjSim_substep_callback;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_MjSim) < 0) __PYX_ERR(5, 11, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_MjSim.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type_9mujoco_py_4cymj_MjSim.tp_dict, __pyx_vtabptr_9mujoco_py_4cymj_MjSim) < 0) __PYX_ERR(5, 11, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "MjSim", (PyObject *)&__pyx_type_9mujoco_py_4cymj_MjSim) < 0) __PYX_ERR(5, 11, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_MjSim) < 0) __PYX_ERR(5, 11, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_MjSim = &__pyx_type_9mujoco_py_4cymj_MjSim;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj_MjRenderContext) < 0) __PYX_ERR(1, 4, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj_MjRenderContext.tp_print = 0;
  if (PyObject_SetAttrString(__pyx_m, "MjRenderContext", (PyObject *)&__pyx_type_9mujoco_py_4cymj_MjRenderContext) < 0) __PYX_ERR(1, 4, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9mujoco_py_4cymj_MjRenderContext) < 0) __PYX_ERR(1, 4, __pyx_L1_error)
  __pyx_ptype_9mujoco_py_4cymj_MjRenderContext = &__pyx_type_9mujoco_py_4cymj_MjRenderContext;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names) < 0) __PYX_ERR(3, 985, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names.tp_print = 0;
  __pyx_ptype_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names = &__pyx_type_9mujoco_py_4cymj___pyx_scope_struct___extract_mj_names;
  if (PyType_Ready(&__pyx_type_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr) < 0) __PYX_ERR(3, 1002, __pyx_L1_error)
  __pyx_type_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr.tp_print = 0;
  __pyx_ptype_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr = &__pyx_type_9mujoco_py_4cymj___pyx_scope_struct_1_genexpr;
  __pyx_vtabptr_array = &__pyx_vtable_array;
  __pyx_vtable_array.get_memview = (PyObject *(*)(struct __pyx_array_obj *))__pyx_array_get_memview;
  if (PyType_Ready(&__pyx_type___pyx_array) < 0) __PYX_ERR(4, 103, __pyx_L1_error)
  __pyx_type___pyx_array.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type___pyx_array.tp_dict, __pyx_vtabptr_array) < 0) __PYX_ERR(4, 103, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_array) < 0) __PYX_ERR(4, 103, __pyx_L1_error)
  __pyx_array_type = &__pyx_type___pyx_array;
  if (PyType_Ready(&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(4, 277, __pyx_L1_error)
  __pyx_type___pyx_MemviewEnum.tp_print = 0;
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(4, 277, __pyx_L1_error)
  __pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum;
  __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview;
  __pyx_vtable_memoryview.get_item_pointer = (char *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_get_item_pointer;
  __pyx_vtable_memoryview.is_slice = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_is_slice;
  __pyx_vtable_memoryview.setitem_slice_assignment = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_slice_assignment;
  __pyx_vtable_memoryview.setitem_slice_assign_scalar = (PyObject *(*)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_setitem_slice_assign_scalar;
  __pyx_vtable_memoryview.setitem_indexed = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_indexed;
  __pyx_vtable_memoryview.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryview_convert_item_to_object;
  __pyx_vtable_memoryview.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryview_assign_item_from_object;
  if (PyType_Ready(&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(4, 328, __pyx_L1_error)
  __pyx_type___pyx_memoryview.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type___pyx_memoryview.tp_dict, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(4, 328, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(4, 328, __pyx_L1_error)
  __pyx_memoryview_type = &__pyx_type___pyx_memoryview;
  __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice;
  __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview;
  __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object;
  __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object;
  __pyx_type___pyx_memoryviewslice.tp_base = __pyx_memoryview_type;
  if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(4, 953, __pyx_L1_error)
  __pyx_type___pyx_memoryviewslice.tp_print = 0;
  if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(4, 953, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(4, 953, __pyx_L1_error)
  __pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice;
  /*--- Type import code ---*/
  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", 
  #if CYTHON_COMPILING_IN_PYPY
  sizeof(PyTypeObject),
  #else
  sizeof(PyHeapTypeObject),
  #endif
  0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(9, 9, __pyx_L1_error)
  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(8, 163, __pyx_L1_error)
  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(8, 185, __pyx_L1_error)
  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(8, 189, __pyx_L1_error)
  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(8, 198, __pyx_L1_error)
  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(8, 885, __pyx_L1_error)
  /*--- Variable import code ---*/
  /*--- Function import code ---*/
  /*--- Execution code ---*/
  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
  if (__Pyx_patch_abc() < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif

  /* "mujoco_py/cymj.pyx":2
 * # cython: language_level=3
 * import copy             # <<<<<<<<<<<<<<
 * import logging
 * import os
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_copy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_copy, __pyx_t_1) < 0) __PYX_ERR(7, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/cymj.pyx":3
 * # cython: language_level=3
 * import copy
 * import logging             # <<<<<<<<<<<<<<
 * import os
 * import platform
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_logging, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logging, __pyx_t_1) < 0) __PYX_ERR(7, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/cymj.pyx":4
 * import copy
 * import logging
 * import os             # <<<<<<<<<<<<<<
 * import platform
 * import tempfile
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(7, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/cymj.pyx":5
 * import logging
 * import os
 * import platform             # <<<<<<<<<<<<<<
 * import tempfile
 * import sys
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_platform, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_platform, __pyx_t_1) < 0) __PYX_ERR(7, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/cymj.pyx":6
 * import os
 * import platform
 * import tempfile             # <<<<<<<<<<<<<<
 * import sys
 * from collections import namedtuple
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_tempfile, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tempfile, __pyx_t_1) < 0) __PYX_ERR(7, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/cymj.pyx":7
 * import platform
 * import tempfile
 * import sys             # <<<<<<<<<<<<<<
 * from collections import namedtuple
 * from libc.stdlib cimport malloc, free
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(7, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/cymj.pyx":8
 * import tempfile
 * import sys
 * from collections import namedtuple             # <<<<<<<<<<<<<<
 * from libc.stdlib cimport malloc, free
 * from libc.string cimport strncpy
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_namedtuple);
  __Pyx_GIVEREF(__pyx_n_s_namedtuple);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_namedtuple);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_collections, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_namedtuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_namedtuple, __pyx_t_1) < 0) __PYX_ERR(7, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/cymj.pyx":11
 * from libc.stdlib cimport malloc, free
 * from libc.string cimport strncpy
 * from numbers import Number             # <<<<<<<<<<<<<<
 * from tempfile import TemporaryDirectory
 * 
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_Number);
  __Pyx_GIVEREF(__pyx_n_s_Number);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Number);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numbers, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Number); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Number, __pyx_t_2) < 0) __PYX_ERR(7, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/cymj.pyx":12
 * from libc.string cimport strncpy
 * from numbers import Number
 * from tempfile import TemporaryDirectory             # <<<<<<<<<<<<<<
 * 
 * import numpy as np
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_TemporaryDirectory);
  __Pyx_GIVEREF(__pyx_n_s_TemporaryDirectory);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_TemporaryDirectory);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_tempfile, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_TemporaryDirectory); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TemporaryDirectory, __pyx_t_1) < 0) __PYX_ERR(7, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/cymj.pyx":14
 * from tempfile import TemporaryDirectory
 * 
 * import numpy as np             # <<<<<<<<<<<<<<
 * from cython cimport view
 * from cython.parallel import parallel, prange
 */
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_2) < 0) __PYX_ERR(7, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/cymj.pyx":18
 * from cython.parallel import parallel, prange
 * 
 * from mujoco_py.generated import const             # <<<<<<<<<<<<<<
 * 
 * include "generated/wrappers.pxi"
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_const);
  __Pyx_GIVEREF(__pyx_n_s_const);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_const);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_mujoco_py_generated, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_const); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_const, __pyx_t_2) < 0) __PYX_ERR(7, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":8
 * from cpython.mem cimport PyMem_Malloc, PyMem_Free
 * cimport numpy as np
 * import numpy as np             # <<<<<<<<<<<<<<
 * from tempfile import TemporaryDirectory
 * 
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(3, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/generated/wrappers.pxi":9
 * cimport numpy as np
 * import numpy as np
 * from tempfile import TemporaryDirectory             # <<<<<<<<<<<<<<
 * 
 * cdef class PyMjVFS(object):
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_TemporaryDirectory);
  __Pyx_GIVEREF(__pyx_n_s_TemporaryDirectory);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_TemporaryDirectory);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_tempfile, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_TemporaryDirectory); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TemporaryDirectory, __pyx_t_1) < 0) __PYX_ERR(3, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3829
 *     return np.asarray(b)
 * 
 * def _mj_activate(str filename):             # <<<<<<<<<<<<<<
 *     return mj_activate(filename.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_1_mj_activate, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3829, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_activate, __pyx_t_2) < 0) __PYX_ERR(3, 3829, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3832
 *     return mj_activate(filename.encode())
 * 
 * def _mj_deactivate():             # <<<<<<<<<<<<<<
 *     mj_deactivate()
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_3_mj_deactivate, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_deactivate, __pyx_t_2) < 0) __PYX_ERR(3, 3832, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3835
 *     mj_deactivate()
 * 
 * def _mj_certQuestion(np.ndarray[np.float64_t, mode="c", ndim=1] question):             # <<<<<<<<<<<<<<
 *     mj_certQuestion(&question[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_5_mj_certQuestion, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_certQuestion, __pyx_t_2) < 0) __PYX_ERR(3, 3835, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3838
 *     mj_certQuestion(&question[0])
 * 
 * def _mj_certAnswer(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):             # <<<<<<<<<<<<<<
 *     mj_certAnswer(&question[0], &answer[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_7_mj_certAnswer, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3838, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_certAnswer, __pyx_t_2) < 0) __PYX_ERR(3, 3838, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3841
 *     mj_certAnswer(&question[0], &answer[0])
 * 
 * def _mj_certCheck(np.ndarray[np.float64_t, mode="c", ndim=1] question, np.ndarray[np.float64_t, mode="c", ndim=1] answer):             # <<<<<<<<<<<<<<
 *     return mj_certCheck(&question[0], &answer[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_9_mj_certCheck, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_certCheck, __pyx_t_2) < 0) __PYX_ERR(3, 3841, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3844
 *     return mj_certCheck(&question[0], &answer[0])
 * 
 * def _mj_defaultVFS(PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     mj_defaultVFS(vfs.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_11_mj_defaultVFS, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_defaultVFS, __pyx_t_2) < 0) __PYX_ERR(3, 3844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3847
 *     mj_defaultVFS(vfs.ptr)
 * 
 * def _mj_addFileVFS(PyMjVFS vfs, str directory, str filename):             # <<<<<<<<<<<<<<
 *     return mj_addFileVFS(vfs.ptr, directory.encode(), filename.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_13_mj_addFileVFS, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_addFileVFS, __pyx_t_2) < 0) __PYX_ERR(3, 3847, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3850
 *     return mj_addFileVFS(vfs.ptr, directory.encode(), filename.encode())
 * 
 * def _mj_makeEmptyFileVFS(PyMjVFS vfs, str filename, int filesize):             # <<<<<<<<<<<<<<
 *     return mj_makeEmptyFileVFS(vfs.ptr, filename.encode(), filesize)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15_mj_makeEmptyFileVFS, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_makeEmptyFileVFS, __pyx_t_2) < 0) __PYX_ERR(3, 3850, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3853
 *     return mj_makeEmptyFileVFS(vfs.ptr, filename.encode(), filesize)
 * 
 * def _mj_findFileVFS(PyMjVFS vfs, str filename):             # <<<<<<<<<<<<<<
 *     return mj_findFileVFS(vfs.ptr, filename.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_17_mj_findFileVFS, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_findFileVFS, __pyx_t_2) < 0) __PYX_ERR(3, 3853, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3856
 *     return mj_findFileVFS(vfs.ptr, filename.encode())
 * 
 * def _mj_deleteFileVFS(PyMjVFS vfs, str filename):             # <<<<<<<<<<<<<<
 *     return mj_deleteFileVFS(vfs.ptr, filename.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_19_mj_deleteFileVFS, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_deleteFileVFS, __pyx_t_2) < 0) __PYX_ERR(3, 3856, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3859
 *     return mj_deleteFileVFS(vfs.ptr, filename.encode())
 * 
 * def _mj_deleteVFS(PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     mj_deleteVFS(vfs.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_21_mj_deleteVFS, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_deleteVFS, __pyx_t_2) < 0) __PYX_ERR(3, 3859, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3862
 *     mj_deleteVFS(vfs.ptr)
 * 
 * def _mj_loadXML(str filename, PyMjVFS vfs, str error, int error_sz):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_loadXML(filename.encode(), vfs.ptr, error.encode(), error_sz))
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_23_mj_loadXML, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_loadXML, __pyx_t_2) < 0) __PYX_ERR(3, 3862, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3865
 *     return WrapMjModel(mj_loadXML(filename.encode(), vfs.ptr, error.encode(), error_sz))
 * 
 * def _mj_saveLastXML(str filename, PyMjModel m, str error, int error_sz):             # <<<<<<<<<<<<<<
 *     return mj_saveLastXML(filename.encode(), m.ptr, error.encode(), error_sz)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_25_mj_saveLastXML, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_saveLastXML, __pyx_t_2) < 0) __PYX_ERR(3, 3865, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3868
 *     return mj_saveLastXML(filename.encode(), m.ptr, error.encode(), error_sz)
 * 
 * def _mj_freeLastXML():             # <<<<<<<<<<<<<<
 *     mj_freeLastXML()
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_27_mj_freeLastXML, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3868, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_freeLastXML, __pyx_t_2) < 0) __PYX_ERR(3, 3868, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3871
 *     mj_freeLastXML()
 * 
 * def _mj_printSchema(str filename, str buffer, int buffer_sz, int flg_html, int flg_pad):             # <<<<<<<<<<<<<<
 *     return mj_printSchema(filename.encode(), buffer.encode(), buffer_sz, flg_html, flg_pad)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_29_mj_printSchema, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_printSchema, __pyx_t_2) < 0) __PYX_ERR(3, 3871, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3874
 *     return mj_printSchema(filename.encode(), buffer.encode(), buffer_sz, flg_html, flg_pad)
 * 
 * def _mj_step(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_31_mj_step, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_step, __pyx_t_2) < 0) __PYX_ERR(3, 3874, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3877
 *     mj_step(m.ptr, d.ptr)
 * 
 * def _mj_step1(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step1(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_33_mj_step1, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_step1, __pyx_t_2) < 0) __PYX_ERR(3, 3877, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3880
 *     mj_step1(m.ptr, d.ptr)
 * 
 * def _mj_step2(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_step2(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_35_mj_step2, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_step2, __pyx_t_2) < 0) __PYX_ERR(3, 3880, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3883
 *     mj_step2(m.ptr, d.ptr)
 * 
 * def _mj_forward(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_forward(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_37_mj_forward, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_forward, __pyx_t_2) < 0) __PYX_ERR(3, 3883, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3886
 *     mj_forward(m.ptr, d.ptr)
 * 
 * def _mj_inverse(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_inverse(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_39_mj_inverse, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_inverse, __pyx_t_2) < 0) __PYX_ERR(3, 3886, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3889
 *     mj_inverse(m.ptr, d.ptr)
 * 
 * def _mj_forwardSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):             # <<<<<<<<<<<<<<
 *     mj_forwardSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_41_mj_forwardSkip, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_forwardSkip, __pyx_t_2) < 0) __PYX_ERR(3, 3889, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3892
 *     mj_forwardSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 * def _mj_inverseSkip(PyMjModel m, PyMjData d, int skipstage, int skipsensorenergy):             # <<<<<<<<<<<<<<
 *     mj_inverseSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_43_mj_inverseSkip, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_inverseSkip, __pyx_t_2) < 0) __PYX_ERR(3, 3892, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3895
 *     mj_inverseSkip(m.ptr, d.ptr, skipstage, skipsensorenergy)
 * 
 * def _mj_defaultSolRefImp(np.ndarray[np.float64_t, mode="c", ndim=1] solref, np.ndarray[np.float64_t, mode="c", ndim=1] solimp):             # <<<<<<<<<<<<<<
 *     mj_defaultSolRefImp(&solref[0], &solimp[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_45_mj_defaultSolRefImp, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_defaultSolRefImp, __pyx_t_2) < 0) __PYX_ERR(3, 3895, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3898
 *     mj_defaultSolRefImp(&solref[0], &solimp[0])
 * 
 * def _mj_defaultOption(PyMjOption opt):             # <<<<<<<<<<<<<<
 *     mj_defaultOption(opt.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_47_mj_defaultOption, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_defaultOption, __pyx_t_2) < 0) __PYX_ERR(3, 3898, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3901
 *     mj_defaultOption(opt.ptr)
 * 
 * def _mj_defaultVisual(PyMjVisual vis):             # <<<<<<<<<<<<<<
 *     mj_defaultVisual(vis.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_49_mj_defaultVisual, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_defaultVisual, __pyx_t_2) < 0) __PYX_ERR(3, 3901, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3904
 *     mj_defaultVisual(vis.ptr)
 * 
 * def _mj_copyModel(PyMjModel dest, PyMjModel src):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_copyModel(dest.ptr, src.ptr))
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_51_mj_copyModel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_copyModel, __pyx_t_2) < 0) __PYX_ERR(3, 3904, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3907
 *     return WrapMjModel(mj_copyModel(dest.ptr, src.ptr))
 * 
 * def _mj_loadModel(str filename, PyMjVFS vfs):             # <<<<<<<<<<<<<<
 *     return WrapMjModel(mj_loadModel(filename.encode(), vfs.ptr))
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_53_mj_loadModel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_loadModel, __pyx_t_2) < 0) __PYX_ERR(3, 3907, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3910
 *     return WrapMjModel(mj_loadModel(filename.encode(), vfs.ptr))
 * 
 * def _mj_deleteModel(PyMjModel m):             # <<<<<<<<<<<<<<
 *     mj_deleteModel(m.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_55_mj_deleteModel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_deleteModel, __pyx_t_2) < 0) __PYX_ERR(3, 3910, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3913
 *     mj_deleteModel(m.ptr)
 * 
 * def _mj_sizeModel(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_sizeModel(m.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_57_mj_sizeModel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_sizeModel, __pyx_t_2) < 0) __PYX_ERR(3, 3913, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3916
 *     return mj_sizeModel(m.ptr)
 * 
 * def _mj_resetData(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_resetData(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_59_mj_resetData, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_resetData, __pyx_t_2) < 0) __PYX_ERR(3, 3916, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3919
 *     mj_resetData(m.ptr, d.ptr)
 * 
 * def _mj_resetDataKeyframe(PyMjModel m, PyMjData d, int key):             # <<<<<<<<<<<<<<
 *     mj_resetDataKeyframe(m.ptr, d.ptr, key)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_61_mj_resetDataKeyframe, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_resetDataKeyframe, __pyx_t_2) < 0) __PYX_ERR(3, 3919, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3922
 *     mj_resetDataKeyframe(m.ptr, d.ptr, key)
 * 
 * def _mj_deleteData(PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_deleteData(d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_63_mj_deleteData, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3922, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_deleteData, __pyx_t_2) < 0) __PYX_ERR(3, 3922, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3925
 *     mj_deleteData(d.ptr)
 * 
 * def _mj_resetCallbacks():             # <<<<<<<<<<<<<<
 *     mj_resetCallbacks()
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_65_mj_resetCallbacks, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_resetCallbacks, __pyx_t_2) < 0) __PYX_ERR(3, 3925, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3928
 *     mj_resetCallbacks()
 * 
 * def _mj_setConst(PyMjModel m, PyMjData d, int flg_actrange):             # <<<<<<<<<<<<<<
 *     mj_setConst(m.ptr, d.ptr, flg_actrange)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_67_mj_setConst, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_setConst, __pyx_t_2) < 0) __PYX_ERR(3, 3928, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3931
 *     mj_setConst(m.ptr, d.ptr, flg_actrange)
 * 
 * def _mj_printModel(PyMjModel m, str filename):             # <<<<<<<<<<<<<<
 *     mj_printModel(m.ptr, filename.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_69_mj_printModel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_printModel, __pyx_t_2) < 0) __PYX_ERR(3, 3931, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3934
 *     mj_printModel(m.ptr, filename.encode())
 * 
 * def _mj_printData(PyMjModel m, PyMjData d, str filename):             # <<<<<<<<<<<<<<
 *     mj_printData(m.ptr, d.ptr, filename.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_71_mj_printData, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_printData, __pyx_t_2) < 0) __PYX_ERR(3, 3934, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3937
 *     mj_printData(m.ptr, d.ptr, filename.encode())
 * 
 * def _mju_printMat(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_printMat(&mat[0], nr, nc)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_73_mju_printMat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_printMat, __pyx_t_2) < 0) __PYX_ERR(3, 3937, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3940
 *     mju_printMat(&mat[0], nr, nc)
 * 
 * def _mj_fwdPosition(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdPosition(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_75_mj_fwdPosition, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_fwdPosition, __pyx_t_2) < 0) __PYX_ERR(3, 3940, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3943
 *     mj_fwdPosition(m.ptr, d.ptr)
 * 
 * def _mj_fwdVelocity(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdVelocity(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_77_mj_fwdVelocity, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_fwdVelocity, __pyx_t_2) < 0) __PYX_ERR(3, 3943, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3946
 *     mj_fwdVelocity(m.ptr, d.ptr)
 * 
 * def _mj_fwdActuation(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdActuation(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_79_mj_fwdActuation, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_fwdActuation, __pyx_t_2) < 0) __PYX_ERR(3, 3946, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3949
 *     mj_fwdActuation(m.ptr, d.ptr)
 * 
 * def _mj_fwdAcceleration(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdAcceleration(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_81_mj_fwdAcceleration, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_fwdAcceleration, __pyx_t_2) < 0) __PYX_ERR(3, 3949, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3952
 *     mj_fwdAcceleration(m.ptr, d.ptr)
 * 
 * def _mj_fwdConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_fwdConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_83_mj_fwdConstraint, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_fwdConstraint, __pyx_t_2) < 0) __PYX_ERR(3, 3952, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3955
 *     mj_fwdConstraint(m.ptr, d.ptr)
 * 
 * def _mj_Euler(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_Euler(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_85_mj_Euler, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_Euler, __pyx_t_2) < 0) __PYX_ERR(3, 3955, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3958
 *     mj_Euler(m.ptr, d.ptr)
 * 
 * def _mj_RungeKutta(PyMjModel m, PyMjData d, int N):             # <<<<<<<<<<<<<<
 *     mj_RungeKutta(m.ptr, d.ptr, N)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_87_mj_RungeKutta, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_RungeKutta, __pyx_t_2) < 0) __PYX_ERR(3, 3958, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3961
 *     mj_RungeKutta(m.ptr, d.ptr, N)
 * 
 * def _mj_invPosition(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invPosition(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_89_mj_invPosition, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_invPosition, __pyx_t_2) < 0) __PYX_ERR(3, 3961, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3964
 *     mj_invPosition(m.ptr, d.ptr)
 * 
 * def _mj_invVelocity(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invVelocity(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_91_mj_invVelocity, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_invVelocity, __pyx_t_2) < 0) __PYX_ERR(3, 3964, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3967
 *     mj_invVelocity(m.ptr, d.ptr)
 * 
 * def _mj_invConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_invConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_93_mj_invConstraint, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_invConstraint, __pyx_t_2) < 0) __PYX_ERR(3, 3967, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3970
 *     mj_invConstraint(m.ptr, d.ptr)
 * 
 * def _mj_compareFwdInv(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_compareFwdInv(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_95_mj_compareFwdInv, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_compareFwdInv, __pyx_t_2) < 0) __PYX_ERR(3, 3970, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3973
 *     mj_compareFwdInv(m.ptr, d.ptr)
 * 
 * def _mj_sensorPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorPos(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_97_mj_sensorPos, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_sensorPos, __pyx_t_2) < 0) __PYX_ERR(3, 3973, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3976
 *     mj_sensorPos(m.ptr, d.ptr)
 * 
 * def _mj_sensorVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorVel(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_99_mj_sensorVel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_sensorVel, __pyx_t_2) < 0) __PYX_ERR(3, 3976, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3979
 *     mj_sensorVel(m.ptr, d.ptr)
 * 
 * def _mj_sensorAcc(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_sensorAcc(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_101_mj_sensorAcc, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_sensorAcc, __pyx_t_2) < 0) __PYX_ERR(3, 3979, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3982
 *     mj_sensorAcc(m.ptr, d.ptr)
 * 
 * def _mj_energyPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_energyPos(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_103_mj_energyPos, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_energyPos, __pyx_t_2) < 0) __PYX_ERR(3, 3982, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3985
 *     mj_energyPos(m.ptr, d.ptr)
 * 
 * def _mj_energyVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_energyVel(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_105_mj_energyVel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_energyVel, __pyx_t_2) < 0) __PYX_ERR(3, 3985, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3988
 *     mj_energyVel(m.ptr, d.ptr)
 * 
 * def _mj_checkPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkPos(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_107_mj_checkPos, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_checkPos, __pyx_t_2) < 0) __PYX_ERR(3, 3988, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3991
 *     mj_checkPos(m.ptr, d.ptr)
 * 
 * def _mj_checkVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkVel(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_109_mj_checkVel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_checkVel, __pyx_t_2) < 0) __PYX_ERR(3, 3991, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3994
 *     mj_checkVel(m.ptr, d.ptr)
 * 
 * def _mj_checkAcc(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_checkAcc(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_111_mj_checkAcc, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_checkAcc, __pyx_t_2) < 0) __PYX_ERR(3, 3994, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":3997
 *     mj_checkAcc(m.ptr, d.ptr)
 * 
 * def _mj_kinematics(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_kinematics(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_113_mj_kinematics, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_kinematics, __pyx_t_2) < 0) __PYX_ERR(3, 3997, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4000
 *     mj_kinematics(m.ptr, d.ptr)
 * 
 * def _mj_comPos(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_comPos(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_115_mj_comPos, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_comPos, __pyx_t_2) < 0) __PYX_ERR(3, 4000, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4003
 *     mj_comPos(m.ptr, d.ptr)
 * 
 * def _mj_camlight(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_camlight(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_117_mj_camlight, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_camlight, __pyx_t_2) < 0) __PYX_ERR(3, 4003, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4006
 *     mj_camlight(m.ptr, d.ptr)
 * 
 * def _mj_tendon(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_tendon(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_119_mj_tendon, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_tendon, __pyx_t_2) < 0) __PYX_ERR(3, 4006, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4009
 *     mj_tendon(m.ptr, d.ptr)
 * 
 * def _mj_transmission(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_transmission(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_121_mj_transmission, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_transmission, __pyx_t_2) < 0) __PYX_ERR(3, 4009, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4012
 *     mj_transmission(m.ptr, d.ptr)
 * 
 * def _mj_crb(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_crb(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_123_mj_crb, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_crb, __pyx_t_2) < 0) __PYX_ERR(3, 4012, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4015
 *     mj_crb(m.ptr, d.ptr)
 * 
 * def _mj_factorM(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_factorM(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_125_mj_factorM, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_factorM, __pyx_t_2) < 0) __PYX_ERR(3, 4015, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4018
 *     mj_factorM(m.ptr, d.ptr)
 * 
 * def _mj_solveM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):             # <<<<<<<<<<<<<<
 *     mj_solveM(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_127_mj_solveM, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_solveM, __pyx_t_2) < 0) __PYX_ERR(3, 4018, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4021
 *     mj_solveM(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 * def _mj_solveM2(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] x, np.ndarray[np.float64_t, mode="c", ndim=1] y, int n):             # <<<<<<<<<<<<<<
 *     mj_solveM2(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_129_mj_solveM2, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_solveM2, __pyx_t_2) < 0) __PYX_ERR(3, 4021, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4024
 *     mj_solveM2(m.ptr, d.ptr, &x[0], &y[0], n)
 * 
 * def _mj_comVel(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_comVel(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_131_mj_comVel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_comVel, __pyx_t_2) < 0) __PYX_ERR(3, 4024, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4027
 *     mj_comVel(m.ptr, d.ptr)
 * 
 * def _mj_passive(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_passive(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_133_mj_passive, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_passive, __pyx_t_2) < 0) __PYX_ERR(3, 4027, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4030
 *     mj_passive(m.ptr, d.ptr)
 * 
 * def _mj_rne(PyMjModel m, PyMjData d, int flg_acc, np.ndarray[np.float64_t, mode="c", ndim=1] result):             # <<<<<<<<<<<<<<
 *     mj_rne(m.ptr, d.ptr, flg_acc, &result[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_135_mj_rne, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_rne, __pyx_t_2) < 0) __PYX_ERR(3, 4030, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4033
 *     mj_rne(m.ptr, d.ptr, flg_acc, &result[0])
 * 
 * def _mj_rnePostConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_rnePostConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_137_mj_rnePostConstraint, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_rnePostConstraint, __pyx_t_2) < 0) __PYX_ERR(3, 4033, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4036
 *     mj_rnePostConstraint(m.ptr, d.ptr)
 * 
 * def _mj_collision(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_collision(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_139_mj_collision, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_collision, __pyx_t_2) < 0) __PYX_ERR(3, 4036, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4039
 *     mj_collision(m.ptr, d.ptr)
 * 
 * def _mj_makeConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_makeConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_141_mj_makeConstraint, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_makeConstraint, __pyx_t_2) < 0) __PYX_ERR(3, 4039, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4042
 *     mj_makeConstraint(m.ptr, d.ptr)
 * 
 * def _mj_projectConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_projectConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_143_mj_projectConstraint, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_projectConstraint, __pyx_t_2) < 0) __PYX_ERR(3, 4042, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4045
 *     mj_projectConstraint(m.ptr, d.ptr)
 * 
 * def _mj_referenceConstraint(PyMjModel m, PyMjData d):             # <<<<<<<<<<<<<<
 *     mj_referenceConstraint(m.ptr, d.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_145_mj_referenceConstraint, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_referenceConstraint, __pyx_t_2) < 0) __PYX_ERR(3, 4045, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4048
 *     mj_referenceConstraint(m.ptr, d.ptr)
 * 
 * def _mj_constraintUpdate(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jar, np.ndarray[np.float64_t, mode="c", ndim=1] cost, int flg_coneHessian):             # <<<<<<<<<<<<<<
 *     mj_constraintUpdate(m.ptr, d.ptr, &jar[0], &cost[0], flg_coneHessian)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_147_mj_constraintUpdate, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_constraintUpdate, __pyx_t_2) < 0) __PYX_ERR(3, 4048, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4051
 *     mj_constraintUpdate(m.ptr, d.ptr, &jar[0], &cost[0], flg_coneHessian)
 * 
 * def _mj_addContact(PyMjModel m, PyMjData d, PyMjContact con):             # <<<<<<<<<<<<<<
 *     return mj_addContact(m.ptr, d.ptr, con.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_149_mj_addContact, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_addContact, __pyx_t_2) < 0) __PYX_ERR(3, 4051, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4054
 *     return mj_addContact(m.ptr, d.ptr, con.ptr)
 * 
 * def _mj_isPyramidal(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isPyramidal(m.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_151_mj_isPyramidal, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_isPyramidal, __pyx_t_2) < 0) __PYX_ERR(3, 4054, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4057
 *     return mj_isPyramidal(m.ptr)
 * 
 * def _mj_isSparse(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isSparse(m.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_153_mj_isSparse, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_isSparse, __pyx_t_2) < 0) __PYX_ERR(3, 4057, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4060
 *     return mj_isSparse(m.ptr)
 * 
 * def _mj_isDual(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_isDual(m.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_155_mj_isDual, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_isDual, __pyx_t_2) < 0) __PYX_ERR(3, 4060, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4063
 *     return mj_isDual(m.ptr)
 * 
 * def _mj_mulJacVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulJacVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_157_mj_mulJacVec, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_mulJacVec, __pyx_t_2) < 0) __PYX_ERR(3, 4063, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4066
 *     mj_mulJacVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_mulJacTVec(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulJacTVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_159_mj_mulJacTVec, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_mulJacTVec, __pyx_t_2) < 0) __PYX_ERR(3, 4066, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4069
 *     mj_mulJacTVec(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_jac(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body):             # <<<<<<<<<<<<<<
 *     mj_jac(m.ptr, d.ptr, &jacp[0], &jacr[0], &point[0], body)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_161_mj_jac, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_jac, __pyx_t_2) < 0) __PYX_ERR(3, 4069, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4072
 *     mj_jac(m.ptr, d.ptr, &jacp[0], &jacr[0], &point[0], body)
 * 
 * def _mj_jacBody(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):             # <<<<<<<<<<<<<<
 *     mj_jacBody(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_163_mj_jacBody, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_jacBody, __pyx_t_2) < 0) __PYX_ERR(3, 4072, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4075
 *     mj_jacBody(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 * def _mj_jacBodyCom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int body):             # <<<<<<<<<<<<<<
 *     mj_jacBodyCom(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_165_mj_jacBodyCom, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_jacBodyCom, __pyx_t_2) < 0) __PYX_ERR(3, 4075, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4078
 *     mj_jacBodyCom(m.ptr, d.ptr, &jacp[0], &jacr[0], body)
 * 
 * def _mj_jacGeom(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int geom):             # <<<<<<<<<<<<<<
 *     mj_jacGeom(m.ptr, d.ptr, &jacp[0], &jacr[0], geom)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_167_mj_jacGeom, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4078, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_jacGeom, __pyx_t_2) < 0) __PYX_ERR(3, 4078, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4081
 *     mj_jacGeom(m.ptr, d.ptr, &jacp[0], &jacr[0], geom)
 * 
 * def _mj_jacSite(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacp, np.ndarray[np.float64_t, mode="c", ndim=1] jacr, int site):             # <<<<<<<<<<<<<<
 *     mj_jacSite(m.ptr, d.ptr, &jacp[0], &jacr[0], site)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_169_mj_jacSite, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_jacSite, __pyx_t_2) < 0) __PYX_ERR(3, 4081, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4084
 *     mj_jacSite(m.ptr, d.ptr, &jacp[0], &jacr[0], site)
 * 
 * def _mj_jacPointAxis(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] jacPoint, np.ndarray[np.float64_t, mode="c", ndim=1] jacAxis, np.ndarray[np.float64_t, mode="c", ndim=1] point, np.ndarray[np.float64_t, mode="c", ndim=1] axis, int body):             # <<<<<<<<<<<<<<
 *     mj_jacPointAxis(m.ptr, d.ptr, &jacPoint[0], &jacAxis[0], &point[0], &axis[0], body)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_171_mj_jacPointAxis, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_jacPointAxis, __pyx_t_2) < 0) __PYX_ERR(3, 4084, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4087
 *     mj_jacPointAxis(m.ptr, d.ptr, &jacPoint[0], &jacAxis[0], &point[0], &axis[0], body)
 * 
 * def _mj_name2id(PyMjModel m, int type, str name):             # <<<<<<<<<<<<<<
 *     return mj_name2id(m.ptr, type, name.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_173_mj_name2id, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_name2id, __pyx_t_2) < 0) __PYX_ERR(3, 4087, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4090
 *     return mj_name2id(m.ptr, type, name.encode())
 * 
 * def _mj_fullM(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] dst, np.ndarray[np.float64_t, mode="c", ndim=1] M):             # <<<<<<<<<<<<<<
 *     mj_fullM(m.ptr, &dst[0], &M[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_175_mj_fullM, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_fullM, __pyx_t_2) < 0) __PYX_ERR(3, 4090, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4093
 *     mj_fullM(m.ptr, &dst[0], &M[0])
 * 
 * def _mj_mulM(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mj_mulM(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_177_mj_mulM, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_mulM, __pyx_t_2) < 0) __PYX_ERR(3, 4093, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4096
 *     mj_mulM(m.ptr, d.ptr, &res[0], &vec[0])
 * 
 * def _mj_applyFT(PyMjModel m, PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] torque, np.ndarray[np.float64_t, mode="c", ndim=1] point, int body, np.ndarray[np.float64_t, mode="c", ndim=1] qfrc_target):             # <<<<<<<<<<<<<<
 *     mj_applyFT(m.ptr, d.ptr, &force[0], &torque[0], &point[0], body, &qfrc_target[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_179_mj_applyFT, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4096, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_applyFT, __pyx_t_2) < 0) __PYX_ERR(3, 4096, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4099
 *     mj_applyFT(m.ptr, d.ptr, &force[0], &torque[0], &point[0], body, &qfrc_target[0])
 * 
 * def _mj_objectVelocity(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):             # <<<<<<<<<<<<<<
 *     mj_objectVelocity(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_181_mj_objectVelocity, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_objectVelocity, __pyx_t_2) < 0) __PYX_ERR(3, 4099, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4102
 *     mj_objectVelocity(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 * def _mj_objectAcceleration(PyMjModel m, PyMjData d, int objtype, int objid, np.ndarray[np.float64_t, mode="c", ndim=1] res, int flg_local):             # <<<<<<<<<<<<<<
 *     mj_objectAcceleration(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_183_mj_objectAcceleration, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_objectAcceleration, __pyx_t_2) < 0) __PYX_ERR(3, 4102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4105
 *     mj_objectAcceleration(m.ptr, d.ptr, objtype, objid, &res[0], flg_local)
 * 
 * def _mj_differentiatePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt, np.ndarray[np.float64_t, mode="c", ndim=1] qpos1, np.ndarray[np.float64_t, mode="c", ndim=1] qpos2):             # <<<<<<<<<<<<<<
 *     mj_differentiatePos(m.ptr, &qvel[0], dt, &qpos1[0], &qpos2[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_185_mj_differentiatePos, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_differentiatePos, __pyx_t_2) < 0) __PYX_ERR(3, 4105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4108
 *     mj_differentiatePos(m.ptr, &qvel[0], dt, &qpos1[0], &qpos2[0])
 * 
 * def _mj_contactForce(PyMjModel m, PyMjData d, int id, np.ndarray[np.float64_t, mode="c", ndim=1] result):             # <<<<<<<<<<<<<<
 *     mj_contactForce(m.ptr, d.ptr, id, &result[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_187_mj_contactForce, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_contactForce, __pyx_t_2) < 0) __PYX_ERR(3, 4108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4111
 *     mj_contactForce(m.ptr, d.ptr, id, &result[0])
 * 
 * def _mj_integratePos(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos, np.ndarray[np.float64_t, mode="c", ndim=1] qvel, float dt):             # <<<<<<<<<<<<<<
 *     mj_integratePos(m.ptr, &qpos[0], &qvel[0], dt)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_189_mj_integratePos, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_integratePos, __pyx_t_2) < 0) __PYX_ERR(3, 4111, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4114
 *     mj_integratePos(m.ptr, &qpos[0], &qvel[0], dt)
 * 
 * def _mj_normalizeQuat(PyMjModel m, np.ndarray[np.float64_t, mode="c", ndim=1] qpos):             # <<<<<<<<<<<<<<
 *     mj_normalizeQuat(m.ptr, &qpos[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_191_mj_normalizeQuat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_normalizeQuat, __pyx_t_2) < 0) __PYX_ERR(3, 4114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4117
 *     mj_normalizeQuat(m.ptr, &qpos[0])
 * 
 * def _mj_local2Global(PyMjData d, np.ndarray[np.float64_t, mode="c", ndim=1] xpos, np.ndarray[np.float64_t, mode="c", ndim=1] xmat, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, int body):             # <<<<<<<<<<<<<<
 *     mj_local2Global(d.ptr, &xpos[0], &xmat[0], &pos[0], &quat[0], body)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_193_mj_local2Global, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_local2Global, __pyx_t_2) < 0) __PYX_ERR(3, 4117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4120
 *     mj_local2Global(d.ptr, &xpos[0], &xmat[0], &pos[0], &quat[0], body)
 * 
 * def _mj_getTotalmass(PyMjModel m):             # <<<<<<<<<<<<<<
 *     return mj_getTotalmass(m.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_195_mj_getTotalmass, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_getTotalmass, __pyx_t_2) < 0) __PYX_ERR(3, 4120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4123
 *     return mj_getTotalmass(m.ptr)
 * 
 * def _mj_setTotalmass(PyMjModel m, float newmass):             # <<<<<<<<<<<<<<
 *     mj_setTotalmass(m.ptr, newmass)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_197_mj_setTotalmass, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_setTotalmass, __pyx_t_2) < 0) __PYX_ERR(3, 4123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4126
 *     mj_setTotalmass(m.ptr, newmass)
 * 
 * def _mj_version():             # <<<<<<<<<<<<<<
 *     return mj_version()
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_199_mj_version, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_version, __pyx_t_2) < 0) __PYX_ERR(3, 4126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4129
 *     return mj_version()
 * 
 * def _mj_rayHfield(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mj_rayHfield(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_201_mj_rayHfield, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_rayHfield, __pyx_t_2) < 0) __PYX_ERR(3, 4129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4132
 *     return mj_rayHfield(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 * def _mj_rayMesh(PyMjModel m, PyMjData d, int geomid, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mj_rayMesh(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_203_mj_rayMesh, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_rayMesh, __pyx_t_2) < 0) __PYX_ERR(3, 4132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4135
 *     return mj_rayMesh(m.ptr, d.ptr, geomid, &pnt[0], &vec[0])
 * 
 * def _mju_rayGeom(np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] size, np.ndarray[np.float64_t, mode="c", ndim=1] pnt, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int geomtype):             # <<<<<<<<<<<<<<
 *     return mju_rayGeom(&pos[0], &mat[0], &size[0], &pnt[0], &vec[0], geomtype)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_205_mju_rayGeom, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_rayGeom, __pyx_t_2) < 0) __PYX_ERR(3, 4135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4138
 *     return mju_rayGeom(&pos[0], &mat[0], &size[0], &pnt[0], &vec[0], geomtype)
 * 
 * def _mjv_defaultCamera(PyMjvCamera cam):             # <<<<<<<<<<<<<<
 *     mjv_defaultCamera(cam.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_207_mjv_defaultCamera, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_defaultCamera, __pyx_t_2) < 0) __PYX_ERR(3, 4138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4141
 *     mjv_defaultCamera(cam.ptr)
 * 
 * def _mjv_defaultPerturb(PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_defaultPerturb(pert.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_209_mjv_defaultPerturb, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_defaultPerturb, __pyx_t_2) < 0) __PYX_ERR(3, 4141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4144
 *     mjv_defaultPerturb(pert.ptr)
 * 
 * def _mjv_room2model(np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_room2model(&modelpos[0], &modelquat[0], &roompos[0], &roomquat[0], scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_211_mjv_room2model, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_room2model, __pyx_t_2) < 0) __PYX_ERR(3, 4144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4147
 *     mjv_room2model(&modelpos[0], &modelquat[0], &roompos[0], &roomquat[0], scn.ptr)
 * 
 * def _mjv_model2room(np.ndarray[np.float64_t, mode="c", ndim=1] roompos, np.ndarray[np.float64_t, mode="c", ndim=1] roomquat, np.ndarray[np.float64_t, mode="c", ndim=1] modelpos, np.ndarray[np.float64_t, mode="c", ndim=1] modelquat, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_model2room(&roompos[0], &roomquat[0], &modelpos[0], &modelquat[0], scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_213_mjv_model2room, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_model2room, __pyx_t_2) < 0) __PYX_ERR(3, 4147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4150
 *     mjv_model2room(&roompos[0], &roomquat[0], &modelpos[0], &modelquat[0], scn.ptr)
 * 
 * def _mjv_cameraInModel(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_cameraInModel(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_215_mjv_cameraInModel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_cameraInModel, __pyx_t_2) < 0) __PYX_ERR(3, 4150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4153
 *     mjv_cameraInModel(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 * def _mjv_cameraInRoom(np.ndarray[np.float64_t, mode="c", ndim=1] headpos, np.ndarray[np.float64_t, mode="c", ndim=1] forward, np.ndarray[np.float64_t, mode="c", ndim=1] up, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_cameraInRoom(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_217_mjv_cameraInRoom, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_cameraInRoom, __pyx_t_2) < 0) __PYX_ERR(3, 4153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4156
 *     mjv_cameraInRoom(&headpos[0], &forward[0], &up[0], scn.ptr)
 * 
 * def _mjv_frustumHeight(PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     return mjv_frustumHeight(scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_219_mjv_frustumHeight, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_frustumHeight, __pyx_t_2) < 0) __PYX_ERR(3, 4156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4159
 *     return mjv_frustumHeight(scn.ptr)
 * 
 * def _mjv_alignToCamera(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] forward):             # <<<<<<<<<<<<<<
 *     mjv_alignToCamera(&res[0], &vec[0], &forward[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_221_mjv_alignToCamera, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_alignToCamera, __pyx_t_2) < 0) __PYX_ERR(3, 4159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4162
 *     mjv_alignToCamera(&res[0], &vec[0], &forward[0])
 * 
 * def _mjv_moveCamera(PyMjModel m, int action, float reldx, float reldy, PyMjvScene scn, PyMjvCamera cam):             # <<<<<<<<<<<<<<
 *     mjv_moveCamera(m.ptr, action, reldx, reldy, scn.ptr, cam.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_223_mjv_moveCamera, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_moveCamera, __pyx_t_2) < 0) __PYX_ERR(3, 4162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4165
 *     mjv_moveCamera(m.ptr, action, reldx, reldy, scn.ptr, cam.ptr)
 * 
 * def _mjv_movePerturb(PyMjModel m, PyMjData d, int action, float reldx, float reldy, PyMjvScene scn, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_movePerturb(m.ptr, d.ptr, action, reldx, reldy, scn.ptr, pert.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_225_mjv_movePerturb, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_movePerturb, __pyx_t_2) < 0) __PYX_ERR(3, 4165, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4168
 *     mjv_movePerturb(m.ptr, d.ptr, action, reldx, reldy, scn.ptr, pert.ptr)
 * 
 * def _mjv_moveModel(PyMjModel m, int action, float reldx, float reldy, np.ndarray[np.float64_t, mode="c", ndim=1] roomup, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_moveModel(m.ptr, action, reldx, reldy, &roomup[0], scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_227_mjv_moveModel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_moveModel, __pyx_t_2) < 0) __PYX_ERR(3, 4168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4171
 *     mjv_moveModel(m.ptr, action, reldx, reldy, &roomup[0], scn.ptr)
 * 
 * def _mjv_initPerturb(PyMjModel m, PyMjData d, PyMjvScene scn, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_initPerturb(m.ptr, d.ptr, scn.ptr, pert.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_229_mjv_initPerturb, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_initPerturb, __pyx_t_2) < 0) __PYX_ERR(3, 4171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4174
 *     mjv_initPerturb(m.ptr, d.ptr, scn.ptr, pert.ptr)
 * 
 * def _mjv_applyPerturbPose(PyMjModel m, PyMjData d, PyMjvPerturb pert, int flg_paused):             # <<<<<<<<<<<<<<
 *     mjv_applyPerturbPose(m.ptr, d.ptr, pert.ptr, flg_paused)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_231_mjv_applyPerturbPose, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_applyPerturbPose, __pyx_t_2) < 0) __PYX_ERR(3, 4174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4177
 *     mjv_applyPerturbPose(m.ptr, d.ptr, pert.ptr, flg_paused)
 * 
 * def _mjv_applyPerturbForce(PyMjModel m, PyMjData d, PyMjvPerturb pert):             # <<<<<<<<<<<<<<
 *     mjv_applyPerturbForce(m.ptr, d.ptr, pert.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_233_mjv_applyPerturbForce, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_applyPerturbForce, __pyx_t_2) < 0) __PYX_ERR(3, 4177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4180
 *     mjv_applyPerturbForce(m.ptr, d.ptr, pert.ptr)
 * 
 * def _mjv_select(PyMjModel m, PyMjData d, PyMjvOption vopt, float aspectratio, float relx, float rely, PyMjvScene scn, np.ndarray[np.float64_t, mode="c", ndim=1] selpnt):             # <<<<<<<<<<<<<<
 *     return mjv_select(m.ptr, d.ptr, vopt.ptr, aspectratio, relx, rely, scn.ptr, &selpnt[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_235_mjv_select, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_select, __pyx_t_2) < 0) __PYX_ERR(3, 4180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4183
 *     return mjv_select(m.ptr, d.ptr, vopt.ptr, aspectratio, relx, rely, scn.ptr, &selpnt[0])
 * 
 * def _mjv_defaultOption(PyMjvOption opt):             # <<<<<<<<<<<<<<
 *     mjv_defaultOption(opt.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_237_mjv_defaultOption, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_defaultOption, __pyx_t_2) < 0) __PYX_ERR(3, 4183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4186
 *     mjv_defaultOption(opt.ptr)
 * 
 * def _mjv_defaultFigure(PyMjvFigure fig):             # <<<<<<<<<<<<<<
 *     mjv_defaultFigure(fig.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_239_mjv_defaultFigure, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_defaultFigure, __pyx_t_2) < 0) __PYX_ERR(3, 4186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4189
 *     mjv_defaultFigure(fig.ptr)
 * 
 * def _mjv_makeConnector(PyMjvGeom geom, int type, float width, float a0, float a1, float a2, float b0, float b1, float b2):             # <<<<<<<<<<<<<<
 *     mjv_makeConnector(geom.ptr, type, width, a0, a1, a2, b0, b1, b2)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_241_mjv_makeConnector, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_makeConnector, __pyx_t_2) < 0) __PYX_ERR(3, 4189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4192
 *     mjv_makeConnector(geom.ptr, type, width, a0, a1, a2, b0, b1, b2)
 * 
 * def _mjv_makeScene(PyMjvScene scn, int maxgeom):             # <<<<<<<<<<<<<<
 *     mjv_makeScene(scn.ptr, maxgeom)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_243_mjv_makeScene, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_makeScene, __pyx_t_2) < 0) __PYX_ERR(3, 4192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4195
 *     mjv_makeScene(scn.ptr, maxgeom)
 * 
 * def _mjv_freeScene(PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_freeScene(scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_245_mjv_freeScene, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_freeScene, __pyx_t_2) < 0) __PYX_ERR(3, 4195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4198
 *     mjv_freeScene(scn.ptr)
 * 
 * def _mjv_updateScene(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, PyMjvCamera cam, int catmask, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_updateScene(m.ptr, d.ptr, opt.ptr, pert.ptr, cam.ptr, catmask, scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_247_mjv_updateScene, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_updateScene, __pyx_t_2) < 0) __PYX_ERR(3, 4198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4201
 *     mjv_updateScene(m.ptr, d.ptr, opt.ptr, pert.ptr, cam.ptr, catmask, scn.ptr)
 * 
 * def _mjv_addGeoms(PyMjModel m, PyMjData d, PyMjvOption opt, PyMjvPerturb pert, int catmask, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_addGeoms(m.ptr, d.ptr, opt.ptr, pert.ptr, catmask, scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_249_mjv_addGeoms, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_addGeoms, __pyx_t_2) < 0) __PYX_ERR(3, 4201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4204
 *     mjv_addGeoms(m.ptr, d.ptr, opt.ptr, pert.ptr, catmask, scn.ptr)
 * 
 * def _mjv_updateCamera(PyMjModel m, PyMjData d, PyMjvCamera cam, PyMjvScene scn):             # <<<<<<<<<<<<<<
 *     mjv_updateCamera(m.ptr, d.ptr, cam.ptr, scn.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_251_mjv_updateCamera, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjv_updateCamera, __pyx_t_2) < 0) __PYX_ERR(3, 4204, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4207
 *     mjv_updateCamera(m.ptr, d.ptr, cam.ptr, scn.ptr)
 * 
 * def _mjr_defaultContext(PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_defaultContext(con.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_253_mjr_defaultContext, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_defaultContext, __pyx_t_2) < 0) __PYX_ERR(3, 4207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4210
 *     mjr_defaultContext(con.ptr)
 * 
 * def _mjr_makeContext(PyMjModel m, PyMjrContext con, int fontscale):             # <<<<<<<<<<<<<<
 *     mjr_makeContext(m.ptr, con.ptr, fontscale)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_255_mjr_makeContext, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_makeContext, __pyx_t_2) < 0) __PYX_ERR(3, 4210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4213
 *     mjr_makeContext(m.ptr, con.ptr, fontscale)
 * 
 * def _mjr_freeContext(PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_freeContext(con.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_257_mjr_freeContext, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_freeContext, __pyx_t_2) < 0) __PYX_ERR(3, 4213, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4216
 *     mjr_freeContext(con.ptr)
 * 
 * def _mjr_uploadTexture(PyMjModel m, PyMjrContext con, int texid):             # <<<<<<<<<<<<<<
 *     mjr_uploadTexture(m.ptr, con.ptr, texid)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_259_mjr_uploadTexture, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_uploadTexture, __pyx_t_2) < 0) __PYX_ERR(3, 4216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4219
 *     mjr_uploadTexture(m.ptr, con.ptr, texid)
 * 
 * def _mjr_uploadMesh(PyMjModel m, PyMjrContext con, int meshid):             # <<<<<<<<<<<<<<
 *     mjr_uploadMesh(m.ptr, con.ptr, meshid)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_261_mjr_uploadMesh, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_uploadMesh, __pyx_t_2) < 0) __PYX_ERR(3, 4219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4222
 *     mjr_uploadMesh(m.ptr, con.ptr, meshid)
 * 
 * def _mjr_uploadHField(PyMjModel m, PyMjrContext con, int hfieldid):             # <<<<<<<<<<<<<<
 *     mjr_uploadHField(m.ptr, con.ptr, hfieldid)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_263_mjr_uploadHField, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_uploadHField, __pyx_t_2) < 0) __PYX_ERR(3, 4222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4225
 *     mjr_uploadHField(m.ptr, con.ptr, hfieldid)
 * 
 * def _mjr_setBuffer(int framebuffer, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_setBuffer(framebuffer, con.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_265_mjr_setBuffer, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_setBuffer, __pyx_t_2) < 0) __PYX_ERR(3, 4225, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4228
 *     mjr_setBuffer(framebuffer, con.ptr)
 * 
 * def _mjr_blitBuffer(PyMjrRect src, PyMjrRect dst, int flg_color, int flg_depth, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_blitBuffer(src.ptr[0], dst.ptr[0], flg_color, flg_depth, con.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_267_mjr_blitBuffer, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_blitBuffer, __pyx_t_2) < 0) __PYX_ERR(3, 4228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4231
 *     mjr_blitBuffer(src.ptr[0], dst.ptr[0], flg_color, flg_depth, con.ptr)
 * 
 * def _mjr_overlay(int font, int gridpos, PyMjrRect viewport, str overlay, str overlay2, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_overlay(font, gridpos, viewport.ptr[0], overlay.encode(), overlay2.encode(), con.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_269_mjr_overlay, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_overlay, __pyx_t_2) < 0) __PYX_ERR(3, 4231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4234
 *     mjr_overlay(font, gridpos, viewport.ptr[0], overlay.encode(), overlay2.encode(), con.ptr)
 * 
 * def _mjr_figure(PyMjrRect viewport, PyMjvFigure fig, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_figure(viewport.ptr[0], fig.ptr, con.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_271_mjr_figure, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_figure, __pyx_t_2) < 0) __PYX_ERR(3, 4234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4237
 *     mjr_figure(viewport.ptr[0], fig.ptr, con.ptr)
 * 
 * def _mjr_render(PyMjrRect viewport, PyMjvScene scn, PyMjrContext con):             # <<<<<<<<<<<<<<
 *     mjr_render(viewport.ptr[0], scn.ptr, con.ptr)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_273_mjr_render, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_render, __pyx_t_2) < 0) __PYX_ERR(3, 4237, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4240
 *     mjr_render(viewport.ptr[0], scn.ptr, con.ptr)
 * 
 * def _mjr_finish():             # <<<<<<<<<<<<<<
 *     mjr_finish()
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_275_mjr_finish, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_finish, __pyx_t_2) < 0) __PYX_ERR(3, 4240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4243
 *     mjr_finish()
 * 
 * def _mjr_getError():             # <<<<<<<<<<<<<<
 *     return mjr_getError()
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_277_mjr_getError, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mjr_getError, __pyx_t_2) < 0) __PYX_ERR(3, 4243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4246
 *     return mjr_getError()
 * 
 * def _mju_error(str msg):             # <<<<<<<<<<<<<<
 *     mju_error(msg.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_279_mju_error, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_error, __pyx_t_2) < 0) __PYX_ERR(3, 4246, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4249
 *     mju_error(msg.encode())
 * 
 * def _mju_error_i(str msg, int i):             # <<<<<<<<<<<<<<
 *     mju_error_i(msg.encode(), i)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_281_mju_error_i, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_error_i, __pyx_t_2) < 0) __PYX_ERR(3, 4249, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4252
 *     mju_error_i(msg.encode(), i)
 * 
 * def _mju_error_s(str msg, str text):             # <<<<<<<<<<<<<<
 *     mju_error_s(msg.encode(), text.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_283_mju_error_s, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_error_s, __pyx_t_2) < 0) __PYX_ERR(3, 4252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4255
 *     mju_error_s(msg.encode(), text.encode())
 * 
 * def _mju_warning(str msg):             # <<<<<<<<<<<<<<
 *     mju_warning(msg.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_285_mju_warning, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_warning, __pyx_t_2) < 0) __PYX_ERR(3, 4255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4258
 *     mju_warning(msg.encode())
 * 
 * def _mju_warning_i(str msg, int i):             # <<<<<<<<<<<<<<
 *     mju_warning_i(msg.encode(), i)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_287_mju_warning_i, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_warning_i, __pyx_t_2) < 0) __PYX_ERR(3, 4258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4261
 *     mju_warning_i(msg.encode(), i)
 * 
 * def _mju_warning_s(str msg, str text):             # <<<<<<<<<<<<<<
 *     mju_warning_s(msg.encode(), text.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_289_mju_warning_s, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_warning_s, __pyx_t_2) < 0) __PYX_ERR(3, 4261, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4264
 *     mju_warning_s(msg.encode(), text.encode())
 * 
 * def _mju_clearHandlers():             # <<<<<<<<<<<<<<
 *     mju_clearHandlers()
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_291_mju_clearHandlers, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_clearHandlers, __pyx_t_2) < 0) __PYX_ERR(3, 4264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4267
 *     mju_clearHandlers()
 * 
 * def _mj_warning(PyMjData d, int warning, int info):             # <<<<<<<<<<<<<<
 *     mj_warning(d.ptr, warning, info)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_293_mj_warning, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mj_warning, __pyx_t_2) < 0) __PYX_ERR(3, 4267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4270
 *     mj_warning(d.ptr, warning, info)
 * 
 * def _mju_writeLog(str type, str msg):             # <<<<<<<<<<<<<<
 *     mju_writeLog(type.encode(), msg.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_295_mju_writeLog, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_writeLog, __pyx_t_2) < 0) __PYX_ERR(3, 4270, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4273
 *     mju_writeLog(type.encode(), msg.encode())
 * 
 * def _mju_zero3(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_zero3(&res[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_297_mju_zero3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_zero3, __pyx_t_2) < 0) __PYX_ERR(3, 4273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4276
 *     mju_zero3(&res[0])
 * 
 * def _mju_copy3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):             # <<<<<<<<<<<<<<
 *     mju_copy3(&res[0], &data[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_299_mju_copy3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_copy3, __pyx_t_2) < 0) __PYX_ERR(3, 4276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4279
 *     mju_copy3(&res[0], &data[0])
 * 
 * def _mju_scl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):             # <<<<<<<<<<<<<<
 *     mju_scl3(&res[0], &vec[0], scl)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_301_mju_scl3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_scl3, __pyx_t_2) < 0) __PYX_ERR(3, 4279, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4282
 *     mju_scl3(&res[0], &vec[0], scl)
 * 
 * def _mju_add3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     mju_add3(&res[0], &vec1[0], &vec2[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_303_mju_add3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_add3, __pyx_t_2) < 0) __PYX_ERR(3, 4282, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4285
 *     mju_add3(&res[0], &vec1[0], &vec2[0])
 * 
 * def _mju_sub3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     mju_sub3(&res[0], &vec1[0], &vec2[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_305_mju_sub3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_sub3, __pyx_t_2) < 0) __PYX_ERR(3, 4285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4288
 *     mju_sub3(&res[0], &vec1[0], &vec2[0])
 * 
 * def _mju_addTo3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_addTo3(&res[0], &vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_307_mju_addTo3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_addTo3, __pyx_t_2) < 0) __PYX_ERR(3, 4288, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4291
 *     mju_addTo3(&res[0], &vec[0])
 * 
 * def _mju_subFrom3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_subFrom3(&res[0], &vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_309_mju_subFrom3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_subFrom3, __pyx_t_2) < 0) __PYX_ERR(3, 4291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4294
 *     mju_subFrom3(&res[0], &vec[0])
 * 
 * def _mju_addToScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl):             # <<<<<<<<<<<<<<
 *     mju_addToScl3(&res[0], &vec[0], scl)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_311_mju_addToScl3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_addToScl3, __pyx_t_2) < 0) __PYX_ERR(3, 4294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4297
 *     mju_addToScl3(&res[0], &vec[0], scl)
 * 
 * def _mju_addScl3(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl):             # <<<<<<<<<<<<<<
 *     mju_addScl3(&res[0], &vec1[0], &vec2[0], scl)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_313_mju_addScl3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_addScl3, __pyx_t_2) < 0) __PYX_ERR(3, 4297, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4300
 *     mju_addScl3(&res[0], &vec1[0], &vec2[0], scl)
 * 
 * def _mju_normalize3(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     return mju_normalize3(&res[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_315_mju_normalize3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_normalize3, __pyx_t_2) < 0) __PYX_ERR(3, 4300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4303
 *     return mju_normalize3(&res[0])
 * 
 * def _mju_norm3(np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     return mju_norm3(&vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_317_mju_norm3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_norm3, __pyx_t_2) < 0) __PYX_ERR(3, 4303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4306
 *     return mju_norm3(&vec[0])
 * 
 * def _mju_dot3(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2):             # <<<<<<<<<<<<<<
 *     return mju_dot3(&vec1[0], &vec2[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_319_mju_dot3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_dot3, __pyx_t_2) < 0) __PYX_ERR(3, 4306, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4309
 *     return mju_dot3(&vec1[0], &vec2[0])
 * 
 * def _mju_dist3(np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2):             # <<<<<<<<<<<<<<
 *     return mju_dist3(&pos1[0], &pos2[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_321_mju_dist3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_dist3, __pyx_t_2) < 0) __PYX_ERR(3, 4309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4312
 *     return mju_dist3(&pos1[0], &pos2[0])
 * 
 * def _mju_rotVecMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_rotVecMat(&res[0], &vec[0], &mat[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_323_mju_rotVecMat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_rotVecMat, __pyx_t_2) < 0) __PYX_ERR(3, 4312, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4315
 *     mju_rotVecMat(&res[0], &vec[0], &mat[0])
 * 
 * def _mju_rotVecMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_rotVecMatT(&res[0], &vec[0], &mat[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_325_mju_rotVecMatT, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_rotVecMatT, __pyx_t_2) < 0) __PYX_ERR(3, 4315, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4318
 *     mju_rotVecMatT(&res[0], &vec[0], &mat[0])
 * 
 * def _mju_cross(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] a, np.ndarray[np.float64_t, mode="c", ndim=1] b):             # <<<<<<<<<<<<<<
 *     mju_cross(&res[0], &a[0], &b[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_327_mju_cross, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_cross, __pyx_t_2) < 0) __PYX_ERR(3, 4318, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4321
 *     mju_cross(&res[0], &a[0], &b[0])
 * 
 * def _mju_zero4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_zero4(&res[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_329_mju_zero4, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_zero4, __pyx_t_2) < 0) __PYX_ERR(3, 4321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4324
 *     mju_zero4(&res[0])
 * 
 * def _mju_unit4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     mju_unit4(&res[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_331_mju_unit4, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_unit4, __pyx_t_2) < 0) __PYX_ERR(3, 4324, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4327
 *     mju_unit4(&res[0])
 * 
 * def _mju_copy4(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data):             # <<<<<<<<<<<<<<
 *     mju_copy4(&res[0], &data[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_333_mju_copy4, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_copy4, __pyx_t_2) < 0) __PYX_ERR(3, 4327, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4330
 *     mju_copy4(&res[0], &data[0])
 * 
 * def _mju_normalize4(np.ndarray[np.float64_t, mode="c", ndim=1] res):             # <<<<<<<<<<<<<<
 *     return mju_normalize4(&res[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_335_mju_normalize4, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_normalize4, __pyx_t_2) < 0) __PYX_ERR(3, 4330, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4333
 *     return mju_normalize4(&res[0])
 * 
 * def _mju_zero(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     mju_zero(&res[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_337_mju_zero, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_zero, __pyx_t_2) < 0) __PYX_ERR(3, 4333, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4336
 *     mju_zero(&res[0], n)
 * 
 * def _mju_copy(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] data, int n):             # <<<<<<<<<<<<<<
 *     mju_copy(&res[0], &data[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_339_mju_copy, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_copy, __pyx_t_2) < 0) __PYX_ERR(3, 4336, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4339
 *     mju_copy(&res[0], &data[0], n)
 * 
 * def _mju_scl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_scl(&res[0], &vec[0], scl, n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_341_mju_scl, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_scl, __pyx_t_2) < 0) __PYX_ERR(3, 4339, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4342
 *     mju_scl(&res[0], &vec[0], scl, n)
 * 
 * def _mju_add(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     mju_add(&res[0], &vec1[0], &vec2[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_343_mju_add, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_add, __pyx_t_2) < 0) __PYX_ERR(3, 4342, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4345
 *     mju_add(&res[0], &vec1[0], &vec2[0], n)
 * 
 * def _mju_sub(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     mju_sub(&res[0], &vec1[0], &vec2[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_345_mju_sub, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_sub, __pyx_t_2) < 0) __PYX_ERR(3, 4345, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4348
 *     mju_sub(&res[0], &vec1[0], &vec2[0], n)
 * 
 * def _mju_addTo(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_addTo(&res[0], &vec[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_347_mju_addTo, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_addTo, __pyx_t_2) < 0) __PYX_ERR(3, 4348, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4351
 *     mju_addTo(&res[0], &vec[0], n)
 * 
 * def _mju_subFrom(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_subFrom(&res[0], &vec[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_349_mju_subFrom, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_subFrom, __pyx_t_2) < 0) __PYX_ERR(3, 4351, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4354
 *     mju_subFrom(&res[0], &vec[0], n)
 * 
 * def _mju_addToScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_addToScl(&res[0], &vec[0], scl, n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_351_mju_addToScl, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_addToScl, __pyx_t_2) < 0) __PYX_ERR(3, 4354, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4357
 *     mju_addToScl(&res[0], &vec[0], scl, n)
 * 
 * def _mju_addScl(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, float scl, int n):             # <<<<<<<<<<<<<<
 *     mju_addScl(&res[0], &vec1[0], &vec2[0], scl, n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_353_mju_addScl, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_addScl, __pyx_t_2) < 0) __PYX_ERR(3, 4357, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4360
 *     mju_addScl(&res[0], &vec1[0], &vec2[0], scl, n)
 * 
 * def _mju_normalize(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     return mju_normalize(&res[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_355_mju_normalize, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_normalize, __pyx_t_2) < 0) __PYX_ERR(3, 4360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4363
 *     return mju_normalize(&res[0], n)
 * 
 * def _mju_norm(np.ndarray[np.float64_t, mode="c", ndim=1] res, int n):             # <<<<<<<<<<<<<<
 *     return mju_norm(&res[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_357_mju_norm, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_norm, __pyx_t_2) < 0) __PYX_ERR(3, 4363, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4366
 *     return mju_norm(&res[0], n)
 * 
 * def _mju_dot(np.ndarray[np.float64_t, mode="c", ndim=1] vec1, np.ndarray[np.float64_t, mode="c", ndim=1] vec2, int n):             # <<<<<<<<<<<<<<
 *     return mju_dot(&vec1[0], &vec2[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_359_mju_dot, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_dot, __pyx_t_2) < 0) __PYX_ERR(3, 4366, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4369
 *     return mju_dot(&vec1[0], &vec2[0], n)
 * 
 * def _mju_mulMatVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_mulMatVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_361_mju_mulMatVec, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_mulMatVec, __pyx_t_2) < 0) __PYX_ERR(3, 4369, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4372
 *     mju_mulMatVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 * def _mju_mulMatTVec(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_mulMatTVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_363_mju_mulMatTVec, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_mulMatTVec, __pyx_t_2) < 0) __PYX_ERR(3, 4372, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4375
 *     mju_mulMatTVec(&res[0], &mat[0], &vec[0], nr, nc)
 * 
 * def _mju_transpose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_transpose(&res[0], &mat[0], nr, nc)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_365_mju_transpose, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_transpose, __pyx_t_2) < 0) __PYX_ERR(3, 4375, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4378
 *     mju_transpose(&res[0], &mat[0], nr, nc)
 * 
 * def _mju_mulMatMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):             # <<<<<<<<<<<<<<
 *     mju_mulMatMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_367_mju_mulMatMat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_mulMatMat, __pyx_t_2) < 0) __PYX_ERR(3, 4378, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4381
 *     mju_mulMatMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 * def _mju_mulMatMatT(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int r2):             # <<<<<<<<<<<<<<
 *     mju_mulMatMatT(&res[0], &mat1[0], &mat2[0], r1, c1, r2)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_369_mju_mulMatMatT, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_mulMatMatT, __pyx_t_2) < 0) __PYX_ERR(3, 4381, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4384
 *     mju_mulMatMatT(&res[0], &mat1[0], &mat2[0], r1, c1, r2)
 * 
 * def _mju_mulMatTMat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat1, np.ndarray[np.float64_t, mode="c", ndim=1] mat2, int r1, int c1, int c2):             # <<<<<<<<<<<<<<
 *     mju_mulMatTMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_371_mju_mulMatTMat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_mulMatTMat, __pyx_t_2) < 0) __PYX_ERR(3, 4384, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4387
 *     mju_mulMatTMat(&res[0], &mat1[0], &mat2[0], r1, c1, c2)
 * 
 * def _mju_sqrMatTD(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] diag, int nr, int nc):             # <<<<<<<<<<<<<<
 *     mju_sqrMatTD(&res[0], &mat[0], &diag[0], nr, nc)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_373_mju_sqrMatTD, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_sqrMatTD, __pyx_t_2) < 0) __PYX_ERR(3, 4387, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4390
 *     mju_sqrMatTD(&res[0], &mat[0], &diag[0], nr, nc)
 * 
 * def _mju_transformSpatial(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int flg_force, np.ndarray[np.float64_t, mode="c", ndim=1] newpos, np.ndarray[np.float64_t, mode="c", ndim=1] oldpos, np.ndarray[np.float64_t, mode="c", ndim=1] rotnew2old):             # <<<<<<<<<<<<<<
 *     mju_transformSpatial(&res[0], &vec[0], flg_force, &newpos[0], &oldpos[0], &rotnew2old[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_375_mju_transformSpatial, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_transformSpatial, __pyx_t_2) < 0) __PYX_ERR(3, 4390, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4393
 *     mju_transformSpatial(&res[0], &vec[0], flg_force, &newpos[0], &oldpos[0], &rotnew2old[0])
 * 
 * def _mju_rotVecQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] vec, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_rotVecQuat(&res[0], &vec[0], &quat[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_377_mju_rotVecQuat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_rotVecQuat, __pyx_t_2) < 0) __PYX_ERR(3, 4393, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4396
 *     mju_rotVecQuat(&res[0], &vec[0], &quat[0])
 * 
 * def _mju_negQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_negQuat(&res[0], &quat[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_379_mju_negQuat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_negQuat, __pyx_t_2) < 0) __PYX_ERR(3, 4396, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4399
 *     mju_negQuat(&res[0], &quat[0])
 * 
 * def _mju_mulQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):             # <<<<<<<<<<<<<<
 *     mju_mulQuat(&res[0], &quat1[0], &quat2[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_381_mju_mulQuat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_mulQuat, __pyx_t_2) < 0) __PYX_ERR(3, 4399, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4402
 *     mju_mulQuat(&res[0], &quat1[0], &quat2[0])
 * 
 * def _mju_mulQuatAxis(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] axis):             # <<<<<<<<<<<<<<
 *     mju_mulQuatAxis(&res[0], &quat[0], &axis[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_383_mju_mulQuatAxis, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_mulQuatAxis, __pyx_t_2) < 0) __PYX_ERR(3, 4402, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4405
 *     mju_mulQuatAxis(&res[0], &quat[0], &axis[0])
 * 
 * def _mju_axisAngle2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] axis, float angle):             # <<<<<<<<<<<<<<
 *     mju_axisAngle2Quat(&res[0], &axis[0], angle)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_385_mju_axisAngle2Quat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_axisAngle2Quat, __pyx_t_2) < 0) __PYX_ERR(3, 4405, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4408
 *     mju_axisAngle2Quat(&res[0], &axis[0], angle)
 * 
 * def _mju_quat2Vel(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, float dt):             # <<<<<<<<<<<<<<
 *     mju_quat2Vel(&res[0], &quat[0], dt)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_387_mju_quat2Vel, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_quat2Vel, __pyx_t_2) < 0) __PYX_ERR(3, 4408, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4411
 *     mju_quat2Vel(&res[0], &quat[0], dt)
 * 
 * def _mju_quat2Mat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_quat2Mat(&res[0], &quat[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_389_mju_quat2Mat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_quat2Mat, __pyx_t_2) < 0) __PYX_ERR(3, 4411, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4414
 *     mju_quat2Mat(&res[0], &quat[0])
 * 
 * def _mju_mat2Quat(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     mju_mat2Quat(&quat[0], &mat[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_391_mju_mat2Quat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_mat2Quat, __pyx_t_2) < 0) __PYX_ERR(3, 4414, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4417
 *     mju_mat2Quat(&quat[0], &mat[0])
 * 
 * def _mju_derivQuat(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel):             # <<<<<<<<<<<<<<
 *     mju_derivQuat(&res[0], &quat[0], &vel[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_393_mju_derivQuat, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_derivQuat, __pyx_t_2) < 0) __PYX_ERR(3, 4417, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4420
 *     mju_derivQuat(&res[0], &quat[0], &vel[0])
 * 
 * def _mju_quatIntegrate(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vel, float scale):             # <<<<<<<<<<<<<<
 *     mju_quatIntegrate(&quat[0], &vel[0], scale)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_395_mju_quatIntegrate, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_quatIntegrate, __pyx_t_2) < 0) __PYX_ERR(3, 4420, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4423
 *     mju_quatIntegrate(&quat[0], &vel[0], scale)
 * 
 * def _mju_quatZ2Vec(np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_quatZ2Vec(&quat[0], &vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_397_mju_quatZ2Vec, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_quatZ2Vec, __pyx_t_2) < 0) __PYX_ERR(3, 4423, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4426
 *     mju_quatZ2Vec(&quat[0], &vec[0])
 * 
 * def _mju_mulPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos1, np.ndarray[np.float64_t, mode="c", ndim=1] quat1, np.ndarray[np.float64_t, mode="c", ndim=1] pos2, np.ndarray[np.float64_t, mode="c", ndim=1] quat2):             # <<<<<<<<<<<<<<
 *     mju_mulPose(&posres[0], &quatres[0], &pos1[0], &quat1[0], &pos2[0], &quat2[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_399_mju_mulPose, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_mulPose, __pyx_t_2) < 0) __PYX_ERR(3, 4426, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4429
 *     mju_mulPose(&posres[0], &quatres[0], &pos1[0], &quat1[0], &pos2[0], &quat2[0])
 * 
 * def _mju_negPose(np.ndarray[np.float64_t, mode="c", ndim=1] posres, np.ndarray[np.float64_t, mode="c", ndim=1] quatres, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat):             # <<<<<<<<<<<<<<
 *     mju_negPose(&posres[0], &quatres[0], &pos[0], &quat[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_401_mju_negPose, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_negPose, __pyx_t_2) < 0) __PYX_ERR(3, 4429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4432
 *     mju_negPose(&posres[0], &quatres[0], &pos[0], &quat[0])
 * 
 * def _mju_trnVecPose(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] pos, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] vec):             # <<<<<<<<<<<<<<
 *     mju_trnVecPose(&res[0], &pos[0], &quat[0], &vec[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_403_mju_trnVecPose, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_trnVecPose, __pyx_t_2) < 0) __PYX_ERR(3, 4432, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4435
 *     mju_trnVecPose(&res[0], &pos[0], &quat[0], &vec[0])
 * 
 * def _mju_cholFactor(np.ndarray[np.float64_t, mode="c", ndim=1] mat, int n):             # <<<<<<<<<<<<<<
 *     return mju_cholFactor(&mat[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_405_mju_cholFactor, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_cholFactor, __pyx_t_2) < 0) __PYX_ERR(3, 4435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4438
 *     return mju_cholFactor(&mat[0], n)
 * 
 * def _mju_cholSolve(np.ndarray[np.float64_t, mode="c", ndim=1] res, np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     mju_cholSolve(&res[0], &mat[0], &vec[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_407_mju_cholSolve, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_cholSolve, __pyx_t_2) < 0) __PYX_ERR(3, 4438, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4441
 *     mju_cholSolve(&res[0], &mat[0], &vec[0], n)
 * 
 * def _mju_cholUpdate(np.ndarray[np.float64_t, mode="c", ndim=1] mat, np.ndarray[np.float64_t, mode="c", ndim=1] x, int n, int flg_plus):             # <<<<<<<<<<<<<<
 *     return mju_cholUpdate(&mat[0], &x[0], n, flg_plus)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_409_mju_cholUpdate, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_cholUpdate, __pyx_t_2) < 0) __PYX_ERR(3, 4441, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4444
 *     return mju_cholUpdate(&mat[0], &x[0], n, flg_plus)
 * 
 * def _mju_eig3(np.ndarray[np.float64_t, mode="c", ndim=1] eigval, np.ndarray[np.float64_t, mode="c", ndim=1] eigvec, np.ndarray[np.float64_t, mode="c", ndim=1] quat, np.ndarray[np.float64_t, mode="c", ndim=1] mat):             # <<<<<<<<<<<<<<
 *     return mju_eig3(&eigval[0], &eigvec[0], &quat[0], &mat[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_411_mju_eig3, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_eig3, __pyx_t_2) < 0) __PYX_ERR(3, 4444, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4447
 *     return mju_eig3(&eigval[0], &eigvec[0], &quat[0], &mat[0])
 * 
 * def _mju_muscleFVL(float len, float vel, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):             # <<<<<<<<<<<<<<
 *     return mju_muscleFVL(len, vel, lmin, lmax, &prm[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_413_mju_muscleFVL, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_muscleFVL, __pyx_t_2) < 0) __PYX_ERR(3, 4447, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4450
 *     return mju_muscleFVL(len, vel, lmin, lmax, &prm[0])
 * 
 * def _mju_musclePassive(float len, float lmin, float lmax, np.ndarray[np.float64_t, mode="c", ndim=1] prm):             # <<<<<<<<<<<<<<
 *     return mju_musclePassive(len, lmin, lmax, &prm[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_415_mju_musclePassive, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_musclePassive, __pyx_t_2) < 0) __PYX_ERR(3, 4450, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4453
 *     return mju_musclePassive(len, lmin, lmax, &prm[0])
 * 
 * def _mju_pneumatic(float len, float len0, float vel, np.ndarray[np.float64_t, mode="c", ndim=1] prm, float act, float ctrl, float timestep, np.ndarray[np.float64_t, mode="c", ndim=1] jac):             # <<<<<<<<<<<<<<
 *     return mju_pneumatic(len, len0, vel, &prm[0], act, ctrl, timestep, &jac[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_417_mju_pneumatic, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_pneumatic, __pyx_t_2) < 0) __PYX_ERR(3, 4453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4456
 *     return mju_pneumatic(len, len0, vel, &prm[0], act, ctrl, timestep, &jac[0])
 * 
 * def _mju_encodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):             # <<<<<<<<<<<<<<
 *     mju_encodePyramid(&pyramid[0], &force[0], &mu[0], dim)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_419_mju_encodePyramid, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_encodePyramid, __pyx_t_2) < 0) __PYX_ERR(3, 4456, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4459
 *     mju_encodePyramid(&pyramid[0], &force[0], &mu[0], dim)
 * 
 * def _mju_decodePyramid(np.ndarray[np.float64_t, mode="c", ndim=1] force, np.ndarray[np.float64_t, mode="c", ndim=1] pyramid, np.ndarray[np.float64_t, mode="c", ndim=1] mu, int dim):             # <<<<<<<<<<<<<<
 *     mju_decodePyramid(&force[0], &pyramid[0], &mu[0], dim)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_421_mju_decodePyramid, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_decodePyramid, __pyx_t_2) < 0) __PYX_ERR(3, 4459, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4462
 *     mju_decodePyramid(&force[0], &pyramid[0], &mu[0], dim)
 * 
 * def _mju_springDamper(float pos0, float vel0, float Kp, float Kv, float dt):             # <<<<<<<<<<<<<<
 *     return mju_springDamper(pos0, vel0, Kp, Kv, dt)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_423_mju_springDamper, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_springDamper, __pyx_t_2) < 0) __PYX_ERR(3, 4462, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4465
 *     return mju_springDamper(pos0, vel0, Kp, Kv, dt)
 * 
 * def _mju_min(float a, float b):             # <<<<<<<<<<<<<<
 *     return mju_min(a, b)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_425_mju_min, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_min, __pyx_t_2) < 0) __PYX_ERR(3, 4465, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4468
 *     return mju_min(a, b)
 * 
 * def _mju_max(float a, float b):             # <<<<<<<<<<<<<<
 *     return mju_max(a, b)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_427_mju_max, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_max, __pyx_t_2) < 0) __PYX_ERR(3, 4468, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4471
 *     return mju_max(a, b)
 * 
 * def _mju_sign(float x):             # <<<<<<<<<<<<<<
 *     return mju_sign(x)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_429_mju_sign, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_sign, __pyx_t_2) < 0) __PYX_ERR(3, 4471, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4474
 *     return mju_sign(x)
 * 
 * def _mju_round(float x):             # <<<<<<<<<<<<<<
 *     return mju_round(x)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_431_mju_round, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_round, __pyx_t_2) < 0) __PYX_ERR(3, 4474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4477
 *     return mju_round(x)
 * 
 * def _mju_str2Type(str str):             # <<<<<<<<<<<<<<
 *     return mju_str2Type(str.encode())
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_433_mju_str2Type, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_str2Type, __pyx_t_2) < 0) __PYX_ERR(3, 4477, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4480
 *     return mju_str2Type(str.encode())
 * 
 * def _mju_isBad(float x):             # <<<<<<<<<<<<<<
 *     return mju_isBad(x)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_435_mju_isBad, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_isBad, __pyx_t_2) < 0) __PYX_ERR(3, 4480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4483
 *     return mju_isBad(x)
 * 
 * def _mju_isZero(np.ndarray[np.float64_t, mode="c", ndim=1] vec, int n):             # <<<<<<<<<<<<<<
 *     return mju_isZero(&vec[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_437_mju_isZero, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_isZero, __pyx_t_2) < 0) __PYX_ERR(3, 4483, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4486
 *     return mju_isZero(&vec[0], n)
 * 
 * def _mju_standardNormal(np.ndarray[np.float64_t, mode="c", ndim=1] num2):             # <<<<<<<<<<<<<<
 *     return mju_standardNormal(&num2[0])
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_439_mju_standardNormal, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_standardNormal, __pyx_t_2) < 0) __PYX_ERR(3, 4486, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4489
 *     return mju_standardNormal(&num2[0])
 * 
 * def _mju_insertionSort(np.ndarray[np.float64_t, mode="c", ndim=1] list, int n):             # <<<<<<<<<<<<<<
 *     mju_insertionSort(&list[0], n)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_441_mju_insertionSort, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_insertionSort, __pyx_t_2) < 0) __PYX_ERR(3, 4489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/generated/wrappers.pxi":4492
 *     mju_insertionSort(&list[0], n)
 * 
 * def _mju_Halton(int index, int base):             # <<<<<<<<<<<<<<
 *     return mju_Halton(index, base)
 * 
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_443_mju_Halton, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 4492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mju_Halton, __pyx_t_2) < 0) __PYX_ERR(3, 4492, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":1
 * import os             # <<<<<<<<<<<<<<
 * import sys
 * from abc import ABCMeta, abstractmethod
 */
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_os, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":2
 * import os
 * import sys             # <<<<<<<<<<<<<<
 * from abc import ABCMeta, abstractmethod
 * from mujoco_py.utils import discover_mujoco
 */
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":3
 * import os
 * import sys
 * from abc import ABCMeta, abstractmethod             # <<<<<<<<<<<<<<
 * from mujoco_py.utils import discover_mujoco
 * 
 */
  __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_ABCMeta);
  __Pyx_GIVEREF(__pyx_n_s_ABCMeta);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ABCMeta);
  __Pyx_INCREF(__pyx_n_s_abstractmethod);
  __Pyx_GIVEREF(__pyx_n_s_abstractmethod);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_abstractmethod);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_abc, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_ABCMeta); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ABCMeta, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_abstractmethod); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_abstractmethod, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":4
 * import sys
 * from abc import ABCMeta, abstractmethod
 * from mujoco_py.utils import discover_mujoco             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_discover_mujoco);
  __Pyx_GIVEREF(__pyx_n_s_discover_mujoco);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_discover_mujoco);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_mujoco_py_utils, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_discover_mujoco); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_discover_mujoco, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":7
 * 
 * 
 * def _add_mujoco_bin_to_dyld_library_path():             # <<<<<<<<<<<<<<
 *     mujoco_path, _ = discover_mujoco()
 *     bin_path = os.path.join(mujoco_path, "bin")
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_445_add_mujoco_bin_to_dyld_library_path, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_mujoco_bin_to_dyld_library, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":15
 * 
 * 
 * try:             # <<<<<<<<<<<<<<
 *     _add_mujoco_bin_to_dyld_library_path()
 *     import glfw
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "mujoco_py/opengl_context.pyx":16
 * 
 * try:
 *     _add_mujoco_bin_to_dyld_library_path()             # <<<<<<<<<<<<<<
 *     import glfw
 * except ImportError:
 */
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_add_mujoco_bin_to_dyld_library); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L2_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (__pyx_t_6) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L2_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L2_error)
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "mujoco_py/opengl_context.pyx":17
 * try:
 *     _add_mujoco_bin_to_dyld_library_path()
 *     import glfw             # <<<<<<<<<<<<<<
 * except ImportError:
 *     pass
 */
      __pyx_t_2 = __Pyx_Import(__pyx_n_s_glfw, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L2_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_glfw, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L2_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "mujoco_py/opengl_context.pyx":15
 * 
 * 
 * try:             # <<<<<<<<<<<<<<
 *     _add_mujoco_bin_to_dyld_library_path()
 *     import glfw
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L7_try_end;
    __pyx_L2_error:;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/opengl_context.pyx":18
 *     _add_mujoco_bin_to_dyld_library_path()
 *     import glfw
 * except ImportError:             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_7) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L3_exception_handled;
    }
    goto __pyx_L4_except_error;
    __pyx_L4_except_error:;

    /* "mujoco_py/opengl_context.pyx":15
 * 
 * 
 * try:             # <<<<<<<<<<<<<<
 *     _add_mujoco_bin_to_dyld_library_path()
 *     import glfw
 */
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L3_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L7_try_end:;
  }

  /* "mujoco_py/opengl_context.pyx":22
 * 
 * 
 * class OpenGLContext(metaclass=ABCMeta):             # <<<<<<<<<<<<<<
 * 
 *     @abstractmethod
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ABCMeta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_empty_tuple, __pyx_n_s_OpenGLContext, __pyx_n_s_OpenGLContext, __pyx_t_2, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);

  /* "mujoco_py/opengl_context.pyx":24
 * class OpenGLContext(metaclass=ABCMeta):
 * 
 *     @abstractmethod             # <<<<<<<<<<<<<<
 *     def make_context_current(self):
 *         raise NotImplementedError()
 */
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_abstractmethod); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "mujoco_py/opengl_context.pyx":25
 * 
 *     @abstractmethod
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError()
 * 
 */
  __pyx_t_10 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_13OpenGLContext_1make_context_current, 0, __pyx_n_s_OpenGLContext_make_context_curre, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__615)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
    }
  }
  if (!__pyx_t_11) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 24, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_9)) {
      PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 24, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
      PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 24, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    } else
    #endif
    {
      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_10);
      __pyx_t_10 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_make_context_current, __pyx_t_8) < 0) __PYX_ERR(0, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":28
 *         raise NotImplementedError()
 * 
 *     @abstractmethod             # <<<<<<<<<<<<<<
 *     def set_buffer_size(self, width, height):
 *         raise NotImplementedError()
 */
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_abstractmethod); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "mujoco_py/opengl_context.pyx":29
 * 
 *     @abstractmethod
 *     def set_buffer_size(self, width, height):             # <<<<<<<<<<<<<<
 *         raise NotImplementedError()
 * 
 */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_13OpenGLContext_3set_buffer_size, 0, __pyx_n_s_OpenGLContext_set_buffer_size, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__617)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_10 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_10)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
    }
  }
  if (!__pyx_t_10) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 28, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_9)) {
      PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_12};
      __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 28, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
      PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_12};
      __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 28, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    } else
    #endif
    {
      __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 28, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
      __Pyx_GIVEREF(__pyx_t_12);
      PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_12);
      __pyx_t_12 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 28, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_set_buffer_size, __pyx_t_8) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":22
 * 
 * 
 * class OpenGLContext(metaclass=ABCMeta):             # <<<<<<<<<<<<<<
 * 
 *     @abstractmethod
 */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_OpenGLContext, __pyx_empty_tuple, __pyx_t_6, __pyx_t_2, 1, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OpenGLContext, __pyx_t_8) < 0) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":33
 * 
 * 
 * class GlfwError(RuntimeError):             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__618); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__618, __pyx_n_s_GlfwError, __pyx_n_s_GlfwError, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_GlfwError, __pyx_tuple__618, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GlfwError, __pyx_t_6) < 0) __PYX_ERR(0, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":37
 * 
 * 
 * class GlfwContext(OpenGLContext):             # <<<<<<<<<<<<<<
 * 
 *     _INIT_WIDTH = 1000
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_OpenGLContext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_GlfwContext, __pyx_n_s_GlfwContext, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);

  /* "mujoco_py/opengl_context.pyx":39
 * class GlfwContext(OpenGLContext):
 * 
 *     _INIT_WIDTH = 1000             # <<<<<<<<<<<<<<
 *     _INIT_HEIGHT = 1000
 *     _GLFW_IS_INITIALIZED = False
 */
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_INIT_WIDTH, __pyx_int_1000) < 0) __PYX_ERR(0, 39, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":40
 * 
 *     _INIT_WIDTH = 1000
 *     _INIT_HEIGHT = 1000             # <<<<<<<<<<<<<<
 *     _GLFW_IS_INITIALIZED = False
 * 
 */
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_INIT_HEIGHT, __pyx_int_1000) < 0) __PYX_ERR(0, 40, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":41
 *     _INIT_WIDTH = 1000
 *     _INIT_HEIGHT = 1000
 *     _GLFW_IS_INITIALIZED = False             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, offscreen=False):
 */
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_GLFW_IS_INITIALIZED, Py_False) < 0) __PYX_ERR(0, 41, __pyx_L1_error)

  /* "mujoco_py/opengl_context.pyx":43
 *     _GLFW_IS_INITIALIZED = False
 * 
 *     def __init__(self, offscreen=False):             # <<<<<<<<<<<<<<
 *         GlfwContext._init_glfw()
 * 
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_11GlfwContext_1__init__, 0, __pyx_n_s_GlfwContext___init, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__620)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_init_2, __pyx_t_8) < 0) __PYX_ERR(0, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":52
 * 
 *     @staticmethod
 *     def _init_glfw():             # <<<<<<<<<<<<<<
 *         if GlfwContext._GLFW_IS_INITIALIZED:
 *             return
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_11GlfwContext_3_init_glfw, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_GlfwContext__init_glfw, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__622)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "mujoco_py/opengl_context.pyx":51
 *         self._set_window_size(self._width, self._height)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def _init_glfw():
 *         if GlfwContext._GLFW_IS_INITIALIZED:
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_init_glfw, __pyx_t_8) < 0) __PYX_ERR(0, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":68
 *         GlfwContext._GLFW_IS_INITIALIZED = True
 * 
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         glfw.make_context_current(self.window)
 * 
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_11GlfwContext_5make_context_current, 0, __pyx_n_s_GlfwContext_make_context_current, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__624)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_make_context_current, __pyx_t_8) < 0) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":71
 *         glfw.make_context_current(self.window)
 * 
 *     def set_buffer_size(self, width, height):             # <<<<<<<<<<<<<<
 *         self._set_window_size(width, height)
 *         self._width = width
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_11GlfwContext_7set_buffer_size, 0, __pyx_n_s_GlfwContext_set_buffer_size, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__626)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_set_buffer_size, __pyx_t_8) < 0) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":76
 *         self._height = height
 * 
 *     def _create_window(self, offscreen):             # <<<<<<<<<<<<<<
 *         if offscreen:
 *             print("Creating offscreen glfw")
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_11GlfwContext_9_create_window, 0, __pyx_n_s_GlfwContext__create_window, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__628)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_create_window, __pyx_t_8) < 0) __PYX_ERR(0, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":101
 *         return window
 * 
 *     def get_buffer_size(self):             # <<<<<<<<<<<<<<
 *         return glfw.get_framebuffer_size(self.window)
 * 
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_11GlfwContext_11get_buffer_size, 0, __pyx_n_s_GlfwContext_get_buffer_size, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__630)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_get_buffer_size, __pyx_t_8) < 0) __PYX_ERR(0, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":104
 *         return glfw.get_framebuffer_size(self.window)
 * 
 *     def _set_window_size(self, target_width, target_height):             # <<<<<<<<<<<<<<
 *         self.make_context_current()
 *         if target_width != self._width or target_height != self._height:
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_11GlfwContext_13_set_window_size, 0, __pyx_n_s_GlfwContext__set_window_size, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__632)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_set_window_size, __pyx_t_8) < 0) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":118
 * 
 *     @staticmethod
 *     def _glfw_error_callback(error_code, description):             # <<<<<<<<<<<<<<
 *         print("GLFW error (code %d): %s", error_code, description)
 * 
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_11GlfwContext_15_glfw_error_callback, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_GlfwContext__glfw_error_callback, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__634)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "mujoco_py/opengl_context.pyx":117
 *                 glfw.set_window_size(self.window, target_width // 2, target_height // 2)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def _glfw_error_callback(error_code, description):
 *         print("GLFW error (code %d): %s", error_code, description)
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_glfw_error_callback, __pyx_t_8) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/opengl_context.pyx":37
 * 
 * 
 * class GlfwContext(OpenGLContext):             # <<<<<<<<<<<<<<
 * 
 *     _INIT_WIDTH = 1000
 */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_GlfwContext, __pyx_t_1, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GlfwContext, __pyx_t_8) < 0) __PYX_ERR(0, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/opengl_context.pyx":122
 * 
 * 
 * class OffscreenOpenGLContext():             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, device_id):
 */
  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_OffscreenOpenGLContext, __pyx_n_s_OffscreenOpenGLContext, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "mujoco_py/opengl_context.pyx":124
 * class OffscreenOpenGLContext():
 * 
 *     def __init__(self, device_id):             # <<<<<<<<<<<<<<
 *         self.device_id = device_id
 *         res = initOpenGL(device_id)
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_22OffscreenOpenGLContext_1__init__, 0, __pyx_n_s_OffscreenOpenGLContext___init, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__636)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_2) < 0) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":130
 *             raise RuntimeError("Failed to initialize OpenGL")
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         # TODO: properly close OpenGL in our contexts
 *         closeOpenGL()
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_22OffscreenOpenGLContext_3close, 0, __pyx_n_s_OffscreenOpenGLContext_close, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__638)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(0, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":134
 *         closeOpenGL()
 * 
 *     def make_context_current(self):             # <<<<<<<<<<<<<<
 *         makeOpenGLContextCurrent(self.device_id)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_22OffscreenOpenGLContext_5make_context_current, 0, __pyx_n_s_OffscreenOpenGLContext_make_cont, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__640)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_make_context_current, __pyx_t_2) < 0) __PYX_ERR(0, 134, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":137
 *         makeOpenGLContextCurrent(self.device_id)
 * 
 *     def set_buffer_size(self, int width, int height):             # <<<<<<<<<<<<<<
 *         res = setOpenGLBufferSize(self.device_id, width, height)
 *         if res != 1:
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_22OffscreenOpenGLContext_7set_buffer_size, 0, __pyx_n_s_OffscreenOpenGLContext_set_buffe, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__642)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_set_buffer_size, __pyx_t_2) < 0) __PYX_ERR(0, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/opengl_context.pyx":122
 * 
 * 
 * class OffscreenOpenGLContext():             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, device_id):
 */
  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_OffscreenOpenGLContext, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OffscreenOpenGLContext, __pyx_t_2) < 0) __PYX_ERR(0, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":1
 * from xml.dom import minidom             # <<<<<<<<<<<<<<
 * from mujoco_py.utils import remove_empty_lines
 * from mujoco_py.builder import build_callback_fn
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_minidom);
  __Pyx_GIVEREF(__pyx_n_s_minidom);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_minidom);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_xml_dom, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_minidom); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_minidom, __pyx_t_1) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjsim.pyx":2
 * from xml.dom import minidom
 * from mujoco_py.utils import remove_empty_lines             # <<<<<<<<<<<<<<
 * from mujoco_py.builder import build_callback_fn
 * from threading import Lock
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_remove_empty_lines);
  __Pyx_GIVEREF(__pyx_n_s_remove_empty_lines);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_remove_empty_lines);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_mujoco_py_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_remove_empty_lines); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_remove_empty_lines, __pyx_t_2) < 0) __PYX_ERR(5, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":3
 * from xml.dom import minidom
 * from mujoco_py.utils import remove_empty_lines
 * from mujoco_py.builder import build_callback_fn             # <<<<<<<<<<<<<<
 * from threading import Lock
 * 
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_build_callback_fn);
  __Pyx_GIVEREF(__pyx_n_s_build_callback_fn);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_build_callback_fn);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_mujoco_py_builder, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_build_callback_fn); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_build_callback_fn, __pyx_t_1) < 0) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjsim.pyx":4
 * from mujoco_py.utils import remove_empty_lines
 * from mujoco_py.builder import build_callback_fn
 * from threading import Lock             # <<<<<<<<<<<<<<
 * 
 * _MjSim_render_lock = Lock()
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_Lock);
  __Pyx_GIVEREF(__pyx_n_s_Lock);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Lock);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_threading, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Lock, __pyx_t_2) < 0) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsim.pyx":6
 * from threading import Lock
 * 
 * _MjSim_render_lock = Lock()             # <<<<<<<<<<<<<<
 * 
 * ctypedef void (*substep_udd_t)(const mjModel* m, mjData* d)
 */
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MjSim_render_lock, __pyx_t_1) < 0) __PYX_ERR(5, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjsimstate.pyx":2
 * 
 * class MjSimState(namedtuple('SimStateBase', 'time qpos qvel act udd_state')):             # <<<<<<<<<<<<<<
 *     """Represents a snapshot of the simulator's state.
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_namedtuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__643, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_MjSimState, __pyx_n_s_MjSimState, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, __pyx_kp_s_Represents_a_snapshot_of_the_sim); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);

  /* "mujoco_py/mjsimstate.pyx":7
 *     This includes time, qpos, qvel, act, and udd_state.
 *     """
 *     __slots__ = ()             # <<<<<<<<<<<<<<
 * 
 *     # need to implement this because numpy doesn't support == on arrays
 */
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_slots, __pyx_empty_tuple) < 0) __PYX_ERR(6, 7, __pyx_L1_error)

  /* "mujoco_py/mjsimstate.pyx":10
 * 
 *     # need to implement this because numpy doesn't support == on arrays
 *     def __eq__(self, other):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, self.__class__):
 *             return NotImplemented
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_10MjSimState_1__eq__, 0, __pyx_n_s_MjSimState___eq, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__645)); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_eq, __pyx_t_8) < 0) __PYX_ERR(6, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/mjsimstate.pyx":28
 *                 np.array_equal(self.act, other.act))
 * 
 *     def __ne__(self, other):             # <<<<<<<<<<<<<<
 *         return not self.__eq__(other)
 * 
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_10MjSimState_3__ne__, 0, __pyx_n_s_MjSimState___ne, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__647)); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_ne_2, __pyx_t_8) < 0) __PYX_ERR(6, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/mjsimstate.pyx":31
 *         return not self.__eq__(other)
 * 
 *     def flatten(self):             # <<<<<<<<<<<<<<
 *         """ Flattens a state into a numpy array of numbers."""
 *         if self.act is None:
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_10MjSimState_5flatten, 0, __pyx_n_s_MjSimState_flatten, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__649)); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_flatten, __pyx_t_8) < 0) __PYX_ERR(6, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/mjsimstate.pyx":42
 * 
 *     @staticmethod
 *     def _flatten_dict(d):             # <<<<<<<<<<<<<<
 *         a = []
 *         for k in sorted(d.keys()):
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_10MjSimState_7_flatten_dict, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_MjSimState__flatten_dict, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__651)); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "mujoco_py/mjsimstate.pyx":41
 *         return np.concatenate(state_tuple)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def _flatten_dict(d):
 *         a = []
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_flatten_dict, __pyx_t_8) < 0) __PYX_ERR(6, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/mjsimstate.pyx":54
 * 
 *     @staticmethod
 *     def from_flattened(array, sim):             # <<<<<<<<<<<<<<
 *         idx_time = 0
 *         idx_qpos = idx_time + 1
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_10MjSimState_9from_flattened, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_MjSimState_from_flattened, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__653)); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "mujoco_py/mjsimstate.pyx":53
 *         return np.array(a)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def from_flattened(array, sim):
 *         idx_time = 0
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_from_flattened, __pyx_t_8) < 0) __PYX_ERR(6, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/mjsimstate.pyx":74
 * 
 *     @staticmethod
 *     def _unflatten_dict(a, schema_example):             # <<<<<<<<<<<<<<
 *         d = {}
 *         idx = 0
 */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_10MjSimState_11_unflatten_dict, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_MjSimState__unflatten_dict, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__655)); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "mujoco_py/mjsimstate.pyx":73
 *         return MjSimState(time, qpos, qvel, act, udd_state)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def _unflatten_dict(a, schema_example):
 *         d = {}
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_unflatten_dict, __pyx_t_8) < 0) __PYX_ERR(6, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "mujoco_py/mjsimstate.pyx":2
 * 
 * class MjSimState(namedtuple('SimStateBase', 'time qpos qvel act udd_state')):             # <<<<<<<<<<<<<<
 *     """Represents a snapshot of the simulator's state.
 * 
 */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MjSimState, __pyx_t_1, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MjSimState, __pyx_t_8) < 0) __PYX_ERR(6, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":1
 * from threading import Lock             # <<<<<<<<<<<<<<
 * from mujoco_py.generated import const
 * 
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_Lock);
  __Pyx_GIVEREF(__pyx_n_s_Lock);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Lock);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_threading, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Lock); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Lock, __pyx_t_1) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjrendercontext.pyx":2
 * from threading import Lock
 * from mujoco_py.generated import const             # <<<<<<<<<<<<<<
 * 
 * cdef class MjRenderContext(object):
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_const);
  __Pyx_GIVEREF(__pyx_n_s_const);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_const);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_mujoco_py_generated, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_const); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_const, __pyx_t_2) < 0) __PYX_ERR(1, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":259
 * 
 * 
 * class MjRenderContextOffscreen(MjRenderContext):             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self, MjSim sim, int device_id):
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_MjRenderContext));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_MjRenderContext));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9mujoco_py_4cymj_MjRenderContext));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_MjRenderContextOffscreen, __pyx_n_s_MjRenderContextOffscreen, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "mujoco_py/mjrendercontext.pyx":261
 * class MjRenderContextOffscreen(MjRenderContext):
 * 
 *     def __cinit__(self, MjSim sim, int device_id):             # <<<<<<<<<<<<<<
 *         super().__init__(sim, offscreen=True, device_id=device_id)
 * 
 */
  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_24MjRenderContextOffscreen_1__cinit__, 0, __pyx_n_s_MjRenderContextOffscreen___cinit, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__657)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(__pyx_t_9);
  PyList_Append(__pyx_t_8, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_cinit, __pyx_t_9) < 0) __PYX_ERR(1, 261, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "mujoco_py/mjrendercontext.pyx":259
 * 
 * 
 * class MjRenderContextOffscreen(MjRenderContext):             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self, MjSim sim, int device_id):
 */
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MjRenderContextOffscreen, __pyx_t_1, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__Pyx_CyFunction_InitClassCell(__pyx_t_8, __pyx_t_9) < 0) __PYX_ERR(1, 259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MjRenderContextOffscreen, __pyx_t_9) < 0) __PYX_ERR(1, 259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjrendercontext.pyx":264
 *         super().__init__(sim, offscreen=True, device_id=device_id)
 * 
 * class MjRenderContextWindow(MjRenderContext):             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, MjSim sim):
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_MjRenderContext));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9mujoco_py_4cymj_MjRenderContext));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9mujoco_py_4cymj_MjRenderContext));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_MjRenderContextWindow, __pyx_n_s_MjRenderContextWindow, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "mujoco_py/mjrendercontext.pyx":266
 * class MjRenderContextWindow(MjRenderContext):
 * 
 *     def __init__(self, MjSim sim):             # <<<<<<<<<<<<<<
 *         super().__init__(sim, offscreen=False)
 * 
 */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_21MjRenderContextWindow_1__init__, 0, __pyx_n_s_MjRenderContextWindow___init, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__659)); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(__pyx_t_11);
  PyList_Append(__pyx_t_9, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_init_2, __pyx_t_11) < 0) __PYX_ERR(1, 266, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "mujoco_py/mjrendercontext.pyx":273
 * 
 *     @property
 *     def window(self):             # <<<<<<<<<<<<<<
 *         return self.opengl_context.window
 * 
 */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_21MjRenderContextWindow_3window, 0, __pyx_n_s_MjRenderContextWindow_window, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__661)); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "mujoco_py/mjrendercontext.pyx":272
 *             "Only GlfwContext supported for windowed rendering")
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def window(self):
 *         return self.opengl_context.window
 */
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
  __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_12, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_window, __pyx_t_11) < 0) __PYX_ERR(1, 273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "mujoco_py/mjrendercontext.pyx":276
 *         return self.opengl_context.window
 * 
 *     def render(self):             # <<<<<<<<<<<<<<
 *         if self.window is None or glfw.window_should_close(self.window):
 *             return
 */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_21MjRenderContextWindow_5render, 0, __pyx_n_s_MjRenderContextWindow_render, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__663)); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(__pyx_t_11);
  PyList_Append(__pyx_t_9, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_6, __pyx_n_s_render, __pyx_t_11) < 0) __PYX_ERR(1, 276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "mujoco_py/mjrendercontext.pyx":264
 *         super().__init__(sim, offscreen=True, device_id=device_id)
 * 
 * class MjRenderContextWindow(MjRenderContext):             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, MjSim sim):
 */
  __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MjRenderContextWindow, __pyx_t_1, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__Pyx_CyFunction_InitClassCell(__pyx_t_9, __pyx_t_11) < 0) __PYX_ERR(1, 264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MjRenderContextWindow, __pyx_t_11) < 0) __PYX_ERR(1, 264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":1
 * try:             # <<<<<<<<<<<<<<
 *     import pycuda.driver as drv
 * except ImportError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "mujoco_py/mjbatchrenderer.pyx":2
 * try:
 *     import pycuda.driver as drv             # <<<<<<<<<<<<<<
 * except ImportError:
 *     drv = None
 */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_n_s__664);
      __Pyx_GIVEREF(__pyx_n_s__664);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s__664);
      __pyx_t_2 = __Pyx_Import(__pyx_n_s_pycuda_driver, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_drv, __pyx_t_2) < 0) __PYX_ERR(2, 2, __pyx_L8_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "mujoco_py/mjbatchrenderer.pyx":1
 * try:             # <<<<<<<<<<<<<<
 *     import pycuda.driver as drv
 * except ImportError:
 */
    }
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L13_try_end;
    __pyx_L8_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "mujoco_py/mjbatchrenderer.pyx":3
 * try:
 *     import pycuda.driver as drv
 * except ImportError:             # <<<<<<<<<<<<<<
 *     drv = None
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("mujoco_py.cymj", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(2, 3, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_6);

      /* "mujoco_py/mjbatchrenderer.pyx":4
 *     import pycuda.driver as drv
 * except ImportError:
 *     drv = None             # <<<<<<<<<<<<<<
 * 
 * 
 */
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_drv, Py_None) < 0) __PYX_ERR(2, 4, __pyx_L10_except_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L9_exception_handled;
    }
    goto __pyx_L10_except_error;
    __pyx_L10_except_error:;

    /* "mujoco_py/mjbatchrenderer.pyx":1
 * try:             # <<<<<<<<<<<<<<
 *     import pycuda.driver as drv
 * except ImportError:
 */
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L9_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
    __pyx_L13_try_end:;
  }

  /* "mujoco_py/mjbatchrenderer.pyx":7
 * 
 * 
 * class MjBatchRendererException(Exception):             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_6, __pyx_n_s_MjBatchRendererException, __pyx_n_s_MjBatchRendererException, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_MjBatchRendererException, __pyx_t_6, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MjBatchRendererException, __pyx_t_11) < 0) __PYX_ERR(2, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":11
 * 
 * 
 * class MjBatchRendererNotSupported(MjBatchRendererException):             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjBatchRendererException); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_1, __pyx_n_s_MjBatchRendererNotSupported, __pyx_n_s_MjBatchRendererNotSupported, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MjBatchRendererNotSupported, __pyx_t_1, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MjBatchRendererNotSupported, __pyx_t_11) < 0) __PYX_ERR(2, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":15
 * 
 * 
 * class CudaNotEnabledError(MjBatchRendererException):             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjBatchRendererException); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_6, __pyx_n_s_CudaNotEnabledError, __pyx_n_s_CudaNotEnabledError, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_CudaNotEnabledError, __pyx_t_6, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CudaNotEnabledError, __pyx_t_11) < 0) __PYX_ERR(2, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":19
 * 
 * 
 * class CudaBufferNotMappedError(MjBatchRendererException):             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjBatchRendererException); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_1, __pyx_n_s_CudaBufferNotMappedError, __pyx_n_s_CudaBufferNotMappedError, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_CudaBufferNotMappedError, __pyx_t_1, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CudaBufferNotMappedError, __pyx_t_11) < 0) __PYX_ERR(2, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":23
 * 
 * 
 * class CudaBufferMappedError(MjBatchRendererException):             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MjBatchRendererException); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_6, __pyx_n_s_CudaBufferMappedError, __pyx_n_s_CudaBufferMappedError, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_CudaBufferMappedError, __pyx_t_6, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CudaBufferMappedError, __pyx_t_11) < 0) __PYX_ERR(2, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":27
 * 
 * 
 * class MjBatchRenderer(object):             # <<<<<<<<<<<<<<
 *     """
 *     Utility class for rendering into OpenGL Pixel Buffer Objects (PBOs),
 */
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__665); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_tuple__665, __pyx_n_s_MjBatchRenderer, __pyx_n_s_MjBatchRenderer, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, __pyx_kp_s_Utility_class_for_rendering_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "mujoco_py/mjbatchrenderer.pyx":44
 *     """
 * 
 *     def __init__(self, width, height, batch_size=1, device_id=0,             # <<<<<<<<<<<<<<
 *                  depth=False, use_cuda=False):
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_1__init__, 0, __pyx_n_s_MjBatchRenderer___init, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__667)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__668);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_2) < 0) __PYX_ERR(2, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":86
 *             self._init_cuda()
 * 
 *     def _init_cuda(self):             # <<<<<<<<<<<<<<
 *         if drv is None:
 *             raise ImportError("Failed to import pycuda.")
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_3_init_cuda, 0, __pyx_n_s_MjBatchRenderer__init_cuda, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__670)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init_cuda, __pyx_t_2) < 0) __PYX_ERR(2, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":102
 *             self._cuda_depth_pbo = RegisteredBuffer(self.pbo_depth)
 * 
 *     def map(self):             # <<<<<<<<<<<<<<
 *         """ Map OpenGL buffer to CUDA for reading. """
 *         if not self._use_cuda:
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_5map, 0, __pyx_n_s_MjBatchRenderer_map, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__672)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_map, __pyx_t_2) < 0) __PYX_ERR(2, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":139
 *         self._cuda_buffers_are_mapped = True
 * 
 *     def unmap(self):             # <<<<<<<<<<<<<<
 *         """ Unmap OpenGL buffer from CUDA so that it can be rendered into. """
 *         if not self._use_cuda:
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_7unmap, 0, __pyx_n_s_MjBatchRenderer_unmap, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__674)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unmap, __pyx_t_2) < 0) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":157
 *         self._cuda_buffers_are_mapped = False
 * 
 *     def prepare_render_context(self, sim):             # <<<<<<<<<<<<<<
 *         """
 *         Set up the rendering context for an MjSim. Also happens automatically
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_9prepare_render_context, 0, __pyx_n_s_MjBatchRenderer_prepare_render_c, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__676)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_prepare_render_context, __pyx_t_2) < 0) __PYX_ERR(2, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":170
 *         return MjRenderContext(sim, device_id=self._device_id)
 * 
 *     def render(self, sim, camera_id=None, batch_offset=None):             # <<<<<<<<<<<<<<
 *         """
 *         Render current scene from the MjSim into the buffer. By
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_11render, 0, __pyx_n_s_MjBatchRenderer_render, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__678)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__679);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_render, __pyx_t_2) < 0) __PYX_ERR(2, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":214
 *         self._current_batch_offset = (self._current_batch_offset + 1) % self._batch_size
 * 
 *     def read(self):             # <<<<<<<<<<<<<<
 *         """
 *         Transfer a copy of the buffer from the GPU to the CPU as a numpy array.
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_13read, 0, __pyx_n_s_MjBatchRenderer_read, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__681)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_read, __pyx_t_2) < 0) __PYX_ERR(2, 214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":227
 *             return self._read_nocuda()
 * 
 *     def _read_cuda(self):             # <<<<<<<<<<<<<<
 *         if not self._cuda_buffers_are_mapped:
 *             raise CudaBufferNotMappedError(
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_15_read_cuda, 0, __pyx_n_s_MjBatchRenderer__read_cuda, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__683)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_read_cuda, __pyx_t_2) < 0) __PYX_ERR(2, 227, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":247
 *         return rgb_arr, depth_arr
 * 
 *     def _read_nocuda(self):             # <<<<<<<<<<<<<<
 *         rgb_arr = np.zeros(3 * self._width * self._height * self._batch_size, dtype=np.uint8)
 *         cdef unsigned char[::view.contiguous] rgb_view = rgb_arr
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_17_read_nocuda, 0, __pyx_n_s_MjBatchRenderer__read_nocuda, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__685)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_read_nocuda, __pyx_t_2) < 0) __PYX_ERR(2, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":267
 * 
 *     @property
 *     def cuda_rgb_buffer_pointer(self):             # <<<<<<<<<<<<<<
 *         """ Pointer to CUDA buffer for RGB batch. """
 *         if not self._use_cuda:
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_19cuda_rgb_buffer_pointer, 0, __pyx_n_s_MjBatchRenderer_cuda_rgb_buffer, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__687)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "mujoco_py/mjbatchrenderer.pyx":266
 *         return rgb_arr, depth_arr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cuda_rgb_buffer_pointer(self):
 *         """ Pointer to CUDA buffer for RGB batch. """
 */
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_cuda_rgb_buffer_pointer, __pyx_t_2) < 0) __PYX_ERR(2, 267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":276
 * 
 *     @property
 *     def cuda_depth_buffer_pointer(self):             # <<<<<<<<<<<<<<
 *         """ Pointer to CUDA buffer for depth batch. """
 *         if not self._use_cuda:
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_21cuda_depth_buffer_pointer, 0, __pyx_n_s_MjBatchRenderer_cuda_depth_buffe, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__689)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "mujoco_py/mjbatchrenderer.pyx":275
 *         return self._cuda_rgb_ptr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cuda_depth_buffer_pointer(self):
 *         """ Pointer to CUDA buffer for depth batch. """
 */
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_cuda_depth_buffer_pointer, __pyx_t_2) < 0) __PYX_ERR(2, 276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":286
 *         return self._cuda_depth_ptr
 * 
 *     def __del__(self):             # <<<<<<<<<<<<<<
 *         if self._use_cuda:
 *             self._cuda_context.push()
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_15MjBatchRenderer_23__del__, 0, __pyx_n_s_MjBatchRenderer___del, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__691)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_del, __pyx_t_2) < 0) __PYX_ERR(2, 286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/mjbatchrenderer.pyx":27
 * 
 * 
 * class MjBatchRenderer(object):             # <<<<<<<<<<<<<<
 *     """
 *     Utility class for rendering into OpenGL Pixel Buffer Objects (PBOs),
 */
  __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MjBatchRenderer, __pyx_tuple__665, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MjBatchRenderer, __pyx_t_2) < 0) __PYX_ERR(2, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/cymj.pyx":62
 * #   with wrap_mujoco_warning():
 * #       mj_somefunc()
 * cdef object py_warning_exception = None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_9mujoco_py_4cymj_py_warning_exception);
  __Pyx_DECREF_SET(__pyx_v_9mujoco_py_4cymj_py_warning_exception, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "mujoco_py/cymj.pyx":81
 * 
 * 
 * def set_warning_callback(warn):             # <<<<<<<<<<<<<<
 *     '''
 *     Set a user-defined warning callback.  It should take in a string message
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_447set_warning_callback, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_warning_callback, __pyx_t_6) < 0) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/cymj.pyx":93
 * 
 * 
 * def get_warning_callback():             # <<<<<<<<<<<<<<
 *     '''
 *     Returns the user-defined warning callback, for use in e.g. a context
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_449get_warning_callback, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_warning_callback, __pyx_t_6) < 0) __PYX_ERR(7, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/cymj.pyx":102
 * 
 * 
 * class wrap_mujoco_warning(object):             # <<<<<<<<<<<<<<
 *     '''
 *     Class to wrap capturing exceptions raised during warning callbacks.
 */
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__695); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_tuple__695, __pyx_n_s_wrap_mujoco_warning, __pyx_n_s_wrap_mujoco_warning, (PyObject *) NULL, __pyx_n_s_mujoco_py_cymj, __pyx_kp_s_Class_to_wrap_capturing_excepti); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "mujoco_py/cymj.pyx":109
 *             mj_somefunc()
 *     '''
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         py_warning_exception = None
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_19wrap_mujoco_warning_1__enter__, 0, __pyx_n_s_wrap_mujoco_warning___enter, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__697)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_enter, __pyx_t_2) < 0) __PYX_ERR(7, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/cymj.pyx":112
 *         global py_warning_exception
 *         py_warning_exception = None
 *     def __exit__(self, type, value, traceback):             # <<<<<<<<<<<<<<
 *         global py_warning_exception
 *         if py_warning_exception is not None:
 */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_19wrap_mujoco_warning_3__exit__, 0, __pyx_n_s_wrap_mujoco_warning___exit, NULL, __pyx_n_s_mujoco_py_cymj, __pyx_d, ((PyObject *)__pyx_codeobj__699)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_exit, __pyx_t_2) < 0) __PYX_ERR(7, 112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "mujoco_py/cymj.pyx":102
 * 
 * 
 * class wrap_mujoco_warning(object):             # <<<<<<<<<<<<<<
 *     '''
 *     Class to wrap capturing exceptions raised during warning callbacks.
 */
  __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_wrap_mujoco_warning, __pyx_tuple__695, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_wrap_mujoco_warning, __pyx_t_2) < 0) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/cymj.pyx":118
 * 
 * 
 * def load_model_from_path(str path):             # <<<<<<<<<<<<<<
 *     """Loads model from path."""
 *     cdef char errstr[300]
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_451load_model_from_path, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_load_model_from_path, __pyx_t_6) < 0) __PYX_ERR(7, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/cymj.pyx":134
 *     return WrapMjModel(model)
 * 
 * def load_model_from_xml(str xml_str):             # <<<<<<<<<<<<<<
 *     """
 *     Loads and returns a PyMjModel model from a string containing XML markup.
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_453load_model_from_xml, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_load_model_from_xml, __pyx_t_6) < 0) __PYX_ERR(7, 134, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/cymj.pyx":151
 * 
 * 
 * def load_model_from_mjb(bytes mjb_bytes):             # <<<<<<<<<<<<<<
 *     """
 *     Loads and returns a PyMjModel model from bytes encoded MJB.
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9mujoco_py_4cymj_455load_model_from_mjb, NULL, __pyx_n_s_mujoco_py_cymj); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_load_model_from_mjb, __pyx_t_6) < 0) __PYX_ERR(7, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "mujoco_py/cymj.pyx":1
 * # cython: language_level=3             # <<<<<<<<<<<<<<
 * import copy
 * import logging
 */
  __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_6) < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "View.MemoryView":207
 *         info.obj = self
 * 
 *     __pyx_getbuffer = capsule(<void *> &__pyx_array_getbuffer, "getbuffer(obj, view, flags)")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(array self):
 */
  __pyx_t_6 = __pyx_capsule_create(((void *)(&__pyx_array_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem((PyObject *)__pyx_array_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_6) < 0) __PYX_ERR(4, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  PyType_Modified(__pyx_array_type);

  /* "View.MemoryView":284
 *         return self.name
 * 
 * cdef generic = Enum("<strided and direct or indirect>")             # <<<<<<<<<<<<<<
 * cdef strided = Enum("<strided and direct>") # default
 * cdef indirect = Enum("<strided and indirect>")
 */
  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__706, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XGOTREF(generic);
  __Pyx_DECREF_SET(generic, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;

  /* "View.MemoryView":285
 * 
 * cdef generic = Enum("<strided and direct or indirect>")
 * cdef strided = Enum("<strided and direct>") # default             # <<<<<<<<<<<<<<
 * cdef indirect = Enum("<strided and indirect>")
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__707, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XGOTREF(strided);
  __Pyx_DECREF_SET(strided, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;

  /* "View.MemoryView":286
 * cdef generic = Enum("<strided and direct or indirect>")
 * cdef strided = Enum("<strided and direct>") # default
 * cdef indirect = Enum("<strided and indirect>")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__708, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XGOTREF(indirect);
  __Pyx_DECREF_SET(indirect, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;

  /* "View.MemoryView":289
 * 
 * 
 * cdef contiguous = Enum("<contiguous and direct>")             # <<<<<<<<<<<<<<
 * cdef indirect_contiguous = Enum("<contiguous and indirect>")
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__709, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XGOTREF(contiguous);
  __Pyx_DECREF_SET(contiguous, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;

  /* "View.MemoryView":290
 * 
 * cdef contiguous = Enum("<contiguous and direct>")
 * cdef indirect_contiguous = Enum("<contiguous and indirect>")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__710, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XGOTREF(indirect_contiguous);
  __Pyx_DECREF_SET(indirect_contiguous, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;

  /* "View.MemoryView":314
 * 
 * DEF THREAD_LOCKS_PREALLOCATED = 8
 * cdef int __pyx_memoryview_thread_locks_used = 0             # <<<<<<<<<<<<<<
 * cdef PyThread_type_lock[THREAD_LOCKS_PREALLOCATED] __pyx_memoryview_thread_locks = [
 *     PyThread_allocate_lock(),
 */
  __pyx_memoryview_thread_locks_used = 0;

  /* "View.MemoryView":315
 * DEF THREAD_LOCKS_PREALLOCATED = 8
 * cdef int __pyx_memoryview_thread_locks_used = 0
 * cdef PyThread_type_lock[THREAD_LOCKS_PREALLOCATED] __pyx_memoryview_thread_locks = [             # <<<<<<<<<<<<<<
 *     PyThread_allocate_lock(),
 *     PyThread_allocate_lock(),
 */
  __pyx_t_13[0] = PyThread_allocate_lock();
  __pyx_t_13[1] = PyThread_allocate_lock();
  __pyx_t_13[2] = PyThread_allocate_lock();
  __pyx_t_13[3] = PyThread_allocate_lock();
  __pyx_t_13[4] = PyThread_allocate_lock();
  __pyx_t_13[5] = PyThread_allocate_lock();
  __pyx_t_13[6] = PyThread_allocate_lock();
  __pyx_t_13[7] = PyThread_allocate_lock();
  memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_13, sizeof(__pyx_memoryview_thread_locks[0]) * (8));

  /* "View.MemoryView":537
 *         info.obj = self
 * 
 *     __pyx_getbuffer = capsule(<void *> &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_6 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem((PyObject *)__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_6) < 0) __PYX_ERR(4, 537, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  PyType_Modified(__pyx_memoryview_type);

  /* "View.MemoryView":983
 *         return self.from_object
 * 
 *     __pyx_getbuffer = capsule(<void *> &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_6 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem((PyObject *)__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_6) < 0) __PYX_ERR(4, 983, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  PyType_Modified(__pyx_memoryviewslice_type);

  /* "(tree fragment)":1
 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     if __pyx_checksum != 0xb068931:
 *         from pickle import PickleError as __pyx_PickleError
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_n_s_View_MemoryView); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Enum, __pyx_t_6) < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "BufferFormatFromTypeInfo":1449
 * 
 * @cname('__pyx_format_from_typeinfo')
 * cdef bytes format_from_typeinfo(__Pyx_TypeInfo *type):             # <<<<<<<<<<<<<<
 *     cdef __Pyx_StructField *field
 *     cdef __pyx_typeinfo_string fmt
 */

  /*--- Wrapped vars code ---*/

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  if (__pyx_m) {
    if (__pyx_d) {
      __Pyx_AddTraceback("init mujoco_py.cymj", 0, __pyx_lineno, __pyx_filename);
    }
    Py_DECREF(__pyx_m); __pyx_m = 0;
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init mujoco_py.cymj");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  return (__pyx_m != NULL) ? 0 : -1;
  #elif PY_MAJOR_VERSION >= 3
  return __pyx_m;
  #else
  return;
  #endif
}

/* --- Runtime support code --- */
/* Refnanny */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule((char *)modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
    if (unlikely(!result)) {
        PyErr_Format(PyExc_NameError,
#if PY_MAJOR_VERSION >= 3
            "name '%U' is not defined", name);
#else
            "name '%.200s' is not defined", PyString_AS_STRING(name));
#endif
    }
    return result;
}

/* RaiseArgTupleInvalid */
static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;
    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

/* KeywordStringCheck */
static int __Pyx_CheckKeywordStrings(
    PyObject *kwdict,
    const char* function_name,
    int kw_allowed)
{
    PyObject* key = 0;
    Py_ssize_t pos = 0;
#if CYTHON_COMPILING_IN_PYPY
    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
        goto invalid_keyword;
    return 1;
#else
    while (PyDict_Next(kwdict, &pos, &key, 0)) {
        #if PY_MAJOR_VERSION < 3
        if (unlikely(!PyString_Check(key)))
        #endif
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
    }
    if ((!kw_allowed) && unlikely(key))
        goto invalid_keyword;
    return 1;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    return 0;
#endif
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

/* PyErrFetchRestore */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
}
#endif

/* WriteUnraisableException */
static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
                                  int full_traceback, CYTHON_UNUSED int nogil) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_PyThreadState_declare
#ifdef WITH_THREAD
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
#ifdef _MSC_VER
    else state = (PyGILState_STATE)-1;
#endif
#endif
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    if (full_traceback) {
        Py_XINCREF(old_exc);
        Py_XINCREF(old_val);
        Py_XINCREF(old_tb);
        __Pyx_ErrRestore(old_exc, old_val, old_tb);
        PyErr_PrintEx(1);
    }
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
#ifdef WITH_THREAD
    if (nogil)
        PyGILState_Release(state);
#endif
}

/* PyObjectCall */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = func->ob_type->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = (*call)(func, arg, kw);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* RaiseException */
#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
                        CYTHON_UNUSED PyObject *cause) {
    __Pyx_PyThreadState_declare
    Py_XINCREF(type);
    if (!value || value == Py_None)
        value = NULL;
    else
        Py_INCREF(value);
    if (!tb || tb == Py_None)
        tb = NULL;
    else {
        Py_INCREF(tb);
        if (!PyTraceBack_Check(tb)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: arg 3 must be a traceback or None");
            goto raise_error;
        }
    }
    if (PyType_Check(type)) {
#if CYTHON_COMPILING_IN_PYPY
        if (!value) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#endif
        PyErr_NormalizeException(&type, &value, &tb);
    } else {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        value = type;
        type = (PyObject*) Py_TYPE(type);
        Py_INCREF(type);
        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: exception class must be a subclass of BaseException");
            goto raise_error;
        }
    }
    __Pyx_PyThreadState_assign
    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}
#else
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    PyObject* owned_instance = NULL;
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;
    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (PyExceptionClass_Check(type)) {
        PyObject *instance_class = NULL;
        if (value && PyExceptionInstance_Check(value)) {
            instance_class = (PyObject*) Py_TYPE(value);
            if (instance_class != type) {
                int is_subclass = PyObject_IsSubclass(instance_class, type);
                if (!is_subclass) {
                    instance_class = NULL;
                } else if (unlikely(is_subclass == -1)) {
                    goto bad;
                } else {
                    type = instance_class;
                }
            }
        }
        if (!instance_class) {
            PyObject *args;
            if (!value)
                args = PyTuple_New(0);
            else if (PyTuple_Check(value)) {
                Py_INCREF(value);
                args = value;
            } else
                args = PyTuple_Pack(1, value);
            if (!args)
                goto bad;
            owned_instance = PyObject_Call(type, args, NULL);
            Py_DECREF(args);
            if (!owned_instance)
                goto bad;
            value = owned_instance;
            if (!PyExceptionInstance_Check(value)) {
                PyErr_Format(PyExc_TypeError,
                             "calling %R should have returned an instance of "
                             "BaseException, not %R",
                             type, Py_TYPE(value));
                goto bad;
            }
        }
    } else {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }
    if (cause) {
        PyObject *fixed_cause;
        if (cause == Py_None) {
            fixed_cause = NULL;
        } else if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        } else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        } else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        PyException_SetCause(value, fixed_cause);
    }
    PyErr_SetObject(type, value);
    if (tb) {
#if CYTHON_COMPILING_IN_PYPY
        PyObject *tmp_type, *tmp_value, *tmp_tb;
        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
        Py_INCREF(tb);
        PyErr_Restore(tmp_type, tmp_value, tb);
        Py_XDECREF(tmp_tb);
#else
        PyThreadState *tstate = __Pyx_PyThreadState_Current;
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}
#endif

/* None */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

/* UnpackUnboundCMethod */
static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
    PyObject *method;
    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
    if (unlikely(!method))
        return -1;
    target->method = method;
#if CYTHON_COMPILING_IN_CPYTHON
    #if PY_MAJOR_VERSION >= 3
    if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
    #endif
    {
        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
        target->func = descr->d_method->ml_meth;
        target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
    }
#endif
    return 0;
}

/* CallUnboundCMethod0 */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_ASSUME_SAFE_MACROS
    args = PyTuple_New(1);
    if (unlikely(!args)) goto bad;
    Py_INCREF(self);
    PyTuple_SET_ITEM(args, 0, self);
#else
    args = PyTuple_Pack(1, self);
    if (unlikely(!args)) goto bad;
#endif
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    Py_DECREF(args);
bad:
    return result;
}

/* py_dict_values */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
    if (PY_MAJOR_VERSION >= 3)
        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_values, d);
    else
        return PyDict_Values(d);
}

/* decode_c_string */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    Py_ssize_t length;
    if (unlikely((start < 0) | (stop < 0))) {
        size_t slen = strlen(cstring);
        if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
            PyErr_SetString(PyExc_OverflowError,
                            "c-string too long to convert to Python");
            return NULL;
        }
        length = (Py_ssize_t) slen;
        if (start < 0) {
            start += length;
            if (start < 0)
                start = 0;
        }
        if (stop < 0)
            stop += length;
    }
    length = stop - start;
    if (unlikely(length <= 0))
        return PyUnicode_FromUnicode(NULL, 0);
    cstring += start;
    if (decode_func) {
        return decode_func(cstring, length, errors);
    } else {
        return PyUnicode_Decode(cstring, length, encoding, errors);
    }
}

/* GetModuleGlobalName */
static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
    PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
    result = PyDict_GetItem(__pyx_d, name);
    if (likely(result)) {
        Py_INCREF(result);
    } else {
#else
    result = PyObject_GetItem(__pyx_d, name);
    if (!result) {
        PyErr_Clear();
#endif
        result = __Pyx_GetBuiltinName(name);
    }
    return result;
}

/* PyCFunctionFastCall */
  #if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
    PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
    PyCFunction meth = PyCFunction_GET_FUNCTION(func);
    PyObject *self = PyCFunction_GET_SELF(func);
    int flags = PyCFunction_GET_FLAGS(func);
    assert(PyCFunction_Check(func));
    assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
    assert(nargs >= 0);
    assert(nargs == 0 || args != NULL);
    /* _PyCFunction_FastCallDict() must not be called with an exception set,
       because it may clear it (directly or indirectly) and so the
       caller loses its exception */
    assert(!PyErr_Occurred());
    if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
        return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
    } else {
        return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
    }
}
#endif

/* PyFunctionFastCall */
  #if CYTHON_FAST_PYCALL
#include "frameobject.h"
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
                                               PyObject *globals) {
    PyFrameObject *f;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject **fastlocals;
    Py_ssize_t i;
    PyObject *result;
    assert(globals != NULL);
    /* XXX Perhaps we should create a specialized
       PyFrame_New() that doesn't take locals, but does
       take builtins without sanity checking them.
       */
    assert(tstate != NULL);
    f = PyFrame_New(tstate, co, globals, NULL);
    if (f == NULL) {
        return NULL;
    }
    fastlocals = f->f_localsplus;
    for (i = 0; i < na; i++) {
        Py_INCREF(*args);
        fastlocals[i] = *args++;
    }
    result = PyEval_EvalFrameEx(f,0);
    ++tstate->recursion_depth;
    Py_DECREF(f);
    --tstate->recursion_depth;
    return result;
}
#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) {
    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
    PyObject *globals = PyFunction_GET_GLOBALS(func);
    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
    PyObject *closure;
#if PY_MAJOR_VERSION >= 3
    PyObject *kwdefs;
#endif
    PyObject *kwtuple, **k;
    PyObject **d;
    Py_ssize_t nd;
    Py_ssize_t nk;
    PyObject *result;
    assert(kwargs == NULL || PyDict_Check(kwargs));
    nk = kwargs ? PyDict_Size(kwargs) : 0;
    if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
        return NULL;
    }
    if (
#if PY_MAJOR_VERSION >= 3
            co->co_kwonlyargcount == 0 &&
#endif
            likely(kwargs == NULL || nk == 0) &&
            co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
        if (argdefs == NULL && co->co_argcount == nargs) {
            result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
            goto done;
        }
        else if (nargs == 0 && argdefs != NULL
                 && co->co_argcount == Py_SIZE(argdefs)) {
            /* function called with no arguments, but all parameters have
               a default value: use default values as arguments .*/
            args = &PyTuple_GET_ITEM(argdefs, 0);
            result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
            goto done;
        }
    }
    if (kwargs != NULL) {
        Py_ssize_t pos, i;
        kwtuple = PyTuple_New(2 * nk);
        if (kwtuple == NULL) {
            result = NULL;
            goto done;
        }
        k = &PyTuple_GET_ITEM(kwtuple, 0);
        pos = i = 0;
        while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
            Py_INCREF(k[i]);
            Py_INCREF(k[i+1]);
            i += 2;
        }
        nk = i / 2;
    }
    else {
        kwtuple = NULL;
        k = NULL;
    }
    closure = PyFunction_GET_CLOSURE(func);
#if PY_MAJOR_VERSION >= 3
    kwdefs = PyFunction_GET_KW_DEFAULTS(func);
#endif
    if (argdefs != NULL) {
        d = &PyTuple_GET_ITEM(argdefs, 0);
        nd = Py_SIZE(argdefs);
    }
    else {
        d = NULL;
        nd = 0;
    }
#if PY_MAJOR_VERSION >= 3
    result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
                               args, nargs,
                               k, (int)nk,
                               d, (int)nd, kwdefs, closure);
#else
    result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
                               args, nargs,
                               k, (int)nk,
                               d, (int)nd, closure);
#endif
    Py_XDECREF(kwtuple);
done:
    Py_LeaveRecursiveCall();
    return result;
}
#endif
#endif

/* PyObjectCallMethO */
  #if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = PyCFunction_GET_FUNCTION(func);
    self = PyCFunction_GET_SELF(func);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = cfunc(self, arg);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCallOneArg */
  #if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_New(1);
    if (unlikely(!args)) return NULL;
    Py_INCREF(arg);
    PyTuple_SET_ITEM(args, 0, arg);
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
#if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCall(func, &arg, 1);
    }
#endif
    if (likely(PyCFunction_Check(func))) {
        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
            return __Pyx_PyObject_CallMethO(func, arg);
#if CYTHON_FAST_PYCCALL
        } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {
            return __Pyx_PyCFunction_FastCall(func, &arg, 1);
#endif
        }
    }
    return __Pyx__PyObject_CallOneArg(func, arg);
}
#else
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_Pack(1, arg);
    if (unlikely(!args)) return NULL;
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
#endif

/* PyObjectCallNoArg */
  #if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCall(func, NULL, 0);
    }
#endif
#ifdef __Pyx_CyFunction_USED
    if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
#else
    if (likely(PyCFunction_Check(func))) {
#endif
        if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
            return __Pyx_PyObject_CallMethO(func, NULL);
        }
    }
    return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
}
#endif

/* SaveResetException */
    #if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    #if PY_VERSION_HEX >= 0x030700A2
    *type = tstate->exc_state.exc_type;
    *value = tstate->exc_state.exc_value;
    *tb = tstate->exc_state.exc_traceback;
    #else
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    #endif
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if PY_VERSION_HEX >= 0x030700A2
    tmp_type = tstate->exc_state.exc_type;
    tmp_value = tstate->exc_state.exc_value;
    tmp_tb = tstate->exc_state.exc_traceback;
    tstate->exc_state.exc_type = type;
    tstate->exc_state.exc_value = value;
    tstate->exc_state.exc_traceback = tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}
#endif

/* GetException */
    #if CYTHON_FAST_THREAD_STATE
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
#endif
    PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_FAST_THREAD_STATE
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    #if PY_MAJOR_VERSION >= 3
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
    #endif
    Py_XINCREF(local_tb);
    Py_XINCREF(local_type);
    Py_XINCREF(local_value);
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
    #if PY_VERSION_HEX >= 0x030700A2
    tmp_type = tstate->exc_state.exc_type;
    tmp_value = tstate->exc_state.exc_value;
    tmp_tb = tstate->exc_state.exc_traceback;
    tstate->exc_state.exc_type = local_type;
    tstate->exc_state.exc_value = local_value;
    tstate->exc_state.exc_traceback = local_tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
}

/* PyIntBinop */
      #if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long x;
        long a = PyInt_AS_LONG(op1);
            x = (long)((unsigned long)a + b);
            if (likely((x^a) >= 0 || (x^b) >= 0))
                return PyInt_FromLong(x);
            return PyLong_Type.tp_as_number->nb_add(op1, op2);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a, x;
#ifdef HAVE_LONG_LONG
        const PY_LONG_LONG llb = intval;
        PY_LONG_LONG lla, llx;
#endif
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        if (likely(__Pyx_sst_abs(size) <= 1)) {
            a = likely(size) ? digits[0] : 0;
            if (size == -1) a = -a;
        } else {
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
            }
        }
                x = a + b;
            return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
        long_long:
                llx = lla + llb;
            return PyLong_FromLongLong(llx);
#endif
        
        
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = PyFloat_AS_DOUBLE(op1);
            double result;
            PyFPE_START_PROTECT("add", return NULL)
            result = ((double)a) + (double)b;
            PyFPE_END_PROTECT(result)
            return PyFloat_FromDouble(result);
    }
    return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
}
#endif

/* PyIntBinop */
      #if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
    if (op1 == op2) {
        Py_RETURN_TRUE;
    }
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long a = PyInt_AS_LONG(op1);
        if (a == b) {
            Py_RETURN_TRUE;
        } else {
            Py_RETURN_FALSE;
        }
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a;
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        if (likely(__Pyx_sst_abs(size) <= 1)) {
            a = likely(size) ? digits[0] : 0;
            if (size == -1) a = -a;
        } else {
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    }
                #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
                default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
                #else
                default: Py_RETURN_FALSE;
                #endif
            }
        }
            if (a == b) {
                Py_RETURN_TRUE;
            } else {
                Py_RETURN_FALSE;
            }
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = PyFloat_AS_DOUBLE(op1);
            if ((double)a == (double)b) {
                Py_RETURN_TRUE;
            } else {
                Py_RETURN_FALSE;
            }
    }
    return PyObject_RichCompare(op1, op2, Py_EQ);
}
#endif

/* RaiseTooManyValuesToUnpack */
      static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}

/* RaiseNeedMoreValuesToUnpack */
      static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
                 index, (index == 1) ? "" : "s");
}

/* RaiseNoneIterError */
      static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

/* SliceObject */
      static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
        Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp;
#if PY_MAJOR_VERSION < 3
    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
    if (likely(ms && ms->sq_slice)) {
        if (!has_cstart) {
            if (_py_start && (*_py_start != Py_None)) {
                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstart = 0;
        }
        if (!has_cstop) {
            if (_py_stop && (*_py_stop != Py_None)) {
                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstop = PY_SSIZE_T_MAX;
        }
        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
            Py_ssize_t l = ms->sq_length(obj);
            if (likely(l >= 0)) {
                if (cstop < 0) {
                    cstop += l;
                    if (cstop < 0) cstop = 0;
                }
                if (cstart < 0) {
                    cstart += l;
                    if (cstart < 0) cstart = 0;
                }
            } else {
                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                    goto bad;
                PyErr_Clear();
            }
        }
        return ms->sq_slice(obj, cstart, cstop);
    }
#endif
    mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_subscript))
#endif
    {
        PyObject* result;
        PyObject *py_slice, *py_start, *py_stop;
        if (_py_slice) {
            py_slice = *_py_slice;
        } else {
            PyObject* owned_start = NULL;
            PyObject* owned_stop = NULL;
            if (_py_start) {
                py_start = *_py_start;
            } else {
                if (has_cstart) {
                    owned_start = py_start = PyInt_FromSsize_t(cstart);
                    if (unlikely(!py_start)) goto bad;
                } else
                    py_start = Py_None;
            }
            if (_py_stop) {
                py_stop = *_py_stop;
            } else {
                if (has_cstop) {
                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
                    if (unlikely(!py_stop)) {
                        Py_XDECREF(owned_start);
                        goto bad;
                    }
                } else
                    py_stop = Py_None;
            }
            py_slice = PySlice_New(py_start, py_stop, Py_None);
            Py_XDECREF(owned_start);
            Py_XDECREF(owned_stop);
            if (unlikely(!py_slice)) goto bad;
        }
#if CYTHON_USE_TYPE_SLOTS
        result = mp->mp_subscript(obj, py_slice);
#else
        result = PyObject_GetItem(obj, py_slice);
#endif
        if (!_py_slice) {
            Py_DECREF(py_slice);
        }
        return result;
    }
    PyErr_Format(PyExc_TypeError,
        "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
bad:
    return NULL;
}

/* RaiseDoubleKeywords */
      static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AsString(kw_name));
        #endif
}

/* ParseKeywords */
      static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;
    while (PyDict_Next(kwds, &pos, &key, &value)) {
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
            continue;
        }
        name = first_kw_arg;
        #if PY_MAJOR_VERSION < 3
        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
            while (*name) {
                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
                        && _PyString_Eq(**name, key)) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    if ((**argname == key) || (
                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
                             && _PyString_Eq(**argname, key))) {
                        goto arg_passed_twice;
                    }
                    argname++;
                }
            }
        } else
        #endif
        if (likely(PyUnicode_Check(key))) {
            while (*name) {
                int cmp = (**name == key) ? 0 :
                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
                #endif
                    PyUnicode_Compare(**name, key);
                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                if (cmp == 0) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    int cmp = (**argname == key) ? 0 :
                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
                    #endif
                        PyUnicode_Compare(**argname, key);
                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                    if (cmp == 0) goto arg_passed_twice;
                    argname++;
                }
            }
        } else
            goto invalid_keyword_type;
        if (kwds2) {
            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
        } else {
            goto invalid_keyword;
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

/* ArgTypeTest */
      static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    else if (exact) {
        #if PY_MAJOR_VERSION == 2
        if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
        #endif
    }
    else {
        if (likely(__Pyx_TypeCheck(obj, type))) return 1;
    }
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
        name, type->tp_name, Py_TYPE(obj)->tp_name);
    return 0;
}

/* IsLittleEndian */
      static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
  union {
    uint32_t u32;
    uint8_t u8[4];
  } S;
  S.u32 = 0x01020304;
  return S.u8[0] == 4;
}

/* BufferFormatCheck */
      static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
                              __Pyx_BufFmt_StackElem* stack,
                              __Pyx_TypeInfo* type) {
  stack[0].field = &ctx->root;
  stack[0].parent_offset = 0;
  ctx->root.type = type;
  ctx->root.name = "buffer dtype";
  ctx->root.offset = 0;
  ctx->head = stack;
  ctx->head->field = &ctx->root;
  ctx->fmt_offset = 0;
  ctx->head->parent_offset = 0;
  ctx->new_packmode = '@';
  ctx->enc_packmode = '@';
  ctx->new_count = 1;
  ctx->enc_count = 0;
  ctx->enc_type = 0;
  ctx->is_complex = 0;
  ctx->is_valid_array = 0;
  ctx->struct_alignment = 0;
  while (type->typegroup == 'S') {
    ++ctx->head;
    ctx->head->field = type->fields;
    ctx->head->parent_offset = 0;
    type = type->fields->type;
  }
}
static int __Pyx_BufFmt_ParseNumber(const char** ts) {
    int count;
    const char* t = *ts;
    if (*t < '0' || *t > '9') {
      return -1;
    } else {
        count = *t++ - '0';
        while (*t >= '0' && *t < '9') {
            count *= 10;
            count += *t++ - '0';
        }
    }
    *ts = t;
    return count;
}
static int __Pyx_BufFmt_ExpectNumber(const char **ts) {
    int number = __Pyx_BufFmt_ParseNumber(ts);
    if (number == -1)
        PyErr_Format(PyExc_ValueError,\
                     "Does not understand character buffer dtype format string ('%c')", **ts);
    return number;
}
static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) {
  PyErr_Format(PyExc_ValueError,
               "Unexpected format string character: '%c'", ch);
}
static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) {
  switch (ch) {
    case 'c': return "'char'";
    case 'b': return "'signed char'";
    case 'B': return "'unsigned char'";
    case 'h': return "'short'";
    case 'H': return "'unsigned short'";
    case 'i': return "'int'";
    case 'I': return "'unsigned int'";
    case 'l': return "'long'";
    case 'L': return "'unsigned long'";
    case 'q': return "'long long'";
    case 'Q': return "'unsigned long long'";
    case 'f': return (is_complex ? "'complex float'" : "'float'");
    case 'd': return (is_complex ? "'complex double'" : "'double'");
    case 'g': return (is_complex ? "'complex long double'" : "'long double'");
    case 'T': return "a struct";
    case 'O': return "Python object";
    case 'P': return "a pointer";
    case 's': case 'p': return "a string";
    case 0: return "end";
    default: return "unparseable format string";
  }
}
static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) {
  switch (ch) {
    case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
    case 'h': case 'H': return 2;
    case 'i': case 'I': case 'l': case 'L': return 4;
    case 'q': case 'Q': return 8;
    case 'f': return (is_complex ? 8 : 4);
    case 'd': return (is_complex ? 16 : 8);
    case 'g': {
      PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g')..");
      return 0;
    }
    case 'O': case 'P': return sizeof(void*);
    default:
      __Pyx_BufFmt_RaiseUnexpectedChar(ch);
      return 0;
    }
}
static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) {
  switch (ch) {
    case 'c': case 'b': case 'B': case 's': case 'p': return 1;
    case 'h': case 'H': return sizeof(short);
    case 'i': case 'I': return sizeof(int);
    case 'l': case 'L': return sizeof(long);
    #ifdef HAVE_LONG_LONG
    case 'q': case 'Q': return sizeof(PY_LONG_LONG);
    #endif
    case 'f': return sizeof(float) * (is_complex ? 2 : 1);
    case 'd': return sizeof(double) * (is_complex ? 2 : 1);
    case 'g': return sizeof(long double) * (is_complex ? 2 : 1);
    case 'O': case 'P': return sizeof(void*);
    default: {
      __Pyx_BufFmt_RaiseUnexpectedChar(ch);
      return 0;
    }
  }
}
typedef struct { char c; short x; } __Pyx_st_short;
typedef struct { char c; int x; } __Pyx_st_int;
typedef struct { char c; long x; } __Pyx_st_long;
typedef struct { char c; float x; } __Pyx_st_float;
typedef struct { char c; double x; } __Pyx_st_double;
typedef struct { char c; long double x; } __Pyx_st_longdouble;
typedef struct { char c; void *x; } __Pyx_st_void_p;
#ifdef HAVE_LONG_LONG
typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong;
#endif
static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED int is_complex) {
  switch (ch) {
    case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
    case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short);
    case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int);
    case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long);
#ifdef HAVE_LONG_LONG
    case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG);
#endif
    case 'f': return sizeof(__Pyx_st_float) - sizeof(float);
    case 'd': return sizeof(__Pyx_st_double) - sizeof(double);
    case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double);
    case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*);
    default:
      __Pyx_BufFmt_RaiseUnexpectedChar(ch);
      return 0;
    }
}
/* These are for computing the padding at the end of the struct to align
   on the first member of the struct. This will probably the same as above,
   but we don't have any guarantees.
 */
typedef struct { short x; char c; } __Pyx_pad_short;
typedef struct { int x; char c; } __Pyx_pad_int;
typedef struct { long x; char c; } __Pyx_pad_long;
typedef struct { float x; char c; } __Pyx_pad_float;
typedef struct { double x; char c; } __Pyx_pad_double;
typedef struct { long double x; char c; } __Pyx_pad_longdouble;
typedef struct { void *x; char c; } __Pyx_pad_void_p;
#ifdef HAVE_LONG_LONG
typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong;
#endif
static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int is_complex) {
  switch (ch) {
    case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
    case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short);
    case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int);
    case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long);
#ifdef HAVE_LONG_LONG
    case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG);
#endif
    case 'f': return sizeof(__Pyx_pad_float) - sizeof(float);
    case 'd': return sizeof(__Pyx_pad_double) - sizeof(double);
    case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double);
    case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*);
    default:
      __Pyx_BufFmt_RaiseUnexpectedChar(ch);
      return 0;
    }
}
static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) {
  switch (ch) {
    case 'c':
        return 'H';
    case 'b': case 'h': case 'i':
    case 'l': case 'q': case 's': case 'p':
        return 'I';
    case 'B': case 'H': case 'I': case 'L': case 'Q':
        return 'U';
    case 'f': case 'd': case 'g':
        return (is_complex ? 'C' : 'R');
    case 'O':
        return 'O';
    case 'P':
        return 'P';
    default: {
      __Pyx_BufFmt_RaiseUnexpectedChar(ch);
      return 0;
    }
  }
}
static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) {
  if (ctx->head == NULL || ctx->head->field == &ctx->root) {
    const char* expected;
    const char* quote;
    if (ctx->head == NULL) {
      expected = "end";
      quote = "";
    } else {
      expected = ctx->head->field->type->name;
      quote = "'";
    }
    PyErr_Format(PyExc_ValueError,
                 "Buffer dtype mismatch, expected %s%s%s but got %s",
                 quote, expected, quote,
                 __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex));
  } else {
    __Pyx_StructField* field = ctx->head->field;
    __Pyx_StructField* parent = (ctx->head - 1)->field;
    PyErr_Format(PyExc_ValueError,
                 "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'",
                 field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex),
                 parent->type->name, field->name);
  }
}
static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) {
  char group;
  size_t size, offset, arraysize = 1;
  if (ctx->enc_type == 0) return 0;
  if (ctx->head->field->type->arraysize[0]) {
    int i, ndim = 0;
    if (ctx->enc_type == 's' || ctx->enc_type == 'p') {
        ctx->is_valid_array = ctx->head->field->type->ndim == 1;
        ndim = 1;
        if (ctx->enc_count != ctx->head->field->type->arraysize[0]) {
            PyErr_Format(PyExc_ValueError,
                         "Expected a dimension of size %zu, got %zu",
                         ctx->head->field->type->arraysize[0], ctx->enc_count);
            return -1;
        }
    }
    if (!ctx->is_valid_array) {
      PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d",
                   ctx->head->field->type->ndim, ndim);
      return -1;
    }
    for (i = 0; i < ctx->head->field->type->ndim; i++) {
      arraysize *= ctx->head->field->type->arraysize[i];
    }
    ctx->is_valid_array = 0;
    ctx->enc_count = 1;
  }
  group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex);
  do {
    __Pyx_StructField* field = ctx->head->field;
    __Pyx_TypeInfo* type = field->type;
    if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') {
      size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex);
    } else {
      size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex);
    }
    if (ctx->enc_packmode == '@') {
      size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex);
      size_t align_mod_offset;
      if (align_at == 0) return -1;
      align_mod_offset = ctx->fmt_offset % align_at;
      if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset;
      if (ctx->struct_alignment == 0)
          ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type,
                                                                 ctx->is_complex);
    }
    if (type->size != size || type->typegroup != group) {
      if (type->typegroup == 'C' && type->fields != NULL) {
        size_t parent_offset = ctx->head->parent_offset + field->offset;
        ++ctx->head;
        ctx->head->field = type->fields;
        ctx->head->parent_offset = parent_offset;
        continue;
      }
      if ((type->typegroup == 'H' || group == 'H') && type->size == size) {
      } else {
          __Pyx_BufFmt_RaiseExpected(ctx);
          return -1;
      }
    }
    offset = ctx->head->parent_offset + field->offset;
    if (ctx->fmt_offset != offset) {
      PyErr_Format(PyExc_ValueError,
                   "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected",
                   (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset);
      return -1;
    }
    ctx->fmt_offset += size;
    if (arraysize)
      ctx->fmt_offset += (arraysize - 1) * size;
    --ctx->enc_count;
    while (1) {
      if (field == &ctx->root) {
        ctx->head = NULL;
        if (ctx->enc_count != 0) {
          __Pyx_BufFmt_RaiseExpected(ctx);
          return -1;
        }
        break;
      }
      ctx->head->field = ++field;
      if (field->type == NULL) {
        --ctx->head;
        field = ctx->head->field;
        continue;
      } else if (field->type->typegroup == 'S') {
        size_t parent_offset = ctx->head->parent_offset + field->offset;
        if (field->type->fields->type == NULL) continue;
        field = field->type->fields;
        ++ctx->head;
        ctx->head->field = field;
        ctx->head->parent_offset = parent_offset;
        break;
      } else {
        break;
      }
    }
  } while (ctx->enc_count);
  ctx->enc_type = 0;
  ctx->is_complex = 0;
  return 0;
}
static PyObject *
__pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp)
{
    const char *ts = *tsp;
    int i = 0, number;
    int ndim = ctx->head->field->type->ndim;
;
    ++ts;
    if (ctx->new_count != 1) {
        PyErr_SetString(PyExc_ValueError,
                        "Cannot handle repeated arrays in format string");
        return NULL;
    }
    if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
    while (*ts && *ts != ')') {
        switch (*ts) {
            case ' ': case '\f': case '\r': case '\n': case '\t': case '\v':  continue;
            default:  break;
        }
        number = __Pyx_BufFmt_ExpectNumber(&ts);
        if (number == -1) return NULL;
        if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i])
            return PyErr_Format(PyExc_ValueError,
                        "Expected a dimension of size %zu, got %d",
                        ctx->head->field->type->arraysize[i], number);
        if (*ts != ',' && *ts != ')')
            return PyErr_Format(PyExc_ValueError,
                                "Expected a comma in format string, got '%c'", *ts);
        if (*ts == ',') ts++;
        i++;
    }
    if (i != ndim)
        return PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d",
                            ctx->head->field->type->ndim, i);
    if (!*ts) {
        PyErr_SetString(PyExc_ValueError,
                        "Unexpected end of format string, expected ')'");
        return NULL;
    }
    ctx->is_valid_array = 1;
    ctx->new_count = 1;
    *tsp = ++ts;
    return Py_None;
}
static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) {
  int got_Z = 0;
  while (1) {
    switch(*ts) {
      case 0:
        if (ctx->enc_type != 0 && ctx->head == NULL) {
          __Pyx_BufFmt_RaiseExpected(ctx);
          return NULL;
        }
        if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
        if (ctx->head != NULL) {
          __Pyx_BufFmt_RaiseExpected(ctx);
          return NULL;
        }
        return ts;
      case ' ':
      case '\r':
      case '\n':
        ++ts;
        break;
      case '<':
        if (!__Pyx_Is_Little_Endian()) {
          PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler");
          return NULL;
        }
        ctx->new_packmode = '=';
        ++ts;
        break;
      case '>':
      case '!':
        if (__Pyx_Is_Little_Endian()) {
          PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler");
          return NULL;
        }
        ctx->new_packmode = '=';
        ++ts;
        break;
      case '=':
      case '@':
      case '^':
        ctx->new_packmode = *ts++;
        break;
      case 'T':
        {
          const char* ts_after_sub;
          size_t i, struct_count = ctx->new_count;
          size_t struct_alignment = ctx->struct_alignment;
          ctx->new_count = 1;
          ++ts;
          if (*ts != '{') {
            PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'");
            return NULL;
          }
          if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
          ctx->enc_type = 0;
          ctx->enc_count = 0;
          ctx->struct_alignment = 0;
          ++ts;
          ts_after_sub = ts;
          for (i = 0; i != struct_count; ++i) {
            ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts);
            if (!ts_after_sub) return NULL;
          }
          ts = ts_after_sub;
          if (struct_alignment) ctx->struct_alignment = struct_alignment;
        }
        break;
      case '}':
        {
          size_t alignment = ctx->struct_alignment;
          ++ts;
          if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
          ctx->enc_type = 0;
          if (alignment && ctx->fmt_offset % alignment) {
            ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment);
          }
        }
        return ts;
      case 'x':
        if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
        ctx->fmt_offset += ctx->new_count;
        ctx->new_count = 1;
        ctx->enc_count = 0;
        ctx->enc_type = 0;
        ctx->enc_packmode = ctx->new_packmode;
        ++ts;
        break;
      case 'Z':
        got_Z = 1;
        ++ts;
        if (*ts != 'f' && *ts != 'd' && *ts != 'g') {
          __Pyx_BufFmt_RaiseUnexpectedChar('Z');
          return NULL;
        }
      case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I':
      case 'l': case 'L': case 'q': case 'Q':
      case 'f': case 'd': case 'g':
      case 'O': case 'p':
        if (ctx->enc_type == *ts && got_Z == ctx->is_complex &&
            ctx->enc_packmode == ctx->new_packmode) {
          ctx->enc_count += ctx->new_count;
          ctx->new_count = 1;
          got_Z = 0;
          ++ts;
          break;
        }
      case 's':
        if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
        ctx->enc_count = ctx->new_count;
        ctx->enc_packmode = ctx->new_packmode;
        ctx->enc_type = *ts;
        ctx->is_complex = got_Z;
        ++ts;
        ctx->new_count = 1;
        got_Z = 0;
        break;
      case ':':
        ++ts;
        while(*ts != ':') ++ts;
        ++ts;
        break;
      case '(':
        if (!__pyx_buffmt_parse_array(ctx, &ts)) return NULL;
        break;
      default:
        {
          int number = __Pyx_BufFmt_ExpectNumber(&ts);
          if (number == -1) return NULL;
          ctx->new_count = (size_t)number;
        }
    }
  }
}

/* BufferGetAndValidate */
        static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
  if (unlikely(info->buf == NULL)) return;
  if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL;
  __Pyx_ReleaseBuffer(info);
}
static void __Pyx_ZeroBuffer(Py_buffer* buf) {
  buf->buf = NULL;
  buf->obj = NULL;
  buf->strides = __Pyx_zeros;
  buf->shape = __Pyx_zeros;
  buf->suboffsets = __Pyx_minusones;
}
static int __Pyx__GetBufferAndValidate(
        Py_buffer* buf, PyObject* obj,  __Pyx_TypeInfo* dtype, int flags,
        int nd, int cast, __Pyx_BufFmt_StackElem* stack)
{
  buf->buf = NULL;
  if (unlikely(__Pyx_GetBuffer(obj, buf, flags) == -1)) {
    __Pyx_ZeroBuffer(buf);
    return -1;
  }
  if (unlikely(buf->ndim != nd)) {
    PyErr_Format(PyExc_ValueError,
                 "Buffer has wrong number of dimensions (expected %d, got %d)",
                 nd, buf->ndim);
    goto fail;
  }
  if (!cast) {
    __Pyx_BufFmt_Context ctx;
    __Pyx_BufFmt_Init(&ctx, stack, dtype);
    if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail;
  }
  if (unlikely((unsigned)buf->itemsize != dtype->size)) {
    PyErr_Format(PyExc_ValueError,
      "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)",
      buf->itemsize, (buf->itemsize > 1) ? "s" : "",
      dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : "");
    goto fail;
  }
  if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones;
  return 0;
fail:;
  __Pyx_SafeReleaseBuffer(buf);
  return -1;
}

/* ExtTypeTest */
        static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(__Pyx_TypeCheck(obj, type)))
        return 1;
    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
                 Py_TYPE(obj)->tp_name, type->tp_name);
    return 0;
}

/* BufferFallbackError */
        static void __Pyx_RaiseBufferFallbackError(void) {
  PyErr_SetString(PyExc_ValueError,
     "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!");
}

/* BufferIndexError */
        static void __Pyx_RaiseBufferIndexError(int axis) {
  PyErr_Format(PyExc_IndexError,
     "Out of bounds on buffer access (axis %d)", axis);
}

/* IterFinish */
        static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_FAST_THREAD_STATE
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject* exc_type = tstate->curexc_type;
    if (unlikely(exc_type)) {
        if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) {
            PyObject *exc_value, *exc_tb;
            exc_value = tstate->curexc_value;
            exc_tb = tstate->curexc_traceback;
            tstate->curexc_type = 0;
            tstate->curexc_value = 0;
            tstate->curexc_traceback = 0;
            Py_DECREF(exc_type);
            Py_XDECREF(exc_value);
            Py_XDECREF(exc_tb);
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#else
    if (unlikely(PyErr_Occurred())) {
        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
            PyErr_Clear();
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#endif
}

/* UnpackItemEndCheck */
        static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    } else {
        return __Pyx_IterFinish();
    }
    return 0;
}

/* SliceObject */
        static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value,
        Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp;
#if PY_MAJOR_VERSION < 3
    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
    if (likely(ms && ms->sq_ass_slice)) {
        if (!has_cstart) {
            if (_py_start && (*_py_start != Py_None)) {
                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstart = 0;
        }
        if (!has_cstop) {
            if (_py_stop && (*_py_stop != Py_None)) {
                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstop = PY_SSIZE_T_MAX;
        }
        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
            Py_ssize_t l = ms->sq_length(obj);
            if (likely(l >= 0)) {
                if (cstop < 0) {
                    cstop += l;
                    if (cstop < 0) cstop = 0;
                }
                if (cstart < 0) {
                    cstart += l;
                    if (cstart < 0) cstart = 0;
                }
            } else {
                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                    goto bad;
                PyErr_Clear();
            }
        }
        return ms->sq_ass_slice(obj, cstart, cstop, value);
    }
#endif
    mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_ass_subscript))
#endif
    {
        int result;
        PyObject *py_slice, *py_start, *py_stop;
        if (_py_slice) {
            py_slice = *_py_slice;
        } else {
            PyObject* owned_start = NULL;
            PyObject* owned_stop = NULL;
            if (_py_start) {
                py_start = *_py_start;
            } else {
                if (has_cstart) {
                    owned_start = py_start = PyInt_FromSsize_t(cstart);
                    if (unlikely(!py_start)) goto bad;
                } else
                    py_start = Py_None;
            }
            if (_py_stop) {
                py_stop = *_py_stop;
            } else {
                if (has_cstop) {
                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
                    if (unlikely(!py_stop)) {
                        Py_XDECREF(owned_start);
                        goto bad;
                    }
                } else
                    py_stop = Py_None;
            }
            py_slice = PySlice_New(py_start, py_stop, Py_None);
            Py_XDECREF(owned_start);
            Py_XDECREF(owned_stop);
            if (unlikely(!py_slice)) goto bad;
        }
#if CYTHON_USE_TYPE_SLOTS
        result = mp->mp_ass_subscript(obj, py_slice, value);
#else
        result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice);
#endif
        if (!_py_slice) {
            Py_DECREF(py_slice);
        }
        return result;
    }
    PyErr_Format(PyExc_TypeError,
        "'%.200s' object does not support slice %.10s",
        Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion");
bad:
    return -1;
}

/* MemviewSliceInit */
        static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
                        int ndim,
                        __Pyx_memviewslice *memviewslice,
                        int memview_is_new_reference)
{
    __Pyx_RefNannyDeclarations
    int i, retval=-1;
    Py_buffer *buf = &memview->view;
    __Pyx_RefNannySetupContext("init_memviewslice", 0);
    if (!buf) {
        PyErr_SetString(PyExc_ValueError,
            "buf is NULL.");
        goto fail;
    } else if (memviewslice->memview || memviewslice->data) {
        PyErr_SetString(PyExc_ValueError,
            "memviewslice is already initialized!");
        goto fail;
    }
    if (buf->strides) {
        for (i = 0; i < ndim; i++) {
            memviewslice->strides[i] = buf->strides[i];
        }
    } else {
        Py_ssize_t stride = buf->itemsize;
        for (i = ndim - 1; i >= 0; i--) {
            memviewslice->strides[i] = stride;
            stride *= buf->shape[i];
        }
    }
    for (i = 0; i < ndim; i++) {
        memviewslice->shape[i]   = buf->shape[i];
        if (buf->suboffsets) {
            memviewslice->suboffsets[i] = buf->suboffsets[i];
        } else {
            memviewslice->suboffsets[i] = -1;
        }
    }
    memviewslice->memview = memview;
    memviewslice->data = (char *)buf->buf;
    if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) {
        Py_INCREF(memview);
    }
    retval = 0;
    goto no_fail;
fail:
    memviewslice->memview = 0;
    memviewslice->data = 0;
    retval = -1;
no_fail:
    __Pyx_RefNannyFinishContext();
    return retval;
}
#ifndef Py_NO_RETURN
#define Py_NO_RETURN
#endif
static void __pyx_fatalerror(const char *fmt, ...) Py_NO_RETURN {
    va_list vargs;
    char msg[200];
#ifdef HAVE_STDARG_PROTOTYPES
    va_start(vargs, fmt);
#else
    va_start(vargs);
#endif
    vsnprintf(msg, 200, fmt, vargs);
    va_end(vargs);
    Py_FatalError(msg);
}
static CYTHON_INLINE int
__pyx_add_acquisition_count_locked(__pyx_atomic_int *acquisition_count,
                                   PyThread_type_lock lock)
{
    int result;
    PyThread_acquire_lock(lock, 1);
    result = (*acquisition_count)++;
    PyThread_release_lock(lock);
    return result;
}
static CYTHON_INLINE int
__pyx_sub_acquisition_count_locked(__pyx_atomic_int *acquisition_count,
                                   PyThread_type_lock lock)
{
    int result;
    PyThread_acquire_lock(lock, 1);
    result = (*acquisition_count)--;
    PyThread_release_lock(lock);
    return result;
}
static CYTHON_INLINE void
__Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno)
{
    int first_time;
    struct __pyx_memoryview_obj *memview = memslice->memview;
    if (!memview || (PyObject *) memview == Py_None)
        return;
    if (__pyx_get_slice_count(memview) < 0)
        __pyx_fatalerror("Acquisition count is %d (line %d)",
                         __pyx_get_slice_count(memview), lineno);
    first_time = __pyx_add_acquisition_count(memview) == 0;
    if (first_time) {
        if (have_gil) {
            Py_INCREF((PyObject *) memview);
        } else {
            PyGILState_STATE _gilstate = PyGILState_Ensure();
            Py_INCREF((PyObject *) memview);
            PyGILState_Release(_gilstate);
        }
    }
}
static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
                                             int have_gil, int lineno) {
    int last_time;
    struct __pyx_memoryview_obj *memview = memslice->memview;
    if (!memview ) {
        return;
    } else if ((PyObject *) memview == Py_None) {
        memslice->memview = NULL;
        return;
    }
    if (__pyx_get_slice_count(memview) <= 0)
        __pyx_fatalerror("Acquisition count is %d (line %d)",
                         __pyx_get_slice_count(memview), lineno);
    last_time = __pyx_sub_acquisition_count(memview) == 1;
    memslice->data = NULL;
    if (last_time) {
        if (have_gil) {
            Py_CLEAR(memslice->memview);
        } else {
            PyGILState_STATE _gilstate = PyGILState_Ensure();
            Py_CLEAR(memslice->memview);
            PyGILState_Release(_gilstate);
        }
    } else {
        memslice->memview = NULL;
    }
}

/* GetAttr */
        static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
    if (likely(PyUnicode_Check(n)))
#else
    if (likely(PyString_Check(n)))
#endif
        return __Pyx_PyObject_GetAttrStr(o, n);
#endif
    return PyObject_GetAttr(o, n);
}

/* Globals */
        static PyObject* __Pyx_Globals(void) {
    Py_ssize_t i;
    PyObject *names;
    PyObject *globals = __pyx_d;
    Py_INCREF(globals);
    names = PyObject_Dir(__pyx_m);
    if (!names)
        goto bad;
    for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) {
#if CYTHON_COMPILING_IN_PYPY
        PyObject* name = PySequence_ITEM(names, i);
        if (!name)
            goto bad;
#else
        PyObject* name = PyList_GET_ITEM(names, i);
#endif
        if (!PyDict_Contains(globals, name)) {
            PyObject* value = __Pyx_GetAttr(__pyx_m, name);
            if (!value) {
#if CYTHON_COMPILING_IN_PYPY
                Py_DECREF(name);
#endif
                goto bad;
            }
            if (PyDict_SetItem(globals, name, value) < 0) {
#if CYTHON_COMPILING_IN_PYPY
                Py_DECREF(name);
#endif
                Py_DECREF(value);
                goto bad;
            }
        }
#if CYTHON_COMPILING_IN_PYPY
        Py_DECREF(name);
#endif
    }
    Py_DECREF(names);
    return globals;
bad:
    Py_XDECREF(names);
    Py_XDECREF(globals);
    return NULL;
}

/* PyIntBinop */
        #if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_FloorDivideObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long x;
        long a = PyInt_AS_LONG(op1);
            if (unlikely(b == -1 && ((unsigned long)a) == 0-(unsigned long)a))
                return PyInt_Type.tp_as_number->nb_floor_divide(op1, op2);
            else {
                long q, r;
                q = a / b;
                r = a - q*b;
                q -= ((r != 0) & ((r ^ b) < 0));
                x = q;
            }
            return PyInt_FromLong(x);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a, x;
#ifdef HAVE_LONG_LONG
        const PY_LONG_LONG llb = intval;
        PY_LONG_LONG lla, llx;
#endif
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        if (likely(__Pyx_sst_abs(size) <= 1)) {
            a = likely(size) ? digits[0] : 0;
            if (size == -1) a = -a;
        } else {
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                default: return PyLong_Type.tp_as_number->nb_floor_divide(op1, op2);
            }
        }
                {
                    long q, r;
                    q = a / b;
                    r = a - q*b;
                    q -= ((r != 0) & ((r ^ b) < 0));
                    x = q;
                }
            return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
        long_long:
                {
                    PY_LONG_LONG q, r;
                    q = lla / llb;
                    r = lla - q*llb;
                    q -= ((r != 0) & ((r ^ llb) < 0));
                    llx = q;
                }
            return PyLong_FromLongLong(llx);
#endif
        
        
    }
    #endif
    return (inplace ? PyNumber_InPlaceFloorDivide : PyNumber_FloorDivide)(op1, op2);
}
#endif

/* BytesEquals */
        static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    if (s1 == s2) {
        return (equals == Py_EQ);
    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
        const char *ps1, *ps2;
        Py_ssize_t length = PyBytes_GET_SIZE(s1);
        if (length != PyBytes_GET_SIZE(s2))
            return (equals == Py_NE);
        ps1 = PyBytes_AS_STRING(s1);
        ps2 = PyBytes_AS_STRING(s2);
        if (ps1[0] != ps2[0]) {
            return (equals == Py_NE);
        } else if (length == 1) {
            return (equals == Py_EQ);
        } else {
            int result;
#if CYTHON_USE_UNICODE_INTERNALS
            Py_hash_t hash1, hash2;
            hash1 = ((PyBytesObject*)s1)->ob_shash;
            hash2 = ((PyBytesObject*)s2)->ob_shash;
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                return (equals == Py_NE);
            }
#endif
            result = memcmp(ps1, ps2, (size_t)length);
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
#endif
}

/* UnicodeEquals */
        static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
    return PyObject_RichCompareBool(s1, s2, equals);
#else
#if PY_MAJOR_VERSION < 3
    PyObject* owned_ref = NULL;
#endif
    int s1_is_unicode, s2_is_unicode;
    if (s1 == s2) {
        goto return_eq;
    }
    s1_is_unicode = PyUnicode_CheckExact(s1);
    s2_is_unicode = PyUnicode_CheckExact(s2);
#if PY_MAJOR_VERSION < 3
    if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
        owned_ref = PyUnicode_FromObject(s2);
        if (unlikely(!owned_ref))
            return -1;
        s2 = owned_ref;
        s2_is_unicode = 1;
    } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
        owned_ref = PyUnicode_FromObject(s1);
        if (unlikely(!owned_ref))
            return -1;
        s1 = owned_ref;
        s1_is_unicode = 1;
    } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
        return __Pyx_PyBytes_Equals(s1, s2, equals);
    }
#endif
    if (s1_is_unicode & s2_is_unicode) {
        Py_ssize_t length;
        int kind;
        void *data1, *data2;
        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            return -1;
        length = __Pyx_PyUnicode_GET_LENGTH(s1);
        if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
            goto return_ne;
        }
#if CYTHON_USE_UNICODE_INTERNALS
        {
            Py_hash_t hash1, hash2;
        #if CYTHON_PEP393_ENABLED
            hash1 = ((PyASCIIObject*)s1)->hash;
            hash2 = ((PyASCIIObject*)s2)->hash;
        #else
            hash1 = ((PyUnicodeObject*)s1)->hash;
            hash2 = ((PyUnicodeObject*)s2)->hash;
        #endif
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                goto return_ne;
            }
        }
#endif
        kind = __Pyx_PyUnicode_KIND(s1);
        if (kind != __Pyx_PyUnicode_KIND(s2)) {
            goto return_ne;
        }
        data1 = __Pyx_PyUnicode_DATA(s1);
        data2 = __Pyx_PyUnicode_DATA(s2);
        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
            goto return_ne;
        } else if (length == 1) {
            goto return_eq;
        } else {
            int result = memcmp(data1, data2, (size_t)(length * kind));
            #if PY_MAJOR_VERSION < 3
            Py_XDECREF(owned_ref);
            #endif
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & s2_is_unicode) {
        goto return_ne;
    } else if ((s2 == Py_None) & s1_is_unicode) {
        goto return_ne;
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
return_eq:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_EQ);
return_ne:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_NE);
#endif
}

/* Import */
        static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    #if PY_MAJOR_VERSION < 3
    PyObject *py_import;
    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
    if (!py_import)
        goto bad;
    #endif
    if (from_list)
        list = from_list;
    else {
        empty_list = PyList_New(0);
        if (!empty_list)
            goto bad;
        list = empty_list;
    }
    global_dict = PyModule_GetDict(__pyx_m);
    if (!global_dict)
        goto bad;
    empty_dict = PyDict_New();
    if (!empty_dict)
        goto bad;
    {
        #if PY_MAJOR_VERSION >= 3
        if (level == -1) {
            if (strchr(__Pyx_MODULE_NAME, '.')) {
                module = PyImport_ImportModuleLevelObject(
                    name, global_dict, empty_dict, list, 1);
                if (!module) {
                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
                        goto bad;
                    PyErr_Clear();
                }
            }
            level = 0;
        }
        #endif
        if (!module) {
            #if PY_MAJOR_VERSION < 3
            PyObject *py_level = PyInt_FromLong(level);
            if (!py_level)
                goto bad;
            module = PyObject_CallFunctionObjArgs(py_import,
                name, global_dict, empty_dict, list, py_level, NULL);
            Py_DECREF(py_level);
            #else
            module = PyImport_ImportModuleLevelObject(
                name, global_dict, empty_dict, list, level);
            #endif
        }
    }
bad:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(py_import);
    #endif
    Py_XDECREF(empty_list);
    Py_XDECREF(empty_dict);
    return module;
}

/* ImportFrom */
        static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
    PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
    if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Format(PyExc_ImportError,
        #if PY_MAJOR_VERSION < 3
            "cannot import name %.230s", PyString_AS_STRING(name));
        #else
            "cannot import name %S", name);
        #endif
    }
    return value;
}

/* py_dict_keys */
        static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) {
    if (PY_MAJOR_VERSION >= 3)
        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_keys, d);
    else
        return PyDict_Keys(d);
}

/* GetItemInt */
        static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (!j) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyList_GET_SIZE(o);
    }
    if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
        PyObject *r = PyList_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyTuple_GET_SIZE(o);
    }
    if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
        PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                     CYTHON_NCP_UNUSED int wraparound,
                                                     CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
            PyObject *r = PyList_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    }
    else if (PyTuple_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
        if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    } else {
        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
        if (likely(m && m->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
                Py_ssize_t l = m->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return NULL;
                    PyErr_Clear();
                }
            }
            return m->sq_item(o, i);
        }
    }
#else
    if (is_list || PySequence_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}

/* FetchCommonType */
        static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
    PyObject* fake_module;
    PyTypeObject* cached_type = NULL;
    fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
    if (!fake_module) return NULL;
    Py_INCREF(fake_module);
    cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
    if (cached_type) {
        if (!PyType_Check((PyObject*)cached_type)) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s is not a type object",
                type->tp_name);
            goto bad;
        }
        if (cached_type->tp_basicsize != type->tp_basicsize) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s has the wrong size, try recompiling",
                type->tp_name);
            goto bad;
        }
    } else {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
        PyErr_Clear();
        if (PyType_Ready(type) < 0) goto bad;
        if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
            goto bad;
        Py_INCREF(type);
        cached_type = type;
    }
done:
    Py_DECREF(fake_module);
    return cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}

/* CythonFunction */
        static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
    if (unlikely(op->func_doc == NULL)) {
        if (op->func.m_ml->ml_doc) {
#if PY_MAJOR_VERSION >= 3
            op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
#else
            op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
#endif
            if (unlikely(op->func_doc == NULL))
                return NULL;
        } else {
            Py_INCREF(Py_None);
            return Py_None;
        }
    }
    Py_INCREF(op->func_doc);
    return op->func_doc;
}
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
{
    PyObject *tmp = op->func_doc;
    if (value == NULL) {
        value = Py_None;
    }
    Py_INCREF(value);
    op->func_doc = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
        op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
#else
        op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
#endif
        if (unlikely(op->func_name == NULL))
            return NULL;
    }
    Py_INCREF(op->func_name);
    return op->func_name;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
#else
    if (unlikely(value == NULL || !PyString_Check(value))) {
#endif
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    tmp = op->func_name;
    Py_INCREF(value);
    op->func_name = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
{
    Py_INCREF(op->func_qualname);
    return op->func_qualname;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
#else
    if (unlikely(value == NULL || !PyString_Check(value))) {
#endif
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    tmp = op->func_qualname;
    Py_INCREF(value);
    op->func_qualname = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
{
    PyObject *self;
    self = m->func_closure;
    if (self == NULL)
        self = Py_None;
    Py_INCREF(self);
    return self;
}
static PyObject *
__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_dict == NULL)) {
        op->func_dict = PyDict_New();
        if (unlikely(op->func_dict == NULL))
            return NULL;
    }
    Py_INCREF(op->func_dict);
    return op->func_dict;
}
static int
__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
{
    PyObject *tmp;
    if (unlikely(value == NULL)) {
        PyErr_SetString(PyExc_TypeError,
               "function's dictionary may not be deleted");
        return -1;
    }
    if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
               "setting function's dictionary to a non-dict");
        return -1;
    }
    tmp = op->func_dict;
    Py_INCREF(value);
    op->func_dict = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
{
    Py_INCREF(op->func_globals);
    return op->func_globals;
}
static PyObject *
__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
{
    Py_INCREF(Py_None);
    return Py_None;
}
static PyObject *
__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
{
    PyObject* result = (op->func_code) ? op->func_code : Py_None;
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
    int result = 0;
    PyObject *res = op->defaults_getter((PyObject *) op);
    if (unlikely(!res))
        return -1;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
    Py_INCREF(op->defaults_tuple);
    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
    Py_INCREF(op->defaults_kwdict);
    #else
    op->defaults_tuple = PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = PySequence_ITEM(res, 1);
        if (unlikely(!op->defaults_kwdict)) result = -1;
    }
    #endif
    Py_DECREF(res);
    return result;
}
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
    PyObject* tmp;
    if (!value) {
        value = Py_None;
    } else if (value != Py_None && !PyTuple_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__defaults__ must be set to a tuple object");
        return -1;
    }
    Py_INCREF(value);
    tmp = op->defaults_tuple;
    op->defaults_tuple = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_tuple;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
            result = op->defaults_tuple;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
    PyObject* tmp;
    if (!value) {
        value = Py_None;
    } else if (value != Py_None && !PyDict_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__kwdefaults__ must be set to a dict object");
        return -1;
    }
    Py_INCREF(value);
    tmp = op->defaults_kwdict;
    op->defaults_kwdict = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_kwdict;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
            result = op->defaults_kwdict;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
    PyObject* tmp;
    if (!value || value == Py_None) {
        value = NULL;
    } else if (!PyDict_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__annotations__ must be set to a dict object");
        return -1;
    }
    Py_XINCREF(value);
    tmp = op->func_annotations;
    op->func_annotations = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
    PyObject* result = op->func_annotations;
    if (unlikely(!result)) {
        result = PyDict_New();
        if (unlikely(!result)) return NULL;
        op->func_annotations = result;
    }
    Py_INCREF(result);
    return result;
}
static PyGetSetDef __pyx_CyFunction_getsets[] = {
    {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
    {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
    {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
    {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0},
    {0, 0, 0,  0, 0}
};
static PyObject *
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromString(m->func.m_ml->ml_name);
#else
    return PyString_FromString(m->func.m_ml->ml_name);
#endif
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if PY_VERSION_HEX < 0x030500A0
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
#else
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist)
#endif
static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname,
                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type);
    if (op == NULL)
        return NULL;
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
    op->func.m_ml = ml;
    op->func.m_self = (PyObject *) op;
    Py_XINCREF(closure);
    op->func_closure = closure;
    Py_XINCREF(module);
    op->func.m_module = module;
    op->func_dict = NULL;
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
    op->func_classobj = NULL;
    op->func_globals = globals;
    Py_INCREF(op->func_globals);
    Py_XINCREF(code);
    op->func_code = code;
    op->defaults_pyobjects = 0;
    op->defaults = NULL;
    op->defaults_tuple = NULL;
    op->defaults_kwdict = NULL;
    op->defaults_getter = NULL;
    op->func_annotations = NULL;
    PyObject_GC_Track(op);
    return (PyObject *) op;
}
static int
__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
{
    Py_CLEAR(m->func_closure);
    Py_CLEAR(m->func.m_module);
    Py_CLEAR(m->func_dict);
    Py_CLEAR(m->func_name);
    Py_CLEAR(m->func_qualname);
    Py_CLEAR(m->func_doc);
    Py_CLEAR(m->func_globals);
    Py_CLEAR(m->func_code);
    Py_CLEAR(m->func_classobj);
    Py_CLEAR(m->defaults_tuple);
    Py_CLEAR(m->defaults_kwdict);
    Py_CLEAR(m->func_annotations);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_XDECREF(pydefaults[i]);
        PyObject_Free(m->defaults);
        m->defaults = NULL;
    }
    return 0;
}
static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    if (__Pyx_CyFunction_weakreflist(m) != NULL)
        PyObject_ClearWeakRefs((PyObject *) m);
    __Pyx_CyFunction_clear(m);
    PyObject_GC_Del(m);
}
static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    PyObject_GC_UnTrack(m);
    __Pyx__CyFunction_dealloc(m);
}
static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
{
    Py_VISIT(m->func_closure);
    Py_VISIT(m->func.m_module);
    Py_VISIT(m->func_dict);
    Py_VISIT(m->func_name);
    Py_VISIT(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    Py_VISIT(m->func_code);
    Py_VISIT(m->func_classobj);
    Py_VISIT(m->defaults_tuple);
    Py_VISIT(m->defaults_kwdict);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_VISIT(pydefaults[i]);
    }
    return 0;
}
static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
{
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
        Py_INCREF(func);
        return func;
    }
    if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
        if (type == NULL)
            type = (PyObject *)(Py_TYPE(obj));
        return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
    }
    if (obj == Py_None)
        obj = NULL;
    return __Pyx_PyMethod_New(func, obj, type);
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
#else
    return PyString_FromFormat("<cyfunction %s at %p>",
                               PyString_AsString(op->func_qualname), (void *)op);
#endif
}
static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    Py_ssize_t size;
    switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
    case METH_VARARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0))
            return (*meth)(self, arg);
        break;
    case METH_VARARGS | METH_KEYWORDS:
        return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 0))
                return (*meth)(self, NULL);
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 1)) {
                PyObject *result, *arg0;
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                arg0 = PyTuple_GET_ITEM(arg, 0);
                #else
                arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
                #endif
                result = (*meth)(self, arg0);
                #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
                Py_DECREF(arg0);
                #endif
                return result;
            }
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags in "
                        "__Pyx_CyFunction_Call. METH_OLDARGS is no "
                        "longer supported!");
        return NULL;
    }
    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
                 f->m_ml->ml_name);
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw);
}
static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
    PyObject *result;
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        Py_ssize_t argc;
        PyObject *new_args;
        PyObject *self;
        argc = PyTuple_GET_SIZE(args);
        new_args = PyTuple_GetSlice(args, 1, argc);
        if (unlikely(!new_args))
            return NULL;
        self = PyTuple_GetItem(args, 0);
        if (unlikely(!self)) {
            Py_DECREF(new_args);
            return NULL;
        }
        result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
        Py_DECREF(new_args);
    } else {
        result = __Pyx_CyFunction_Call(func, args, kw);
    }
    return result;
}
static PyTypeObject __pyx_CyFunctionType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
    (destructor) __Pyx_CyFunction_dealloc,
    0,
    0,
    0,
#if PY_MAJOR_VERSION < 3
    0,
#else
    0,
#endif
    (reprfunc) __Pyx_CyFunction_repr,
    0,
    0,
    0,
    0,
    __Pyx_CyFunction_CallAsMethod,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
    0,
    (traverseproc) __Pyx_CyFunction_traverse,
    (inquiry) __Pyx_CyFunction_clear,
    0,
#if PY_VERSION_HEX < 0x030500A0
    offsetof(__pyx_CyFunctionObject, func_weakreflist),
#else
    offsetof(PyCFunctionObject, m_weakreflist),
#endif
    0,
    0,
    __pyx_CyFunction_methods,
    __pyx_CyFunction_members,
    __pyx_CyFunction_getsets,
    0,
    0,
    __Pyx_CyFunction_descr_get,
    0,
    offsetof(__pyx_CyFunctionObject, func_dict),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
};
static int __pyx_CyFunction_init(void) {
    __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
    if (unlikely(__pyx_CyFunctionType == NULL)) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_Malloc(size);
    if (unlikely(!m->defaults))
        return PyErr_NoMemory();
    memset(m->defaults, 0, size);
    m->defaults_pyobjects = pyobjects;
    return m->defaults;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_tuple = tuple;
    Py_INCREF(tuple);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_kwdict = dict;
    Py_INCREF(dict);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->func_annotations = dict;
    Py_INCREF(dict);
}

/* PyObjectCallMethod0 */
            static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
    PyObject *method, *result = NULL;
    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
    if (unlikely(!method)) goto bad;
#if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(method))) {
        PyObject *self = PyMethod_GET_SELF(method);
        if (likely(self)) {
            PyObject *function = PyMethod_GET_FUNCTION(method);
            result = __Pyx_PyObject_CallOneArg(function, self);
            Py_DECREF(method);
            return result;
        }
    }
#endif
    result = __Pyx_PyObject_CallNoArg(method);
    Py_DECREF(method);
bad:
    return result;
}

/* UnpackTupleError */
            static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else if (PyTuple_GET_SIZE(t) < index) {
      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
    } else {
      __Pyx_RaiseTooManyValuesError(index);
    }
}

/* UnpackTuple2 */
            static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
        PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
    PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_COMPILING_IN_PYPY
    value1 = PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;
    value2 = PySequence_ITEM(tuple, 1);  if (unlikely(!value2)) goto bad;
#else
    value1 = PyTuple_GET_ITEM(tuple, 0);  Py_INCREF(value1);
    value2 = PyTuple_GET_ITEM(tuple, 1);  Py_INCREF(value2);
#endif
    if (decref_tuple) {
        Py_DECREF(tuple);
    }
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
#if CYTHON_COMPILING_IN_PYPY
bad:
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
#endif
}
static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
                                       int has_known_size, int decref_tuple) {
    Py_ssize_t index;
    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
    iternextfunc iternext;
    iter = PyObject_GetIter(tuple);
    if (unlikely(!iter)) goto bad;
    if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
    iternext = Py_TYPE(iter)->tp_iternext;
    value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
    value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
    if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
    Py_DECREF(iter);
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
unpacking_failed:
    if (!has_known_size && __Pyx_IterFinish() == 0)
        __Pyx_RaiseNeedMoreValuesError(index);
bad:
    Py_XDECREF(iter);
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
}

/* dict_iter */
            static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
    *p_source_is_dict = is_dict;
    if (is_dict) {
#if !CYTHON_COMPILING_IN_PYPY
        *p_orig_length = PyDict_Size(iterable);
        Py_INCREF(iterable);
        return iterable;
#elif PY_MAJOR_VERSION >= 3
        static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
        PyObject **pp = NULL;
        if (method_name) {
            const char *name = PyUnicode_AsUTF8(method_name);
            if (strcmp(name, "iteritems") == 0) pp = &py_items;
            else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
            else if (strcmp(name, "itervalues") == 0) pp = &py_values;
            if (pp) {
                if (!*pp) {
                    *pp = PyUnicode_FromString(name + 4);
                    if (!*pp)
                        return NULL;
                }
                method_name = *pp;
            }
        }
#endif
    }
    *p_orig_length = 0;
    if (method_name) {
        PyObject* iter;
        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
        if (!iterable)
            return NULL;
#if !CYTHON_COMPILING_IN_PYPY
        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
            return iterable;
#endif
        iter = PyObject_GetIter(iterable);
        Py_DECREF(iterable);
        return iter;
    }
    return PyObject_GetIter(iterable);
}
static CYTHON_INLINE int __Pyx_dict_iter_next(
        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
    PyObject* next_item;
#if !CYTHON_COMPILING_IN_PYPY
    if (source_is_dict) {
        PyObject *key, *value;
        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
            return -1;
        }
        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
            return 0;
        }
        if (pitem) {
            PyObject* tuple = PyTuple_New(2);
            if (unlikely(!tuple)) {
                return -1;
            }
            Py_INCREF(key);
            Py_INCREF(value);
            PyTuple_SET_ITEM(tuple, 0, key);
            PyTuple_SET_ITEM(tuple, 1, value);
            *pitem = tuple;
        } else {
            if (pkey) {
                Py_INCREF(key);
                *pkey = key;
            }
            if (pvalue) {
                Py_INCREF(value);
                *pvalue = value;
            }
        }
        return 1;
    } else if (PyTuple_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyTuple_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else if (PyList_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyList_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else
#endif
    {
        next_item = PyIter_Next(iter_obj);
        if (unlikely(!next_item)) {
            return __Pyx_IterFinish();
        }
    }
    if (pitem) {
        *pitem = next_item;
    } else if (pkey && pvalue) {
        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
            return -1;
    } else if (pkey) {
        *pkey = next_item;
    } else {
        *pvalue = next_item;
    }
    return 1;
}

/* SetItemInt */
            static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
    int r;
    if (!j) return -1;
    r = PyObject_SetItem(o, j, v);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
                                               CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
        if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
            PyObject* old = PyList_GET_ITEM(o, n);
            Py_INCREF(v);
            PyList_SET_ITEM(o, n, v);
            Py_DECREF(old);
            return 1;
        }
    } else {
        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
        if (likely(m && m->sq_ass_item)) {
            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
                Py_ssize_t l = m->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return -1;
                    PyErr_Clear();
                }
            }
            return m->sq_ass_item(o, i, v);
        }
    }
#else
#if CYTHON_COMPILING_IN_PYPY
    if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
#else
    if (is_list || PySequence_Check(o)) {
#endif
        return PySequence_SetItem(o, i, v);
    }
#endif
    return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
}

/* HasAttr */
              static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
    PyObject *r;
    if (unlikely(!__Pyx_PyBaseString_Check(n))) {
        PyErr_SetString(PyExc_TypeError,
                        "hasattr(): attribute name must be string");
        return -1;
    }
    r = __Pyx_GetAttr(o, n);
    if (unlikely(!r)) {
        PyErr_Clear();
        return 0;
    } else {
        Py_DECREF(r);
        return 1;
    }
}

/* pop */
              static CYTHON_INLINE PyObject* __Pyx__PyObject_Pop(PyObject* L) {
    if (Py_TYPE(L) == &PySet_Type) {
        return PySet_Pop(L);
    }
    return __Pyx_PyObject_CallMethod0(L, __pyx_n_s_pop);
}
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE PyObject* __Pyx_PyList_Pop(PyObject* L) {
    if (likely(PyList_GET_SIZE(L) > (((PyListObject*)L)->allocated >> 1))) {
        Py_SIZE(L) -= 1;
        return PyList_GET_ITEM(L, PyList_GET_SIZE(L));
    }
    return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyList_Type_pop, L);
}
#endif

/* PyErrExceptionMatches */
              #if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
    PyObject *exc_type = tstate->curexc_type;
    if (exc_type == err) return 1;
    if (unlikely(!exc_type)) return 0;
    if (unlikely(PyTuple_Check(err)))
        return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
    return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
}
#endif

/* unicode_tailmatch */
              static int __Pyx_PyUnicode_TailmatchTuple(PyObject* s, PyObject* substrings,
                                          Py_ssize_t start, Py_ssize_t end, int direction) {
    Py_ssize_t i, count = PyTuple_GET_SIZE(substrings);
    for (i = 0; i < count; i++) {
        Py_ssize_t result;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        result = PyUnicode_Tailmatch(s, PyTuple_GET_ITEM(substrings, i),
                                     start, end, direction);
#else
        PyObject* sub = PySequence_ITEM(substrings, i);
        if (unlikely(!sub)) return -1;
        result = PyUnicode_Tailmatch(s, sub, start, end, direction);
        Py_DECREF(sub);
#endif
        if (result) {
            return (int) result;
        }
    }
    return 0;
}
static int __Pyx_PyUnicode_Tailmatch(PyObject* s, PyObject* substr,
                                     Py_ssize_t start, Py_ssize_t end, int direction) {
    if (unlikely(PyTuple_Check(substr))) {
        return __Pyx_PyUnicode_TailmatchTuple(s, substr, start, end, direction);
    }
    return (int) PyUnicode_Tailmatch(s, substr, start, end, direction);
}

/* None */
              static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}

/* None */
              static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
    Py_ssize_t q = a / b;
    Py_ssize_t r = a - q*b;
    q -= ((r != 0) & ((r ^ b) < 0));
    return q;
}

/* GetAttr3 */
              static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        return NULL;
    __Pyx_PyErr_Clear();
    Py_INCREF(d);
    return d;
}
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
    PyObject *r = __Pyx_GetAttr(o, n);
    return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
}

/* SwapException */
              #if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if PY_VERSION_HEX >= 0x030700A2
    tmp_type = tstate->exc_state.exc_type;
    tmp_value = tstate->exc_state.exc_value;
    tmp_tb = tstate->exc_state.exc_traceback;
    tstate->exc_state.exc_type = *type;
    tstate->exc_state.exc_value = *value;
    tstate->exc_state.exc_traceback = *tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
    #endif
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#endif

/* None */
              static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
    long q = a / b;
    long r = a - q*b;
    q -= ((r != 0) & ((r ^ b) < 0));
    return q;
}

/* StringJoin */
              #if !CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) {
    return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL);
}
#endif

/* SetVTable */
              static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
#endif
    if (!ob)
        goto bad;
    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* SetupReduce */
              static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  int ret;
  PyObject *name_attr;
  name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
  if (likely(name_attr)) {
      ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
  } else {
      ret = -1;
  }
  if (unlikely(ret < 0)) {
      PyErr_Clear();
      ret = 0;
  }
  Py_XDECREF(name_attr);
  return ret;
}
static int __Pyx_setup_reduce(PyObject* type_obj) {
    int ret = 0;
    PyObject *object_reduce = NULL;
    PyObject *object_reduce_ex = NULL;
    PyObject *reduce = NULL;
    PyObject *reduce_ex = NULL;
    PyObject *reduce_cython = NULL;
    PyObject *setstate = NULL;
    PyObject *setstate_cython = NULL;
#if CYTHON_USE_PYTYPE_LOOKUP
    if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto GOOD;
#else
    if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto GOOD;
#endif
#if CYTHON_USE_PYTYPE_LOOKUP
    object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD;
#else
    object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD;
#endif
    reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto BAD;
    if (reduce_ex == object_reduce_ex) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD;
#else
        object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD;
#endif
        reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto BAD;
        if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
            reduce_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_cython); if (unlikely(!reduce_cython)) goto BAD;
            ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto BAD;
            ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto BAD;
            setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
            if (!setstate) PyErr_Clear();
            if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
                setstate_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate_cython); if (unlikely(!setstate_cython)) goto BAD;
                ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto BAD;
                ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto BAD;
            }
            PyType_Modified((PyTypeObject*)type_obj);
        }
    }
    goto GOOD;
BAD:
    if (!PyErr_Occurred())
        PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name);
    ret = -1;
GOOD:
#if !CYTHON_USE_PYTYPE_LOOKUP
    Py_XDECREF(object_reduce);
    Py_XDECREF(object_reduce_ex);
#endif
    Py_XDECREF(reduce);
    Py_XDECREF(reduce_ex);
    Py_XDECREF(reduce_cython);
    Py_XDECREF(setstate);
    Py_XDECREF(setstate_cython);
    return ret;
}

/* CalculateMetaclass */
              static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
    for (i=0; i < nbases; i++) {
        PyTypeObject *tmptype;
        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
        tmptype = Py_TYPE(tmp);
#if PY_MAJOR_VERSION < 3
        if (tmptype == &PyClass_Type)
            continue;
#endif
        if (!metaclass) {
            metaclass = tmptype;
            continue;
        }
        if (PyType_IsSubtype(metaclass, tmptype))
            continue;
        if (PyType_IsSubtype(tmptype, metaclass)) {
            metaclass = tmptype;
            continue;
        }
        PyErr_SetString(PyExc_TypeError,
                        "metaclass conflict: "
                        "the metaclass of a derived class "
                        "must be a (non-strict) subclass "
                        "of the metaclasses of all its bases");
        return NULL;
    }
    if (!metaclass) {
#if PY_MAJOR_VERSION < 3
        metaclass = &PyClass_Type;
#else
        metaclass = &PyType_Type;
#endif
    }
    Py_INCREF((PyObject*) metaclass);
    return (PyObject*) metaclass;
}

/* Py3ClassCreate */
              static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
    PyObject *ns;
    if (metaclass) {
        PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
        if (prep) {
            PyObject *pargs = PyTuple_Pack(2, name, bases);
            if (unlikely(!pargs)) {
                Py_DECREF(prep);
                return NULL;
            }
            ns = PyObject_Call(prep, pargs, mkw);
            Py_DECREF(prep);
            Py_DECREF(pargs);
        } else {
            if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
                return NULL;
            PyErr_Clear();
            ns = PyDict_New();
        }
    } else {
        ns = PyDict_New();
    }
    if (unlikely(!ns))
        return NULL;
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
    return ns;
bad:
    Py_DECREF(ns);
    return NULL;
}
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
                                      PyObject *dict, PyObject *mkw,
                                      int calculate_metaclass, int allow_py2_metaclass) {
    PyObject *result, *margs;
    PyObject *owned_metaclass = NULL;
    if (allow_py2_metaclass) {
        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
        if (owned_metaclass) {
            metaclass = owned_metaclass;
        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
            PyErr_Clear();
        } else {
            return NULL;
        }
    }
    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
        Py_XDECREF(owned_metaclass);
        if (unlikely(!metaclass))
            return NULL;
        owned_metaclass = metaclass;
    }
    margs = PyTuple_Pack(3, name, bases, dict);
    if (unlikely(!margs)) {
        result = NULL;
    } else {
        result = PyObject_Call(metaclass, margs, mkw);
        Py_DECREF(margs);
    }
    Py_XDECREF(owned_metaclass);
    return result;
}

/* CyFunctionClassCell */
              static int __Pyx_CyFunction_InitClassCell(PyObject *cyfunctions, PyObject *classobj) {
    Py_ssize_t i, count = PyList_GET_SIZE(cyfunctions);
    for (i = 0; i < count; i++) {
        __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *)
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            PyList_GET_ITEM(cyfunctions, i);
#else
            PySequence_ITEM(cyfunctions, i);
        if (unlikely(!m))
            return -1;
#endif
        Py_INCREF(classobj);
        m->func_classobj = classobj;
#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
        Py_DECREF((PyObject*)m);
#endif
    }
    return 0;
}

/* CLineInTraceback */
              #ifndef CYTHON_CLINE_IN_TRACEBACK
static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
    PyObject *use_cline;
    PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject **cython_runtime_dict;
#endif
    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
#if CYTHON_COMPILING_IN_CPYTHON
    cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
    if (likely(cython_runtime_dict)) {
      use_cline = PyDict_GetItem(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
    } else
#endif
    {
      PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
      if (use_cline_obj) {
        use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
        Py_DECREF(use_cline_obj);
      } else {
        PyErr_Clear();
        use_cline = NULL;
      }
    }
    if (!use_cline) {
        c_line = 0;
        PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
    }
    else if (PyObject_Not(use_cline) != 0) {
        c_line = 0;
    }
    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
    return c_line;
}
#endif

/* CodeObjectCache */
              static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    int start = 0, mid = 0, end = count - 1;
    if (end >= 0 && code_line > entries[end].code_line) {
        return count;
    }
    while (start < end) {
        mid = start + (end - start) / 2;
        if (code_line < entries[mid].code_line) {
            end = mid;
        } else if (code_line > entries[mid].code_line) {
             start = mid + 1;
        } else {
            return mid;
        }
    }
    if (code_line <= entries[mid].code_line) {
        return mid;
    } else {
        return mid + 1;
    }
}
static PyCodeObject *__pyx_find_code_object(int code_line) {
    PyCodeObject* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = __pyx_code_cache.entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            __pyx_code_cache.entries = entries;
            __pyx_code_cache.max_count = 64;
            __pyx_code_cache.count = 1;
            entries[0].code_line = code_line;
            entries[0].code_object = code_object;
            Py_INCREF(code_object);
        }
        return;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
        PyCodeObject* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_DECREF(tmp);
        return;
    }
    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
        int new_max = __pyx_code_cache.max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        __pyx_code_cache.entries = entries;
        __pyx_code_cache.max_count = new_max;
    }
    for (i=__pyx_code_cache.count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    __pyx_code_cache.count++;
    Py_INCREF(code_object);
}

/* AddTraceback */
              #include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    #if PY_MAJOR_VERSION < 3
    py_srcfile = PyString_FromString(filename);
    #else
    py_srcfile = PyUnicode_FromString(filename);
    #endif
    if (!py_srcfile) goto bad;
    if (c_line) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        #else
        py_funcname = PyUnicode_FromString(funcname);
        #endif
    }
    if (!py_funcname) goto bad;
    py_code = __Pyx_PyCode_New(
        0,
        0,
        0,
        0,
        0,
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple, /*PyObject *consts,*/
        __pyx_empty_tuple, /*PyObject *names,*/
        __pyx_empty_tuple, /*PyObject *varnames,*/
        __pyx_empty_tuple, /*PyObject *freevars,*/
        __pyx_empty_tuple, /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        py_line,
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    Py_DECREF(py_srcfile);
    Py_DECREF(py_funcname);
    return py_code;
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    if (c_line) {
        c_line = __Pyx_CLineForTraceback(tstate, c_line);
    }
    py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!py_code) {
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) goto bad;
        __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
    }
    py_frame = PyFrame_New(
        tstate,            /*PyThreadState *tstate,*/
        py_code,           /*PyCodeObject *code,*/
        __pyx_d,    /*PyObject *globals,*/
        0                  /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

#if PY_MAJOR_VERSION < 3
static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
    if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags);
        if (__Pyx_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) return __pyx_pw_5numpy_7ndarray_1__getbuffer__(obj, view, flags);
        if (__Pyx_TypeCheck(obj, __pyx_array_type)) return __pyx_array_getbuffer(obj, view, flags);
        if (__Pyx_TypeCheck(obj, __pyx_memoryview_type)) return __pyx_memoryview_getbuffer(obj, view, flags);
    PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name);
    return -1;
}
static void __Pyx_ReleaseBuffer(Py_buffer *view) {
    PyObject *obj = view->obj;
    if (!obj) return;
    if (PyObject_CheckBuffer(obj)) {
        PyBuffer_Release(view);
        return;
    }
    if ((0)) {}
        else if (__Pyx_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) __pyx_pw_5numpy_7ndarray_3__releasebuffer__(obj, view);
    view->obj = NULL;
    Py_DECREF(obj);
}
#endif


              /* MemviewSliceIsContig */
              static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
    int i, index, step, start;
    Py_ssize_t itemsize = mvs.memview->view.itemsize;
    if (order == 'F') {
        step = 1;
        start = 0;
    } else {
        step = -1;
        start = ndim - 1;
    }
    for (i = 0; i < ndim; i++) {
        index = start + step * i;
        if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize)
            return 0;
        itemsize *= mvs.shape[index];
    }
    return 1;
}

/* OverlappingSlices */
              static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
                               void **out_start, void **out_end,
                               int ndim, size_t itemsize)
{
    char *start, *end;
    int i;
    start = end = slice->data;
    for (i = 0; i < ndim; i++) {
        Py_ssize_t stride = slice->strides[i];
        Py_ssize_t extent = slice->shape[i];
        if (extent == 0) {
            *out_start = *out_end = start;
            return;
        } else {
            if (stride > 0)
                end += stride * (extent - 1);
            else
                start += stride * (extent - 1);
        }
    }
    *out_start = start;
    *out_end = end + itemsize;
}
static int
__pyx_slices_overlap(__Pyx_memviewslice *slice1,
                     __Pyx_memviewslice *slice2,
                     int ndim, size_t itemsize)
{
    void *start1, *end1, *start2, *end2;
    __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize);
    __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize);
    return (start1 < end2) && (start2 < end1);
}

/* Capsule */
              static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
    PyObject *cobj;
#if PY_VERSION_HEX >= 0x02070000
    cobj = PyCapsule_New(p, sig, NULL);
#else
    cobj = PyCObject_FromVoidPtr(p, NULL);
#endif
    return cobj;
}

/* CIntFromPyVerify */
              #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
    {\
        func_type value = func_value;\
        if (sizeof(target_type) < sizeof(func_type)) {\
            if (unlikely(value != (func_type) (target_type) value)) {\
                func_type zero = 0;\
                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
                    return (target_type) -1;\
                if (is_unsigned && unlikely(value < zero))\
                    goto raise_neg_overflow;\
                else\
                    goto raise_overflow;\
            }\
        }\
        return (target_type) value;\
    }

/* CIntToPy */
              static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
    const int neg_one = (int) -1, const_zero = (int) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
              static CYTHON_INLINE PyObject* __Pyx_PyInt_From_mjtJoint(mjtJoint value) {
    const mjtJoint neg_one = (mjtJoint) -1, const_zero = (mjtJoint) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(mjtJoint) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(mjtJoint) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(mjtJoint) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(mjtJoint) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(mjtJoint) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(mjtJoint),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
              static CYTHON_INLINE PyObject* __Pyx_PyInt_From_mjtByte(mjtByte value) {
    const mjtByte neg_one = (mjtByte) -1, const_zero = (mjtByte) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(mjtByte) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(mjtByte) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(mjtByte) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(mjtByte) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(mjtByte) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(mjtByte),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
              static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(unsigned int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned int),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
              static CYTHON_INLINE PyObject* __Pyx_PyInt_From_char(char value) {
    const char neg_one = (char) -1, const_zero = (char) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(char) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(char) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(char) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(char) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(char) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(char),
                                     little, !is_unsigned);
    }
}

/* MemviewDtypeToObject */
              static CYTHON_INLINE PyObject *__pyx_memview_get_char(const char *itemp) {
    return (PyObject *) __Pyx_PyInt_From_char(*(char *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_char(const char *itemp, PyObject *obj) {
    char value = __Pyx_PyInt_As_char(obj);
    if ((value == (char)-1) && PyErr_Occurred())
        return 0;
    *(char *) itemp = value;
    return 1;
}

/* MemviewDtypeToObject */
              static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp) {
    return (PyObject *) PyFloat_FromDouble(*(float *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *obj) {
    float value = __pyx_PyFloat_AsFloat(obj);
    if ((value == (float)-1) && PyErr_Occurred())
        return 0;
    *(float *) itemp = value;
    return 1;
}

/* MemviewDtypeToObject */
              static CYTHON_INLINE PyObject *__pyx_memview_get_int(const char *itemp) {
    return (PyObject *) __Pyx_PyInt_From_int(*(int *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_int(const char *itemp, PyObject *obj) {
    int value = __Pyx_PyInt_As_int(obj);
    if ((value == (int)-1) && PyErr_Occurred())
        return 0;
    *(int *) itemp = value;
    return 1;
}

/* MemviewDtypeToObject */
              static CYTHON_INLINE PyObject *__pyx_memview_get_nn_mjtByte(const char *itemp) {
    return (PyObject *) __Pyx_PyInt_From_mjtByte(*(mjtByte *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn_mjtByte(const char *itemp, PyObject *obj) {
    mjtByte value = __Pyx_PyInt_As_mjtByte(obj);
    if ((value == ((mjtByte)-1)) && PyErr_Occurred())
        return 0;
    *(mjtByte *) itemp = value;
    return 1;
}

/* MemviewDtypeToObject */
              static CYTHON_INLINE PyObject *__pyx_memview_get_nn_mjtNum(const char *itemp) {
    return (PyObject *) PyFloat_FromDouble(*(mjtNum *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn_mjtNum(const char *itemp, PyObject *obj) {
    mjtNum value = __pyx_PyFloat_AsDouble(obj);
    if ((value == ((mjtNum)-1)) && PyErr_Occurred())
        return 0;
    *(mjtNum *) itemp = value;
    return 1;
}

/* MemviewDtypeToObject */
              static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_int(const char *itemp) {
    return (PyObject *) __Pyx_PyInt_From_unsigned_int(*(unsigned int *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_unsigned_int(const char *itemp, PyObject *obj) {
    unsigned int value = __Pyx_PyInt_As_unsigned_int(obj);
    if ((value == (unsigned int)-1) && PyErr_Occurred())
        return 0;
    *(unsigned int *) itemp = value;
    return 1;
}

/* CIntToPy */
              static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
    const long neg_one = (long) -1, const_zero = (long) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
    }
}

/* Declarations */
              #if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
      return ::std::complex< float >(x, y);
    }
  #else
    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
      return x + y*(__pyx_t_float_complex)_Complex_I;
    }
  #endif
#else
    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
      __pyx_t_float_complex z;
      z.real = x;
      z.imag = y;
      return z;
    }
#endif

/* Arithmetic */
              #if CYTHON_CCOMPLEX
#else
    static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
       return (a.real == b.real) && (a.imag == b.imag);
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        z.real = a.real + b.real;
        z.imag = a.imag + b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        z.real = a.real - b.real;
        z.imag = a.imag - b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        z.real = a.real * b.real - a.imag * b.imag;
        z.imag = a.real * b.imag + a.imag * b.real;
        return z;
    }
    #if 1
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        if (b.imag == 0) {
            return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else if (fabsf(b.real) >= fabsf(b.imag)) {
            if (b.real == 0 && b.imag == 0) {
                return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag);
            } else {
                float r = b.imag / b.real;
                float s = 1.0 / (b.real + b.imag * r);
                return __pyx_t_float_complex_from_parts(
                    (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
            }
        } else {
            float r = b.real / b.imag;
            float s = 1.0 / (b.imag + b.real * r);
            return __pyx_t_float_complex_from_parts(
                (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
        }
    }
    #else
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        if (b.imag == 0) {
            return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else {
            float denom = b.real * b.real + b.imag * b.imag;
            return __pyx_t_float_complex_from_parts(
                (a.real * b.real + a.imag * b.imag) / denom,
                (a.imag * b.real - a.real * b.imag) / denom);
        }
    }
    #endif
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) {
        __pyx_t_float_complex z;
        z.real = -a.real;
        z.imag = -a.imag;
        return z;
    }
    static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
       return (a.real == 0) && (a.imag == 0);
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) {
        __pyx_t_float_complex z;
        z.real =  a.real;
        z.imag = -a.imag;
        return z;
    }
    #if 1
        static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
            return sqrtf(z.real*z.real + z.imag*z.imag);
          #else
            return hypotf(z.real, z.imag);
          #endif
        }
        static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
            __pyx_t_float_complex z;
            float r, lnr, theta, z_r, z_theta;
            if (b.imag == 0 && b.real == (int)b.real) {
                if (b.real < 0) {
                    float denom = a.real * a.real + a.imag * a.imag;
                    a.real = a.real / denom;
                    a.imag = -a.imag / denom;
                    b.real = -b.real;
                }
                switch ((int)b.real) {
                    case 0:
                        z.real = 1;
                        z.imag = 0;
                        return z;
                    case 1:
                        return a;
                    case 2:
                        z = __Pyx_c_prod_float(a, a);
                        return __Pyx_c_prod_float(a, a);
                    case 3:
                        z = __Pyx_c_prod_float(a, a);
                        return __Pyx_c_prod_float(z, a);
                    case 4:
                        z = __Pyx_c_prod_float(a, a);
                        return __Pyx_c_prod_float(z, z);
                }
            }
            if (a.imag == 0) {
                if (a.real == 0) {
                    return a;
                } else if (b.imag == 0) {
                    z.real = powf(a.real, b.real);
                    z.imag = 0;
                    return z;
                } else if (a.real > 0) {
                    r = a.real;
                    theta = 0;
                } else {
                    r = -a.real;
                    theta = atan2f(0, -1);
                }
            } else {
                r = __Pyx_c_abs_float(a);
                theta = atan2f(a.imag, a.real);
            }
            lnr = logf(r);
            z_r = expf(lnr * b.real - theta * b.imag);
            z_theta = theta * b.real + lnr * b.imag;
            z.real = z_r * cosf(z_theta);
            z.imag = z_r * sinf(z_theta);
            return z;
        }
    #endif
#endif

/* Declarations */
              #if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
      return ::std::complex< double >(x, y);
    }
  #else
    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
      return x + y*(__pyx_t_double_complex)_Complex_I;
    }
  #endif
#else
    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
      __pyx_t_double_complex z;
      z.real = x;
      z.imag = y;
      return z;
    }
#endif

/* Arithmetic */
              #if CYTHON_CCOMPLEX
#else
    static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
       return (a.real == b.real) && (a.imag == b.imag);
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        z.real = a.real + b.real;
        z.imag = a.imag + b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        z.real = a.real - b.real;
        z.imag = a.imag - b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        z.real = a.real * b.real - a.imag * b.imag;
        z.imag = a.real * b.imag + a.imag * b.real;
        return z;
    }
    #if 1
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        if (b.imag == 0) {
            return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else if (fabs(b.real) >= fabs(b.imag)) {
            if (b.real == 0 && b.imag == 0) {
                return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
            } else {
                double r = b.imag / b.real;
                double s = 1.0 / (b.real + b.imag * r);
                return __pyx_t_double_complex_from_parts(
                    (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
            }
        } else {
            double r = b.real / b.imag;
            double s = 1.0 / (b.imag + b.real * r);
            return __pyx_t_double_complex_from_parts(
                (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
        }
    }
    #else
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        if (b.imag == 0) {
            return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else {
            double denom = b.real * b.real + b.imag * b.imag;
            return __pyx_t_double_complex_from_parts(
                (a.real * b.real + a.imag * b.imag) / denom,
                (a.imag * b.real - a.real * b.imag) / denom);
        }
    }
    #endif
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) {
        __pyx_t_double_complex z;
        z.real = -a.real;
        z.imag = -a.imag;
        return z;
    }
    static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
       return (a.real == 0) && (a.imag == 0);
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) {
        __pyx_t_double_complex z;
        z.real =  a.real;
        z.imag = -a.imag;
        return z;
    }
    #if 1
        static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
            return sqrt(z.real*z.real + z.imag*z.imag);
          #else
            return hypot(z.real, z.imag);
          #endif
        }
        static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
            __pyx_t_double_complex z;
            double r, lnr, theta, z_r, z_theta;
            if (b.imag == 0 && b.real == (int)b.real) {
                if (b.real < 0) {
                    double denom = a.real * a.real + a.imag * a.imag;
                    a.real = a.real / denom;
                    a.imag = -a.imag / denom;
                    b.real = -b.real;
                }
                switch ((int)b.real) {
                    case 0:
                        z.real = 1;
                        z.imag = 0;
                        return z;
                    case 1:
                        return a;
                    case 2:
                        z = __Pyx_c_prod_double(a, a);
                        return __Pyx_c_prod_double(a, a);
                    case 3:
                        z = __Pyx_c_prod_double(a, a);
                        return __Pyx_c_prod_double(z, a);
                    case 4:
                        z = __Pyx_c_prod_double(a, a);
                        return __Pyx_c_prod_double(z, z);
                }
            }
            if (a.imag == 0) {
                if (a.real == 0) {
                    return a;
                } else if (b.imag == 0) {
                    z.real = pow(a.real, b.real);
                    z.imag = 0;
                    return z;
                } else if (a.real > 0) {
                    r = a.real;
                    theta = 0;
                } else {
                    r = -a.real;
                    theta = atan2(0, -1);
                }
            } else {
                r = __Pyx_c_abs_double(a);
                theta = atan2(a.imag, a.real);
            }
            lnr = log(r);
            z_r = exp(lnr * b.real - theta * b.imag);
            z_theta = theta * b.real + lnr * b.imag;
            z.real = z_r * cos(z_theta);
            z.imag = z_r * sin(z_theta);
            return z;
        }
    #endif
#endif

/* CIntToPy */
              static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
    const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(enum NPY_TYPES) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(enum NPY_TYPES) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(enum NPY_TYPES),
                                     little, !is_unsigned);
    }
}

/* MemviewSliceCopyTemplate */
              static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
                                 const char *mode, int ndim,
                                 size_t sizeof_dtype, int contig_flag,
                                 int dtype_is_object)
{
    __Pyx_RefNannyDeclarations
    int i;
    __Pyx_memviewslice new_mvs = { 0, 0, { 0 }, { 0 }, { 0 } };
    struct __pyx_memoryview_obj *from_memview = from_mvs->memview;
    Py_buffer *buf = &from_memview->view;
    PyObject *shape_tuple = NULL;
    PyObject *temp_int = NULL;
    struct __pyx_array_obj *array_obj = NULL;
    struct __pyx_memoryview_obj *memview_obj = NULL;
    __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0);
    for (i = 0; i < ndim; i++) {
        if (from_mvs->suboffsets[i] >= 0) {
            PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with "
                                           "indirect dimensions (axis %d)", i);
            goto fail;
        }
    }
    shape_tuple = PyTuple_New(ndim);
    if (unlikely(!shape_tuple)) {
        goto fail;
    }
    __Pyx_GOTREF(shape_tuple);
    for(i = 0; i < ndim; i++) {
        temp_int = PyInt_FromSsize_t(from_mvs->shape[i]);
        if(unlikely(!temp_int)) {
            goto fail;
        } else {
            PyTuple_SET_ITEM(shape_tuple, i, temp_int);
            temp_int = NULL;
        }
    }
    array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, (char *) mode, NULL);
    if (unlikely(!array_obj)) {
        goto fail;
    }
    __Pyx_GOTREF(array_obj);
    memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new(
                                    (PyObject *) array_obj, contig_flag,
                                    dtype_is_object,
                                    from_mvs->memview->typeinfo);
    if (unlikely(!memview_obj))
        goto fail;
    if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0))
        goto fail;
    if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim,
                                                dtype_is_object) < 0))
        goto fail;
    goto no_fail;
fail:
    __Pyx_XDECREF(new_mvs.memview);
    new_mvs.memview = NULL;
    new_mvs.data = NULL;
no_fail:
    __Pyx_XDECREF(shape_tuple);
    __Pyx_XDECREF(temp_int);
    __Pyx_XDECREF(array_obj);
    __Pyx_RefNannyFinishContext();
    return new_mvs;
}

/* CIntFromPy */
              static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
    const int neg_one = (int) -1, const_zero = (int) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(int) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(int) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(int) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (int) -1;
        }
    } else {
        int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to int");
    return (int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to int");
    return (int) -1;
}

/* TypeInfoToFormat */
              static struct __pyx_typeinfo_string __Pyx_TypeInfoToFormat(__Pyx_TypeInfo *type) {
    struct __pyx_typeinfo_string result = { {0} };
    char *buf = (char *) result.string;
    size_t size = type->size;
    switch (type->typegroup) {
        case 'H':
            *buf = 'c';
            break;
        case 'I':
        case 'U':
            if (size == 1)
                *buf = (type->is_unsigned) ? 'B' : 'b';
            else if (size == 2)
                *buf = (type->is_unsigned) ? 'H' : 'h';
            else if (size == 4)
                *buf = (type->is_unsigned) ? 'I' : 'i';
            else if (size == 8)
                *buf = (type->is_unsigned) ? 'Q' : 'q';
            break;
        case 'P':
            *buf = 'P';
            break;
        case 'C':
         {
            __Pyx_TypeInfo complex_type = *type;
            complex_type.typegroup = 'R';
            complex_type.size /= 2;
            *buf++ = 'Z';
            *buf = __Pyx_TypeInfoToFormat(&complex_type).string[0];
            break;
         }
        case 'R':
            if (size == 4)
                *buf = 'f';
            else if (size == 8)
                *buf = 'd';
            else
                *buf = 'g';
            break;
    }
    return result;
}

/* CIntFromPy */
              static CYTHON_INLINE mjtByte __Pyx_PyInt_As_mjtByte(PyObject *x) {
    const mjtByte neg_one = (mjtByte) -1, const_zero = (mjtByte) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(mjtByte) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(mjtByte, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (mjtByte) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (mjtByte) 0;
                case  1: __PYX_VERIFY_RETURN_INT(mjtByte, digit, digits[0])
                case 2:
                    if (8 * sizeof(mjtByte) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(mjtByte, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(mjtByte) >= 2 * PyLong_SHIFT) {
                            return (mjtByte) (((((mjtByte)digits[1]) << PyLong_SHIFT) | (mjtByte)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(mjtByte) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(mjtByte, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(mjtByte) >= 3 * PyLong_SHIFT) {
                            return (mjtByte) (((((((mjtByte)digits[2]) << PyLong_SHIFT) | (mjtByte)digits[1]) << PyLong_SHIFT) | (mjtByte)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(mjtByte) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(mjtByte, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(mjtByte) >= 4 * PyLong_SHIFT) {
                            return (mjtByte) (((((((((mjtByte)digits[3]) << PyLong_SHIFT) | (mjtByte)digits[2]) << PyLong_SHIFT) | (mjtByte)digits[1]) << PyLong_SHIFT) | (mjtByte)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (mjtByte) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(mjtByte) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(mjtByte, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(mjtByte) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(mjtByte, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (mjtByte) 0;
                case -1: __PYX_VERIFY_RETURN_INT(mjtByte, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(mjtByte,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(mjtByte) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(mjtByte, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(mjtByte) - 1 > 2 * PyLong_SHIFT) {
                            return (mjtByte) (((mjtByte)-1)*(((((mjtByte)digits[1]) << PyLong_SHIFT) | (mjtByte)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(mjtByte) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(mjtByte, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(mjtByte) - 1 > 2 * PyLong_SHIFT) {
                            return (mjtByte) ((((((mjtByte)digits[1]) << PyLong_SHIFT) | (mjtByte)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(mjtByte) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(mjtByte, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(mjtByte) - 1 > 3 * PyLong_SHIFT) {
                            return (mjtByte) (((mjtByte)-1)*(((((((mjtByte)digits[2]) << PyLong_SHIFT) | (mjtByte)digits[1]) << PyLong_SHIFT) | (mjtByte)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(mjtByte) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(mjtByte, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(mjtByte) - 1 > 3 * PyLong_SHIFT) {
                            return (mjtByte) ((((((((mjtByte)digits[2]) << PyLong_SHIFT) | (mjtByte)digits[1]) << PyLong_SHIFT) | (mjtByte)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(mjtByte) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(mjtByte, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(mjtByte) - 1 > 4 * PyLong_SHIFT) {
                            return (mjtByte) (((mjtByte)-1)*(((((((((mjtByte)digits[3]) << PyLong_SHIFT) | (mjtByte)digits[2]) << PyLong_SHIFT) | (mjtByte)digits[1]) << PyLong_SHIFT) | (mjtByte)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(mjtByte) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(mjtByte, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(mjtByte) - 1 > 4 * PyLong_SHIFT) {
                            return (mjtByte) ((((((((((mjtByte)digits[3]) << PyLong_SHIFT) | (mjtByte)digits[2]) << PyLong_SHIFT) | (mjtByte)digits[1]) << PyLong_SHIFT) | (mjtByte)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(mjtByte) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(mjtByte, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(mjtByte) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(mjtByte, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            mjtByte val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (mjtByte) -1;
        }
    } else {
        mjtByte val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (mjtByte) -1;
        val = __Pyx_PyInt_As_mjtByte(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to mjtByte");
    return (mjtByte) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to mjtByte");
    return (mjtByte) -1;
}

/* CIntFromPy */
              static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(unsigned int) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (unsigned int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (unsigned int) 0;
                case  1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, digits[0])
                case 2:
                    if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT) {
                            return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT) {
                            return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT) {
                            return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (unsigned int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(unsigned int) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (unsigned int) 0;
                case -1: __PYX_VERIFY_RETURN_INT(unsigned int, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(unsigned int,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
                            return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
                            return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
                            return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
                            return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) {
                            return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) {
                            return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(unsigned int) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            unsigned int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (unsigned int) -1;
        }
    } else {
        unsigned int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (unsigned int) -1;
        val = __Pyx_PyInt_As_unsigned_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned int");
    return (unsigned int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned int");
    return (unsigned int) -1;
}

/* CIntFromPy */
              static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
    const long neg_one = (long) -1, const_zero = (long) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(long) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (long) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (long) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(long) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(long) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            long val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (long) -1;
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to long");
    return (long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to long");
    return (long) -1;
}

/* CIntFromPy */
              static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
    const char neg_one = (char) -1, const_zero = (char) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(char) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(char, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (char) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (char) 0;
                case  1: __PYX_VERIFY_RETURN_INT(char, digit, digits[0])
                case 2:
                    if (8 * sizeof(char) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) >= 2 * PyLong_SHIFT) {
                            return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(char) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) >= 3 * PyLong_SHIFT) {
                            return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(char) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) >= 4 * PyLong_SHIFT) {
                            return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (char) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(char) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(char) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (char) 0;
                case -1: __PYX_VERIFY_RETURN_INT(char, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(char,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(char) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) {
                            return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(char) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) {
                            return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) {
                            return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(char) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) {
                            return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) {
                            return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(char) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) {
                            return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(char) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(char) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            char val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (char) -1;
        }
    } else {
        char val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (char) -1;
        val = __Pyx_PyInt_As_char(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to char");
    return (char) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to char");
    return (char) -1;
}

/* CIntFromPy */
              static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
    const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(size_t) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (size_t) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (size_t) 0;
                case  1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0])
                case 2:
                    if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) {
                            return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) {
                            return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) {
                            return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (size_t) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(size_t) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (size_t) 0;
                case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(size_t,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
                            return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
                            return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
                            return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
                            return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
                            return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
                            return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(size_t) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            size_t val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (size_t) -1;
        }
    } else {
        size_t val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (size_t) -1;
        val = __Pyx_PyInt_As_size_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to size_t");
    return (size_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to size_t");
    return (size_t) -1;
}

/* FastTypeChecks */
              #if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
    while (a) {
        a = a->tp_base;
        if (a == b)
            return 1;
    }
    return b == &PyBaseObject_Type;
}
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (a == b) return 1;
    mro = a->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(a, b);
}
#if PY_MAJOR_VERSION == 2
static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
    PyObject *exception, *value, *tb;
    int res;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&exception, &value, &tb);
    res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
    if (unlikely(res == -1)) {
        PyErr_WriteUnraisable(err);
        res = 0;
    }
    if (!res) {
        res = PyObject_IsSubclass(err, exc_type2);
        if (unlikely(res == -1)) {
            PyErr_WriteUnraisable(err);
            res = 0;
        }
    }
    __Pyx_ErrRestore(exception, value, tb);
    return res;
}
#else
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
    int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
    if (!res) {
        res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
    }
    return res;
}
#endif
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
    if (likely(err == exc_type)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
    }
    return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
    if (likely(err == exc_type1 || err == exc_type2)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
    }
    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
}
#endif

/* PyObjectCallMethod1 */
              static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
    PyObject *result = NULL;
#if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(method))) {
        PyObject *self = PyMethod_GET_SELF(method);
        if (likely(self)) {
            PyObject *args;
            PyObject *function = PyMethod_GET_FUNCTION(method);
            #if CYTHON_FAST_PYCALL
            if (PyFunction_Check(function)) {
                PyObject *args[2] = {self, arg};
                result = __Pyx_PyFunction_FastCall(function, args, 2);
                goto done;
            }
            #endif
            #if CYTHON_FAST_PYCCALL
            if (__Pyx_PyFastCFunction_Check(function)) {
                PyObject *args[2] = {self, arg};
                result = __Pyx_PyCFunction_FastCall(function, args, 2);
                goto done;
            }
            #endif
            args = PyTuple_New(2);
            if (unlikely(!args)) goto done;
            Py_INCREF(self);
            PyTuple_SET_ITEM(args, 0, self);
            Py_INCREF(arg);
            PyTuple_SET_ITEM(args, 1, arg);
            Py_INCREF(function);
            result = __Pyx_PyObject_Call(function, args, NULL);
            Py_DECREF(args);
            Py_DECREF(function);
            return result;
        }
    }
#endif
    result = __Pyx_PyObject_CallOneArg(method, arg);
    goto done;
done:
    return result;
}
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
    PyObject *method, *result = NULL;
    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
    if (unlikely(!method)) goto done;
    result = __Pyx__PyObject_CallMethod1(method, arg);
done:
    Py_XDECREF(method);
    return result;
}

/* CoroutineBase */
              #include <structmember.h>
#include <frameobject.h>
#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) {
    PyObject *et, *ev, *tb;
    PyObject *value = NULL;
    __Pyx_ErrFetch(&et, &ev, &tb);
    if (!et) {
        Py_XDECREF(tb);
        Py_XDECREF(ev);
        Py_INCREF(Py_None);
        *pvalue = Py_None;
        return 0;
    }
    if (likely(et == PyExc_StopIteration)) {
        if (!ev) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#if PY_VERSION_HEX >= 0x030300A0
        else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) {
            value = ((PyStopIterationObject *)ev)->value;
            Py_INCREF(value);
            Py_DECREF(ev);
        }
#endif
        else if (unlikely(PyTuple_Check(ev))) {
            if (PyTuple_GET_SIZE(ev) >= 1) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                value = PyTuple_GET_ITEM(ev, 0);
                Py_INCREF(value);
#else
                value = PySequence_ITEM(ev, 0);
#endif
            } else {
                Py_INCREF(Py_None);
                value = Py_None;
            }
            Py_DECREF(ev);
        }
        else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
            value = ev;
        }
        if (likely(value)) {
            Py_XDECREF(tb);
            Py_DECREF(et);
            *pvalue = value;
            return 0;
        }
    } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    PyErr_NormalizeException(&et, &ev, &tb);
    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    Py_XDECREF(tb);
    Py_DECREF(et);
#if PY_VERSION_HEX >= 0x030300A0
    value = ((PyStopIterationObject *)ev)->value;
    Py_INCREF(value);
    Py_DECREF(ev);
#else
    {
        PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
        Py_DECREF(ev);
        if (likely(args)) {
            value = PySequence_GetItem(args, 0);
            Py_DECREF(args);
        }
        if (unlikely(!value)) {
            __Pyx_ErrRestore(NULL, NULL, NULL);
            Py_INCREF(Py_None);
            value = Py_None;
        }
    }
#endif
    *pvalue = value;
    return 0;
}
static CYTHON_INLINE
void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) {
    PyObject *exc_type = self->exc_type;
    PyObject *exc_value = self->exc_value;
    PyObject *exc_traceback = self->exc_traceback;
    self->exc_type = NULL;
    self->exc_value = NULL;
    self->exc_traceback = NULL;
    Py_XDECREF(exc_type);
    Py_XDECREF(exc_value);
    Py_XDECREF(exc_traceback);
}
#define __Pyx_Coroutine_AlreadyRunningError(gen)  (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) {
    const char *msg;
    if (0) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_CheckExact((PyObject*)gen)) {
        msg = "coroutine already executing";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
        msg = "async generator already executing";
    #endif
    } else {
        msg = "generator already executing";
    }
    PyErr_SetString(PyExc_ValueError, msg);
}
#define __Pyx_Coroutine_NotStartedError(gen)  (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) {
    const char *msg;
    if (0) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_CheckExact(gen)) {
        msg = "can't send non-None value to a just-started coroutine";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact(gen)) {
        msg = "can't send non-None value to a just-started async generator";
    #endif
    } else {
        msg = "can't send non-None value to a just-started generator";
    }
    PyErr_SetString(PyExc_TypeError, msg);
}
#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing)  (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) {
    #ifdef __Pyx_Coroutine_USED
    if (!closing && __Pyx_Coroutine_CheckExact(gen)) {
        PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
    } else
    #endif
    if (value) {
        #ifdef __Pyx_AsyncGen_USED
        if (__Pyx_AsyncGen_CheckExact(gen))
            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
        else
        #endif
        PyErr_SetNone(PyExc_StopIteration);
    }
}
static
PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
    __Pyx_PyThreadState_declare
    PyThreadState *tstate;
    PyObject *retval;
    assert(!self->is_running);
    if (unlikely(self->resume_label == 0)) {
        if (unlikely(value && value != Py_None)) {
            return __Pyx_Coroutine_NotStartedError((PyObject*)self);
        }
    }
    if (unlikely(self->resume_label == -1)) {
        return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
    }
#if CYTHON_FAST_THREAD_STATE
    __Pyx_PyThreadState_assign
    tstate = __pyx_tstate;
#else
    tstate = __Pyx_PyThreadState_Current;
#endif
    if (self->exc_type) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
#else
        if (self->exc_traceback) {
            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
            PyFrameObject *f = tb->tb_frame;
            Py_XINCREF(tstate->frame);
            assert(f->f_back == NULL);
            f->f_back = tstate->frame;
        }
#endif
        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
                            &self->exc_traceback);
    } else {
        __Pyx_Coroutine_ExceptionClear(self);
        __Pyx_ExceptionSave(&self->exc_type, &self->exc_value, &self->exc_traceback);
    }
    self->is_running = 1;
    retval = self->body((PyObject *) self, tstate, value);
    self->is_running = 0;
    return retval;
}
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self) {
    if (likely(self->exc_traceback)) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
#else
        PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
        PyFrameObject *f = tb->tb_frame;
        Py_CLEAR(f->f_back);
#endif
    }
}
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_MethodReturn(CYTHON_UNUSED PyObject* gen, PyObject *retval) {
    if (unlikely(!retval)) {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        if (!__Pyx_PyErr_Occurred()) {
            PyObject *exc = PyExc_StopIteration;
            #ifdef __Pyx_AsyncGen_USED
            if (__Pyx_AsyncGen_CheckExact(gen))
                exc = __Pyx_PyExc_StopAsyncIteration;
            #endif
            __Pyx_PyErr_SetNone(exc);
        }
    }
    return retval;
}
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
    PyObject *ret;
    PyObject *val = NULL;
    __Pyx_Coroutine_Undelegate(gen);
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
    ret = __Pyx_Coroutine_SendEx(gen, val, 0);
    Py_XDECREF(val);
    return ret;
}
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
    PyObject *retval;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_AsyncGen_USED
        if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
            ret = __Pyx_async_gen_asend_send(yf, value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyGen_CheckExact(yf)) {
            ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyCoro_CheckExact(yf)) {
            ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
        {
            if (value == Py_None)
                ret = Py_TYPE(yf)->tp_iternext(yf);
            else
                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
        }
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        retval = __Pyx_Coroutine_FinishDelegation(gen);
    } else {
        retval = __Pyx_Coroutine_SendEx(gen, value, 0);
    }
    return __Pyx_Coroutine_MethodReturn(self, retval);
}
static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
    PyObject *retval = NULL;
    int err = 0;
    #ifdef __Pyx_Generator_USED
    if (__Pyx_Generator_CheckExact(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    #endif
    #ifdef __Pyx_Coroutine_USED
    if (__Pyx_Coroutine_CheckExact(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    if (__Pyx_CoroutineAwait_CheckExact(yf)) {
        retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf);
        if (!retval)
            return -1;
    } else
    #endif
    #ifdef __Pyx_AsyncGen_USED
    if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
        retval = __Pyx_async_gen_asend_close(yf, NULL);
    } else
    if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
        retval = __Pyx_async_gen_athrow_close(yf, NULL);
    } else
    #endif
    {
        PyObject *meth;
        gen->is_running = 1;
        meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close);
        if (unlikely(!meth)) {
            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                PyErr_WriteUnraisable(yf);
            }
            PyErr_Clear();
        } else {
            retval = PyObject_CallFunction(meth, NULL);
            Py_DECREF(meth);
            if (!retval)
                err = -1;
        }
        gen->is_running = 0;
    }
    Py_XDECREF(retval);
    return err;
}
static PyObject *__Pyx_Generator_Next(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Generator_Next(yf);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyGen_CheckExact(yf)) {
            ret = _PyGen_Send((PyGenObject*)yf, NULL);
        } else
        #endif
            ret = Py_TYPE(yf)->tp_iternext(yf);
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        return __Pyx_Coroutine_FinishDelegation(gen);
    }
    return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
}
static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *retval, *raised_exception;
    PyObject *yf = gen->yieldfrom;
    int err = 0;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        Py_INCREF(yf);
        err = __Pyx_Coroutine_CloseIter(gen, yf);
        __Pyx_Coroutine_Undelegate(gen);
        Py_DECREF(yf);
    }
    if (err == 0)
        PyErr_SetNone(PyExc_GeneratorExit);
    retval = __Pyx_Coroutine_SendEx(gen, NULL, 1);
    if (unlikely(retval)) {
        const char *msg;
        Py_DECREF(retval);
        if ((0)) {
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_Coroutine_CheckExact(self)) {
            msg = "coroutine ignored GeneratorExit";
        #endif
        #ifdef __Pyx_AsyncGen_USED
        } else if (__Pyx_AsyncGen_CheckExact(self)) {
#if PY_VERSION_HEX < 0x03060000
            msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)";
#else
            msg = "async generator ignored GeneratorExit";
#endif
        #endif
        } else {
            msg = "generator ignored GeneratorExit";
        }
        PyErr_SetString(PyExc_RuntimeError, msg);
        return NULL;
    }
    raised_exception = PyErr_Occurred();
    if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) {
        if (raised_exception) PyErr_Clear();
        Py_INCREF(Py_None);
        return Py_None;
    }
    return NULL;
}
static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
                                        PyObject *args, int close_on_genexit) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        Py_INCREF(yf);
        if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
            int err = __Pyx_Coroutine_CloseIter(gen, yf);
            Py_DECREF(yf);
            __Pyx_Coroutine_Undelegate(gen);
            if (err < 0)
                return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
            goto throw_here;
        }
        gen->is_running = 1;
        if (0
        #ifdef __Pyx_Generator_USED
            || __Pyx_Generator_CheckExact(yf)
        #endif
        #ifdef __Pyx_Coroutine_USED
            || __Pyx_Coroutine_CheckExact(yf)
        #endif
            ) {
            ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
            ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
        #endif
        } else {
            PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw);
            if (unlikely(!meth)) {
                Py_DECREF(yf);
                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                    gen->is_running = 0;
                    return NULL;
                }
                PyErr_Clear();
                __Pyx_Coroutine_Undelegate(gen);
                gen->is_running = 0;
                goto throw_here;
            }
            if (likely(args)) {
                ret = PyObject_CallObject(meth, args);
            } else {
                ret = PyObject_CallFunctionObjArgs(meth, typ, val, tb, NULL);
            }
            Py_DECREF(meth);
        }
        gen->is_running = 0;
        Py_DECREF(yf);
        if (!ret) {
            ret = __Pyx_Coroutine_FinishDelegation(gen);
        }
        return __Pyx_Coroutine_MethodReturn(self, ret);
    }
throw_here:
    __Pyx_Raise(typ, val, tb, NULL);
    return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
}
static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
    PyObject *typ;
    PyObject *val = NULL;
    PyObject *tb = NULL;
    if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
        return NULL;
    return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
}
static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
    Py_VISIT(gen->closure);
    Py_VISIT(gen->classobj);
    Py_VISIT(gen->yieldfrom);
    Py_VISIT(gen->exc_type);
    Py_VISIT(gen->exc_value);
    Py_VISIT(gen->exc_traceback);
    return 0;
}
static int __Pyx_Coroutine_clear(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    Py_CLEAR(gen->closure);
    Py_CLEAR(gen->classobj);
    Py_CLEAR(gen->yieldfrom);
    Py_CLEAR(gen->exc_type);
    Py_CLEAR(gen->exc_value);
    Py_CLEAR(gen->exc_traceback);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
    }
#endif
    Py_CLEAR(gen->gi_name);
    Py_CLEAR(gen->gi_qualname);
    Py_CLEAR(gen->gi_modulename);
    return 0;
}
static void __Pyx_Coroutine_dealloc(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject_GC_UnTrack(gen);
    if (gen->gi_weakreflist != NULL)
        PyObject_ClearWeakRefs(self);
    if (gen->resume_label >= 0) {
        PyObject_GC_Track(self);
#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE
        if (PyObject_CallFinalizerFromDealloc(self))
#else
        Py_TYPE(gen)->tp_del(self);
        if (self->ob_refcnt > 0)
#endif
        {
            return;
        }
        PyObject_GC_UnTrack(self);
    }
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        /* We have to handle this case for asynchronous generators
           right here, because this code has to be between UNTRACK
           and GC_Del. */
        Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
    }
#endif
    __Pyx_Coroutine_clear(self);
    PyObject_GC_Del(gen);
}
static void __Pyx_Coroutine_del(PyObject *self) {
    PyObject *error_type, *error_value, *error_traceback;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    __Pyx_PyThreadState_declare
    if (gen->resume_label < 0) {
        return;
    }
#if !CYTHON_USE_TP_FINALIZE
    assert(self->ob_refcnt == 0);
    self->ob_refcnt = 1;
#endif
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
        PyObject *finalizer = agen->ag_finalizer;
        if (finalizer && !agen->ag_closed) {
            PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
            if (unlikely(!res)) {
                PyErr_WriteUnraisable(self);
            } else {
                Py_DECREF(res);
            }
            __Pyx_ErrRestore(error_type, error_value, error_traceback);
            return;
        }
    }
#endif
    if (unlikely(gen->resume_label == 0 && !error_value)) {
#ifdef __Pyx_Coroutine_USED
#ifdef __Pyx_Generator_USED
    if (!__Pyx_Generator_CheckExact(self))
#endif
        {
        PyObject_GC_UnTrack(self);
#if PY_MAJOR_VERSION >= 3  || defined(PyErr_WarnFormat)
        if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
            PyErr_WriteUnraisable(self);
#else
        {PyObject *msg;
        char *cmsg;
        #if CYTHON_COMPILING_IN_PYPY
        msg = NULL;
        cmsg = (char*) "coroutine was never awaited";
        #else
        char *cname;
        PyObject *qualname;
        qualname = gen->gi_qualname;
        cname = PyString_AS_STRING(qualname);
        msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname);
        if (unlikely(!msg)) {
            PyErr_Clear();
            cmsg = (char*) "coroutine was never awaited";
        } else {
            cmsg = PyString_AS_STRING(msg);
        }
        #endif
        if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
            PyErr_WriteUnraisable(self);
        Py_XDECREF(msg);}
#endif
        PyObject_GC_Track(self);
        }
#endif
    } else {
        PyObject *res = __Pyx_Coroutine_Close(self);
        if (unlikely(!res)) {
            if (PyErr_Occurred())
                PyErr_WriteUnraisable(self);
        } else {
            Py_DECREF(res);
        }
    }
    __Pyx_ErrRestore(error_type, error_value, error_traceback);
#if !CYTHON_USE_TP_FINALIZE
    assert(self->ob_refcnt > 0);
    if (--self->ob_refcnt == 0) {
        return;
    }
    {
        Py_ssize_t refcnt = self->ob_refcnt;
        _Py_NewReference(self);
        self->ob_refcnt = refcnt;
    }
#if CYTHON_COMPILING_IN_CPYTHON
    assert(PyType_IS_GC(self->ob_type) &&
           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
    _Py_DEC_REFTOTAL;
#endif
#ifdef COUNT_ALLOCS
    --Py_TYPE(self)->tp_frees;
    --Py_TYPE(self)->tp_allocs;
#endif
#endif
}
static PyObject *
__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self)
{
    PyObject *name = self->gi_name;
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
#else
    if (unlikely(value == NULL || !PyString_Check(value))) {
#endif
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    tmp = self->gi_name;
    Py_INCREF(value);
    self->gi_name = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self)
{
    PyObject *name = self->gi_qualname;
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
#else
    if (unlikely(value == NULL || !PyString_Check(value))) {
#endif
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    tmp = self->gi_qualname;
    Py_INCREF(value);
    self->gi_qualname = value;
    Py_XDECREF(tmp);
    return 0;
}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
            PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
    if (unlikely(!gen))
        return NULL;
    return __Pyx__Coroutine_NewInit(gen, body, closure, name, qualname, module_name);
}
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    gen->body = body;
    gen->closure = closure;
    Py_XINCREF(closure);
    gen->is_running = 0;
    gen->resume_label = 0;
    gen->classobj = NULL;
    gen->yieldfrom = NULL;
    gen->exc_type = NULL;
    gen->exc_value = NULL;
    gen->exc_traceback = NULL;
    gen->gi_weakreflist = NULL;
    Py_XINCREF(qualname);
    gen->gi_qualname = qualname;
    Py_XINCREF(name);
    gen->gi_name = name;
    Py_XINCREF(module_name);
    gen->gi_modulename = module_name;
    PyObject_GC_Track(gen);
    return gen;
}

/* PatchModuleWithCoroutine */
                  static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    int result;
    PyObject *globals, *result_obj;
    globals = PyDict_New();  if (unlikely(!globals)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_coroutine_type",
    #ifdef __Pyx_Coroutine_USED
        (PyObject*)__pyx_CoroutineType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_generator_type",
    #ifdef __Pyx_Generator_USED
        (PyObject*)__pyx_GeneratorType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
    result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
    if (unlikely(!result_obj)) goto ignore;
    Py_DECREF(result_obj);
    Py_DECREF(globals);
    return module;
ignore:
    Py_XDECREF(globals);
    PyErr_WriteUnraisable(module);
    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
        Py_DECREF(module);
        module = NULL;
    }
#else
    py_code++;
#endif
    return module;
}

/* PatchGeneratorABC */
                  #ifndef CYTHON_REGISTER_ABCS
#define CYTHON_REGISTER_ABCS 1
#endif
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
static PyObject* __Pyx_patch_abc_module(PyObject *module);
static PyObject* __Pyx_patch_abc_module(PyObject *module) {
    module = __Pyx_Coroutine_patch_module(
        module, ""
"if _cython_generator_type is not None:\n"
"    try: Generator = _module.Generator\n"
"    except AttributeError: pass\n"
"    else: Generator.register(_cython_generator_type)\n"
"if _cython_coroutine_type is not None:\n"
"    try: Coroutine = _module.Coroutine\n"
"    except AttributeError: pass\n"
"    else: Coroutine.register(_cython_coroutine_type)\n"
    );
    return module;
}
#endif
static int __Pyx_patch_abc(void) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    static int abc_patched = 0;
    if (CYTHON_REGISTER_ABCS && !abc_patched) {
        PyObject *module;
        module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections");
        if (!module) {
            PyErr_WriteUnraisable(NULL);
            if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
                    ((PY_MAJOR_VERSION >= 3) ?
                        "Cython module failed to register with collections.abc module" :
                        "Cython module failed to register with collections module"), 1) < 0)) {
                return -1;
            }
        } else {
            module = __Pyx_patch_abc_module(module);
            abc_patched = 1;
            if (unlikely(!module))
                return -1;
            Py_DECREF(module);
        }
        module = PyImport_ImportModule("backports_abc");
        if (module) {
            module = __Pyx_patch_abc_module(module);
            Py_XDECREF(module);
        }
        if (!module) {
            PyErr_Clear();
        }
    }
#else
    if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL);
#endif
    return 0;
}

/* Generator */
                  static PyMethodDef __pyx_Generator_methods[] = {
    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
     (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS,
     (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
    {0, 0, 0, 0}
};
static PyMemberDef __pyx_Generator_memberlist[] = {
    {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
    {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
    {0, 0, 0, 0, 0}
};
static PyGetSetDef __pyx_Generator_getsets[] = {
    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     (char*) PyDoc_STR("name of the generator"), 0},
    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     (char*) PyDoc_STR("qualified name of the generator"), 0},
    {0, 0, 0, 0, 0}
};
static PyTypeObject __pyx_GeneratorType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "generator",
    sizeof(__pyx_CoroutineObject),
    0,
    (destructor) __Pyx_Coroutine_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
    0,
    (traverseproc) __Pyx_Coroutine_traverse,
    0,
    0,
    offsetof(__pyx_CoroutineObject, gi_weakreflist),
    0,
    (iternextfunc) __Pyx_Generator_Next,
    __pyx_Generator_methods,
    __pyx_Generator_memberlist,
    __pyx_Generator_getsets,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if CYTHON_USE_TP_FINALIZE
    0,
#else
    __Pyx_Coroutine_del,
#endif
    0,
#if CYTHON_USE_TP_FINALIZE
    __Pyx_Coroutine_del,
#elif PY_VERSION_HEX >= 0x030400a1
    0,
#endif
};
static int __pyx_Generator_init(void) {
    __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr;
    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
    if (unlikely(!__pyx_GeneratorType)) {
        return -1;
    }
    return 0;
}

/* TypeInfoCompare */
                  static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
    int i;
    if (!a || !b)
        return 0;
    if (a == b)
        return 1;
    if (a->size != b->size || a->typegroup != b->typegroup ||
            a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) {
        if (a->typegroup == 'H' || b->typegroup == 'H') {
            return a->size == b->size;
        } else {
            return 0;
        }
    }
    if (a->ndim) {
        for (i = 0; i < a->ndim; i++)
            if (a->arraysize[i] != b->arraysize[i])
                return 0;
    }
    if (a->typegroup == 'S') {
        if (a->flags != b->flags)
            return 0;
        if (a->fields || b->fields) {
            if (!(a->fields && b->fields))
                return 0;
            for (i = 0; a->fields[i].type && b->fields[i].type; i++) {
                __Pyx_StructField *field_a = a->fields + i;
                __Pyx_StructField *field_b = b->fields + i;
                if (field_a->offset != field_b->offset ||
                    !__pyx_typeinfo_cmp(field_a->type, field_b->type))
                    return 0;
            }
            return !a->fields[i].type && !b->fields[i].type;
        }
    }
    return 1;
}

/* MemviewSliceValidateAndInit */
                  static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
    if (buf->shape[dim] <= 1)
        return 1;
    if (buf->strides) {
        if (spec & __Pyx_MEMVIEW_CONTIG) {
            if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) {
                if (buf->strides[dim] != sizeof(void *)) {
                    PyErr_Format(PyExc_ValueError,
                                 "Buffer is not indirectly contiguous "
                                 "in dimension %d.", dim);
                    goto fail;
                }
            } else if (buf->strides[dim] != buf->itemsize) {
                PyErr_SetString(PyExc_ValueError,
                                "Buffer and memoryview are not contiguous "
                                "in the same dimension.");
                goto fail;
            }
        }
        if (spec & __Pyx_MEMVIEW_FOLLOW) {
            Py_ssize_t stride = buf->strides[dim];
            if (stride < 0)
                stride = -stride;
            if (stride < buf->itemsize) {
                PyErr_SetString(PyExc_ValueError,
                                "Buffer and memoryview are not contiguous "
                                "in the same dimension.");
                goto fail;
            }
        }
    } else {
        if (spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1) {
            PyErr_Format(PyExc_ValueError,
                         "C-contiguous buffer is not contiguous in "
                         "dimension %d", dim);
            goto fail;
        } else if (spec & (__Pyx_MEMVIEW_PTR)) {
            PyErr_Format(PyExc_ValueError,
                         "C-contiguous buffer is not indirect in "
                         "dimension %d", dim);
            goto fail;
        } else if (buf->suboffsets) {
            PyErr_SetString(PyExc_ValueError,
                            "Buffer exposes suboffsets but no strides");
            goto fail;
        }
    }
    return 1;
fail:
    return 0;
}
static int
__pyx_check_suboffsets(Py_buffer *buf, int dim, CYTHON_UNUSED int ndim, int spec)
{
    if (spec & __Pyx_MEMVIEW_DIRECT) {
        if (buf->suboffsets && buf->suboffsets[dim] >= 0) {
            PyErr_Format(PyExc_ValueError,
                         "Buffer not compatible with direct access "
                         "in dimension %d.", dim);
            goto fail;
        }
    }
    if (spec & __Pyx_MEMVIEW_PTR) {
        if (!buf->suboffsets || (buf->suboffsets && buf->suboffsets[dim] < 0)) {
            PyErr_Format(PyExc_ValueError,
                         "Buffer is not indirectly accessible "
                         "in dimension %d.", dim);
            goto fail;
        }
    }
    return 1;
fail:
    return 0;
}
static int
__pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag)
{
    int i;
    if (c_or_f_flag & __Pyx_IS_F_CONTIG) {
        Py_ssize_t stride = 1;
        for (i = 0; i < ndim; i++) {
            if (stride * buf->itemsize != buf->strides[i] &&
                    buf->shape[i] > 1)
            {
                PyErr_SetString(PyExc_ValueError,
                    "Buffer not fortran contiguous.");
                goto fail;
            }
            stride = stride * buf->shape[i];
        }
    } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) {
        Py_ssize_t stride = 1;
        for (i = ndim - 1; i >- 1; i--) {
            if (stride * buf->itemsize != buf->strides[i] &&
                    buf->shape[i] > 1) {
                PyErr_SetString(PyExc_ValueError,
                    "Buffer not C contiguous.");
                goto fail;
            }
            stride = stride * buf->shape[i];
        }
    }
    return 1;
fail:
    return 0;
}
static int __Pyx_ValidateAndInit_memviewslice(
                int *axes_specs,
                int c_or_f_flag,
                int buf_flags,
                int ndim,
                __Pyx_TypeInfo *dtype,
                __Pyx_BufFmt_StackElem stack[],
                __Pyx_memviewslice *memviewslice,
                PyObject *original_obj)
{
    struct __pyx_memoryview_obj *memview, *new_memview;
    __Pyx_RefNannyDeclarations
    Py_buffer *buf;
    int i, spec = 0, retval = -1;
    __Pyx_BufFmt_Context ctx;
    int from_memoryview = __pyx_memoryview_check(original_obj);
    __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0);
    if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *)
                                                            original_obj)->typeinfo)) {
        memview = (struct __pyx_memoryview_obj *) original_obj;
        new_memview = NULL;
    } else {
        memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new(
                                            original_obj, buf_flags, 0, dtype);
        new_memview = memview;
        if (unlikely(!memview))
            goto fail;
    }
    buf = &memview->view;
    if (buf->ndim != ndim) {
        PyErr_Format(PyExc_ValueError,
                "Buffer has wrong number of dimensions (expected %d, got %d)",
                ndim, buf->ndim);
        goto fail;
    }
    if (new_memview) {
        __Pyx_BufFmt_Init(&ctx, stack, dtype);
        if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail;
    }
    if ((unsigned) buf->itemsize != dtype->size) {
        PyErr_Format(PyExc_ValueError,
                     "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) "
                     "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)",
                     buf->itemsize,
                     (buf->itemsize > 1) ? "s" : "",
                     dtype->name,
                     dtype->size,
                     (dtype->size > 1) ? "s" : "");
        goto fail;
    }
    for (i = 0; i < ndim; i++) {
        spec = axes_specs[i];
        if (!__pyx_check_strides(buf, i, ndim, spec))
            goto fail;
        if (!__pyx_check_suboffsets(buf, i, ndim, spec))
            goto fail;
    }
    if (buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag))
        goto fail;
    if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice,
                                         new_memview != NULL) == -1)) {
        goto fail;
    }
    retval = 0;
    goto no_fail;
fail:
    Py_XDECREF(new_memview);
    retval = -1;
no_fail:
    __Pyx_RefNannyFinishContext();
    return retval;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 1,
                                                 &__Pyx_TypeInfo_double, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_char(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 1,
                                                 &__Pyx_TypeInfo_char, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 1,
                                                 &__Pyx_TypeInfo_float, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_int(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 1,
                                                 &__Pyx_TypeInfo_int, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_mjtByte(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 1,
                                                 &__Pyx_TypeInfo_nn_mjtByte, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_mjtNum(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 1,
                                                 &__Pyx_TypeInfo_nn_mjtNum, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_unsigned_int(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 1,
                                                 &__Pyx_TypeInfo_unsigned_int, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_char(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 2,
                                                 &__Pyx_TypeInfo_char, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 2,
                                                 &__Pyx_TypeInfo_float, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_int(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 2,
                                                 &__Pyx_TypeInfo_int, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_mjtByte(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 2,
                                                 &__Pyx_TypeInfo_nn_mjtByte, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_mjtNum(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
                                                 PyBUF_RECORDS, 2,
                                                 &__Pyx_TypeInfo_nn_mjtNum, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
                                                 (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 1,
                                                 &__Pyx_TypeInfo_unsigned_char, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
                                                 (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 1,
                                                 &__Pyx_TypeInfo_float, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* ObjectToMemviewSlice */
                  static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_short(PyObject *obj) {
    __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
    __Pyx_BufFmt_StackElem stack[1];
    int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
    int retcode;
    if (obj == Py_None) {
        result.memview = (struct __pyx_memoryview_obj *) Py_None;
        return result;
    }
    retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
                                                 (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 1,
                                                 &__Pyx_TypeInfo_unsigned_short, stack,
                                                 &result, obj);
    if (unlikely(retcode == -1))
        goto __pyx_fail;
    return result;
__pyx_fail:
    result.memview = NULL;
    result.data = NULL;
    return result;
}

/* CheckBinaryVersion */
                  static int __Pyx_check_binary_version(void) {
    char ctversion[4], rtversion[4];
    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compiletime version %s of module '%.100s' "
                      "does not match runtime version %s",
                      ctversion, __Pyx_MODULE_NAME, rtversion);
        return PyErr_WarnEx(NULL, message, 1);
    }
    return 0;
}

/* ModuleImport */
                  #ifndef __PYX_HAVE_RT_ImportModule
#define __PYX_HAVE_RT_ImportModule
static PyObject *__Pyx_ImportModule(const char *name) {
    PyObject *py_name = 0;
    PyObject *py_module = 0;
    py_name = __Pyx_PyIdentifier_FromString(name);
    if (!py_name)
        goto bad;
    py_module = PyImport_Import(py_name);
    Py_DECREF(py_name);
    return py_module;
bad:
    Py_XDECREF(py_name);
    return 0;
}
#endif

/* TypeImport */
                  #ifndef __PYX_HAVE_RT_ImportType
#define __PYX_HAVE_RT_ImportType
static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
    size_t size, int strict)
{
    PyObject *py_module = 0;
    PyObject *result = 0;
    PyObject *py_name = 0;
    char warning[200];
    Py_ssize_t basicsize;
#ifdef Py_LIMITED_API
    PyObject *py_basicsize;
#endif
    py_module = __Pyx_ImportModule(module_name);
    if (!py_module)
        goto bad;
    py_name = __Pyx_PyIdentifier_FromString(class_name);
    if (!py_name)
        goto bad;
    result = PyObject_GetAttr(py_module, py_name);
    Py_DECREF(py_name);
    py_name = 0;
    Py_DECREF(py_module);
    py_module = 0;
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#ifndef Py_LIMITED_API
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
#else
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if (!strict && (size_t)basicsize > size) {
        PyOS_snprintf(warning, sizeof(warning),
            "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
            module_name, class_name, basicsize, size);
        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
    }
    else if ((size_t)basicsize != size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
            module_name, class_name, basicsize, size);
        goto bad;
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(py_module);
    Py_XDECREF(result);
    return NULL;
}
#endif

/* InitStrings */
                  static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else
        if (t->is_unicode | t->is_str) {
            if (t->intern) {
                *t->p = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
            } else {
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        if (PyObject_Hash(*t->p) == -1)
            PyErr_Clear();
        ++t;
    }
    return 0;
}

static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
}
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
#if !CYTHON_PEP393_ENABLED
static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    char* defenc_c;
    PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
    if (!defenc) return NULL;
    defenc_c = PyBytes_AS_STRING(defenc);
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    {
        char* end = defenc_c + PyBytes_GET_SIZE(defenc);
        char* c;
        for (c = defenc_c; c < end; c++) {
            if ((unsigned char) (*c) >= 128) {
                PyUnicode_AsASCIIString(o);
                return NULL;
            }
        }
    }
#endif
    *length = PyBytes_GET_SIZE(defenc);
    return defenc_c;
}
#else
static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    if (likely(PyUnicode_IS_ASCII(o))) {
        *length = PyUnicode_GET_LENGTH(o);
        return PyUnicode_AsUTF8(o);
    } else {
        PyUnicode_AsASCIIString(o);
        return NULL;
    }
#else
    return PyUnicode_AsUTF8AndSize(o, length);
#endif
}
#endif
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
    if (
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
            __Pyx_sys_getdefaultencoding_not_ascii &&
#endif
            PyUnicode_Check(o)) {
        return __Pyx_PyUnicode_AsStringAndSize(o, length);
    } else
#endif
#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
    if (PyByteArray_Check(o)) {
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
    } else
#endif
    {
        char* result;
        int r = PyBytes_AsStringAndSize(o, &result, length);
        if (unlikely(r < 0)) {
            return NULL;
        } else {
            return result;
        }
    }
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
    if (PyLong_Check(result)) {
        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                "__int__ returned non-int (type %.200s).  "
                "The ability to return an instance of a strict subclass of int "
                "is deprecated, and may be removed in a future version of Python.",
                Py_TYPE(result)->tp_name)) {
            Py_DECREF(result);
            return NULL;
        }
        return result;
    }
#endif
    PyErr_Format(PyExc_TypeError,
                 "__%.4s__ returned non-%.4s (type %.200s)",
                 type_name, type_name, Py_TYPE(result)->tp_name);
    Py_DECREF(result);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
#if CYTHON_USE_TYPE_SLOTS
  PyNumberMethods *m;
#endif
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_Check(x) || PyLong_Check(x)))
#else
  if (likely(PyLong_Check(x)))
#endif
    return __Pyx_NewRef(x);
#if CYTHON_USE_TYPE_SLOTS
  m = Py_TYPE(x)->tp_as_number;
  #if PY_MAJOR_VERSION < 3
  if (m && m->nb_int) {
    name = "int";
    res = m->nb_int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = m->nb_long(x);
  }
  #else
  if (likely(m && m->nb_int)) {
    name = "int";
    res = m->nb_int(x);
  }
  #endif
#else
  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
    res = PyNumber_Int(x);
  }
#endif
  if (likely(res)) {
#if PY_MAJOR_VERSION < 3
    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
#else
    if (unlikely(!PyLong_CheckExact(res))) {
#endif
        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject *x;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_CheckExact(b))) {
    if (sizeof(Py_ssize_t) >= sizeof(long))
        return PyInt_AS_LONG(b);
    else
        return PyInt_AsSsize_t(x);
  }
#endif
  if (likely(PyLong_CheckExact(b))) {
    #if CYTHON_USE_PYLONG_INTERNALS
    const digit* digits = ((PyLongObject*)b)->ob_digit;
    const Py_ssize_t size = Py_SIZE(b);
    if (likely(__Pyx_sst_abs(size) <= 1)) {
        ival = likely(size) ? digits[0] : 0;
        if (size == -1) ival = -ival;
        return ival;
    } else {
      switch (size) {
         case 2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
      }
    }
    #endif
    return PyLong_AsSsize_t(b);
  }
  x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
    return PyInt_FromSize_t(ival);
}


#endif /* Py_PYTHON_H */
